Subagent - это отдельная роль, работающая в своём context window: он получает собственный system prompt, модель, инструменты и разрешения, а в основной поток возвращает результат. Это полезно для исследования, разбора логов, review и повторяющихся специализированных ролей - там, где отдельный контекст и точечный набор инструментов лучше, чем нагружать основную сессию. Встроенные Explore, Plan и general-purpose уже покрывают базовые случаи, так что своя роль нужна не всегда.
Определения субагентов лежат в файлах: project - в .claude/agents//*.md, user - в ~/.claude/agents//*.md. При совпадении имени приоритет таков: managed, затем переданные флагом --agents, затем project, user и plugin. Во вложенном проекте выигрывает ближе расположенное определение. Идентичность роли задаёт поле name во frontmatter, а не имя файла - это важно, потому что переименование файла не меняет того, как роль вызывается.
Хороший субагент описывается честным frontmatter и узкой ролью. Полезно один раз увидеть цельный пример - роль code-reviewer: с описанием, набором tools, явным disallowedTools для Write и Edit, моделью, effort, лимитом ходов и памятью, а в теле - инструкция вести себя как read-only ревьюер. Поддерживаемые поля frontmatter - name, description, tools, disallowedTools, model, permissionMode, maxTurns, skills, mcpServers, hooks, memory, background, effort, isolation, color, initialPrompt; name и description - основа discovery.
Ключевое для безопасности - как наследуются инструменты и разрешения. Субагент обычно наследует доступный пул родительской сессии, а затем tools и disallowedTools сужают его; получить инструмент, которого нет у родителя, он не может. Важнейшая тонкость: запретить только Write недостаточно, если Bash всё ещё позволяет менять файлы - read-only ревьюер должен иметь либо read-only набор, либо узкий Bash allow. Разрешения и отклонённые действия при этом возвращаются через родительский flow.
У полей роли есть ограничения, которые надо знать. permissionMode может задать режим роли, но plugin-поставляемые агенты из соображений безопасности не поддерживают permissionMode, hooks и mcpServers. isolation: worktree даёт субагенту отдельный git worktree для правок - это для независимой реализации, а не для простого чтения. Поле skills подгружает выбранные процедуры в контекст роли (это preload, а не вызов команды), а memory - user, project или local - сохраняет знания роли между сессиями и так же чувствительна, как auto memory.
Вызывают субагента явно или через автоматическую делегацию, и description должно нести и специализацию, и момент вызова. Можно попросить прямо - "используй агента code-reviewer для этого diff" - или выбрать его через @-упоминание, если интерфейс это поддерживает. Полезно помнить, что /agents в актуальных версиях больше не интерактивный мастер: он лишь напоминает попросить Claude создать файл роли или отредактировать каталог вручную. Роль - это файл, а не диалоговое окно.
Не всякую задачу стоит выносить в субагента. Он не нужен, когда результат нужен на каждом следующем шаге основного потока; когда задача - один короткий lookup; когда роли будут одновременно менять одни файлы; когда накладные расходы контекста выше экономии; когда нельзя сформулировать проверяемый output. Отдельная роль оправдана изоляцией и специализацией, а не желанием распараллелить то, что решается одним проходом.
Типичные провалы субагентов предсказуемы. Read-only ревьюер, у которого Bash всё ещё может менять файлы, - роль, называемая безопасной, но таковой не являющаяся. Дублирующиеся имена агентов, которые ловятся через /doctor. Ожидание, что plugin-агент подхватит permissionMode или hooks, которых он не поддерживает. И вынос в субагента задачи без проверяемого выхода. Описывайте роль честным frontmatter, давайте ровно нужные инструменты и выделяйте субагента под изоляцию и специализацию, а не под всё подряд.
---
name: code-reviewer
description: Reviews completed code changes for correctness, regressions,
security, and test gaps. Use after implementation, before commit.
tools: Read, Grep, Glob, Bash
disallowedTools: Write, Edit
model: sonnet
effort: high
maxTurns: 20
memory: project
background: false
---
Act as a read-only senior reviewer.
Read the diff and relevant callers. Report only actionable findings. For each
finding include severity, evidence, path, impact, and the smallest safe fix.
Do not modify files. End with verification gaps and residual risk.