niki-til

Claude Code の Spawn(並列 subagent 起動)は本当に並列で効くのか

「Spawn」という言い方で雑に呼ばれているもの、つまり Claude Code の Agent ツールを 1 つのアシスタントメッセージ内で複数同時に呼ぶことについて、2026-05 時点の公式ドキュメントを読み直して整理した。

"Spawn" の正体

Claude Code には Agent ツール(旧称 Task、v2.1.63 で改名された)があり、これを介して subagent を起動する。subagent は親会話とは別の独立した会話インスタンスで、独自の context window・system prompt・tool 権限・モデル選択を持つ。

組み込み subagent として以下が用意されている(Create custom subagents):

カスタム subagent は .claude/agents/ または ~/.claude/agents/ に YAML front matter 付き Markdown で定義する。SDK では agents パラメータで programmatic に渡せる(Subagents in the SDK)。

呼び方は 2 通り: 親 Claude が description を見て自動 delegate するか、ユーザーが「Use the X agent to ...」と明示する。

並列で動くのか

動く。ただし条件がある。

公式 SDK ドキュメントは "Multiple subagents can run concurrently, dramatically speeding up complex workflows" と明記している(Subagents in the SDK – Parallelization)。1 つのアシスタントメッセージの中で Agent ツール呼び出しを複数並べると、ハーネスがそれらを同時に走らせて結果を集める。

ここを誤解しやすい: tool-result ループの毎ターンで Agent を 1 回ずつ呼んでも、それはターン直列であって並列ではない。並列になるのは 同一のアシスタント返答 に並んでいる Agent 呼び出しだけ。

なお subagent は更に subagent を spawn できない(無限ネスト防止)。Plan のドキュメントが明示している。

並列が効く場面

Anthropic の multi-agent research の事例では並列化によって調査時間が最大 90% 削減されたと報告されている(Multi-agent research system)。

並列が無駄になる / バグを呼ぶ場面

公式は明確に書いている: "The only channel from parent to subagent is the Agent tool's prompt string"(What subagents inherit)。

コストと制限

各 subagent は独立した会話なので、独自の context window と独自のトークン課金が発生する。並列 = ウォールクロックはほぼ同じ、合計トークンは N 倍

Anthropic 自身の数値: chat に比べて agent は約 4×、multi-agent システムは約 15× のトークンを使う(Multi-agent research system)。これに見合うだけのタスク価値があるかが判断軸。

並列起動の明示的な同時数上限が Anthropic のドキュメントに数値で書かれているのは確認できなかった。実利用上はサブスクの rate limit と各 subagent の context 窓に縛られる、と理解しておくのが安全。

Windows では subagent prompt がコマンドライン長制限(8191 文字)に当たって失敗することがある旨が SDK ドキュメントの Troubleshooting に書かれている。

実用パターン

結論

並列 subagent は「作業が本当に独立しているとき」に効く。効くのはウォールクロック時間であって、総計算量ではない。

「並列の方が速そうだから」で投げると、3 倍のトークンを払って 3 つの似た探索結果が返ってくるだけになる。判断基準は単純に sub-task が互いに独立か。独立なら並列、依存があるなら順次、軽い作業なら subagent を使わず親で直接やる、で十分。

参考・引用元

2026-05-18