コンテンツにスキップ

subagent に仕事を分ける

tier 2(効いてくる)確認 1 か月前(2026年8月23日)

どこまで来たら使えたと言えるか

面: 両方で同じ

段達成したと言える状態
1. 触る調査を Explore に委譲させ、メイン会話に返るのが要約だけであることを /tasks と結果表示で見た
2. 入れる.claude/agents/ に自分用の subagent を 1 つ置き、@agent-<name> で確実に呼べる状態にした
3. 効かせるツールの 2 段フィルタ・permission の継承・バックグラウンド実行の挙動を踏まえて、委譲する仕事を選べる

何のためのものか

特定種類のタスクを専用のコンテキストウィンドウで処理する AI アシスタント。独自のシステムプロンプト、ツールアクセス、権限を持ち、結果の要約だけをメイン会話へ返す。

つまり subagent は「賢くする道具」である前に「メイン会話を汚さない道具」である。

触る

まず組み込みを使う。

Agentツール用途
Exploreread-only。Write と Edit は拒否ファイル探索、コード検索、コードベース調査
Planread-onlyplan mode 中の調査
General-purposesubagent が使えるすべてのツール探索と実行の両方を要する複雑・多段のタスク

大きな調査を Explore に投げ、/tasks で走っているところを見る。Explore を呼ぶとき Claude は thoroughness(quick / medium / very thorough)を指定する。

Explore と Plan は CLAUDE.md と親セッションの git status を読み込まない。 他の組み込みとカスタム subagent は両方を読み込む。

入れる

自分用の subagent を .claude/agents/ に置く。YAML frontmatter + markdown のシステムプロンプトで、必須は name と description だけ。

  • description は「どの場面で委譲すべきか」を書く。 Claude はこれで判断する
  • 絞りたいものだけ足す。tools / disallowedTools(ツール)、model(既定は inherit)、maxTurns、effort、skills(起動時に全内容を preload)
  • 確実に呼びたいときは @ から typeahead で選ぶ。 手入力なら @agent-<name>。自然言語で名前を挙げるだけだと、委譲するかは Claude の判断になる
  • セッションごと乗っ取るなら claude --agent <name>。既定のシステムプロンプトを完全に置き換える

ファイルの追加・編集は数秒以内に検出され次の委譲から反映される(agents ディレクトリを新規作成したときだけ再起動が要る)。

効かせる

思ったツールが使えない・権限が違う、はここで説明が付く。

  • ツールは 2 段で絞られる。 第 1 フィルタで AskUserQuestion / EndConversation / ExitPlanMode(permissionMode: plan を除く)などが tools に書いても外れる。第 2 フィルタはバックグラウンド実行時で、組み込みツールが Read / Grep / Glob / Bash / Edit / Write / WebFetch などに絞られる(MCP ツールは全部残る)
  • permission は親が強い。 親が bypassPermissions または acceptEdits ならそれが優先され、frontmatter の permissionMode では上書きできない。親が auto mode なら継承して permissionMode は無視される
  • 既定はバックグラウンド実行。 並行して動き、permission が必要になるとメインセッションにプロンプトが出る(Esc はその 1 回の呼び出しだけを拒否し、subagent は止まらない)
  • 続きをやらせたいなら resume。 完了時に Claude は agent ID を受け取り、SendMessage で再開できる。Explore と Plan は one-shot で agent ID を返さないため resume できない
  • 独立して作業させたいなら isolation: worktree。既定ブランチから分岐する(親の HEAD ではない)

落とし穴

  • メイン会話の auto memory と output style は subagent に届かない(fork を除く)。コンテキストウィンドウも親ではなく自身のモデルで決まる
  • ネストと同時実行に上限がある。 既定でメイン会話の 3 層下まで、同時実行は 20。超えると Concurrent subagent limit reached で失敗する
  • subagent の最終レポートはスキャンされてから Claude に渡る。 <system-reminder> を模した文字列にはバックスラッシュが挿入され、指示めいたパターンにはマーカー行が付く。内容の削除も判定もしないので、レポートを鵜呑みにする設計にしない
  • project レベルの subagent の frontmatter hooks は workspace trust の承認後にしか動かない(承認するまで subagent 自体は動く)
  • .claude/agents/ は再帰的に走査され、identity は name frontmatter だけから決まる。同じディレクトリで名前が重複すると片方しか読み込まれない(/doctor が報告する)

根拠と前後

このページが書ける範囲は、根拠にした facts に書かれていることだけです。 仕様そのものはそちらを読んでください。