本文へスキップ
Claude Codeのサブエージェント

Claude Codeのサブエージェントか並列セッションか:どちらを使うべきか

Claudeが独立したサイドタスクをヘルパーに任せ、要約だけを受け取ればよいならサブエージェントを使います。各タスクを自分で操作したい、完全なコンテキストを保ちたい、Claudeの隣で別のプロバイダーを動かしたい場合は、それぞれ専用のGitワークツリーを持つ別々のセッションを使います。それらのセッション同士がやり取りする必要があるなら、MAOが適しています。

  • サブエージェントは専用のコンテキストで動き、要約を返します
  • 並列セッションはそれぞれ専用のGitワークツリーを持ちます
  • Claude Code自体の並列機能が動かすのはClaudeだけです
著者:更新日:約14分で読めます

1つのセッションが独立したサイドタスク(検索、テストの実行、レビュー)をヘルパーに任せ、要約だけを受け取ればよい場合は、Claude Codeのサブエージェントを使います。各タスクが自分で操作するほど大きい場合、専用の完全なコンテキストが必要な場合、Codexなど別のプロバイダーで動かすべき場合は、それぞれ専用のGitワークツリーを持つ複数のセッションを並列に動かします。MAOは後者のためのものです。各セッションはキャンバス上の実際のターミナルで、それぞれのブランチで動き、ワイヤーで接続したセッション同士は互いにタスクを送れます。

Claude Codeのサブエージェントとは?

サブエージェントは、Claudeがあなたのセッションの中から起動するヘルパーです。それぞれが専用のコンテキストウィンドウで、専用のシステムプロンプト、ツールへのアクセス、権限を持って動き、そこで作業を終えるとメインの会話に要約を返します。

Claude Codeには組み込みのサブエージェントがあり、Explore(コードベースを検索するための高速な読み取り専用エージェント)、Plan(プランモード中の読み取り専用の調査)、そして探索も操作もできる汎用エージェントなどがあります。フォークではないサブエージェントはあなたの会話履歴を見られません。フォークしたサブエージェントは会話履歴を引き継ぎます。

独自のサブエージェントは、YAMLフロントマター付きのMarkdownファイルとして定義します。現在のプロジェクト用なら .claude/agents/、すべてのプロジェクト用なら ~/.claude/agents/ に置きます。必須なのは name と description だけです。ドキュメントにあるレビュアーの例のフロントマターは次のとおりです。

name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet

この4つのフィールドは .claude/agents/code-reviewer.md の先頭にある2行の --- の間に書き、その下の指示("You are a code reviewer...")がシステムプロンプトになります。Claudeは各サブエージェントの description を読んで、いつ委任するかを判断します。名前を指定して頼む("use the code-reviewer subagent on the auth changes")、@メンションする、または claude --agent code-reviewer でセッション全体をそのエージェントとして動かすこともできます。

Claude Codeのドキュメントによると、サブエージェントは次のように動きます。

  • フォアグラウンドかバックグラウンドか。 フォアグラウンドのサブエージェントは終わるまでメインの会話をブロックし、バックグラウンドのサブエージェントはあなたが作業を続ける間に動きます。何も設定していなければ、Claudeがメインの会話から起動するサブエージェントはバックグラウンドで始まります。
  • 複数を同時に。 デフォルトでは1つのセッションで最大20個のサブエージェントを同時に動かせ(CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS で上限を変更できます)、サブエージェントは自分のサブエージェントを、メインの会話から3階層下まで起動できます。
  • 分離しない限り同じチェックアウト。 サブエージェントはメインの会話の作業ディレクトリで始まります。フロントマターに isolation: worktree を書くと、代わりに一時的なGitワークツリーが割り当てられ、変更がなければ自動で削除されます。
  • 同じ利用上限。 サブエージェントのリクエストはメインの会話と同じ利用上限にカウントされます。ドキュメントは、多数のサブエージェントがそれぞれ詳しい結果を返すとコンテキストを大きく消費すると注意しています。

Claude Codeのドキュメントにある並列機能は?

Claude Codeのドキュメントには、サブエージェント以外にも作業を並列に進める方法がいくつか書かれており、どれもClaudeのセッションで構成されます。ドキュメントによると、別のツールを関わらせるには、それをMCPサーバーとしてClaudeに公開します。

機能内容ドキュメント上の状態
サブエージェント1つのセッション内で動き、要約を返すワーカー利用可能
claude --worktree <name>.claude/worktrees/<name>/ 以下の専用ワークツリーで、新しいブランチ worktree-<name> 上にセッションを起動利用可能
Agent view(claude agents)バックグラウンドセッションを割り当てて監視する1つの画面。各セッションはファイルを編集する前に専用のワークツリーへ移るリサーチプレビュー
Agent teamsリードのセッションがチームメイトを起動し、チームメイトはタスクリストを共有して直接メッセージを送り合う実験的、デフォルトで無効
セッション間メッセージClaudeがあなたの他のClaude Codeセッションを一覧にしてメッセージを送れる。メッセージはテキストだけで、履歴やファイルは含まないv2.1.224以降で利用可能(ネイティブWindowsではv2.1.234)

ドキュメントには、動的ワークフロー(多数のサブエージェントを動かすスクリプト)と、プロジェクト(claude.ai/codeまたはデスクトップアプリから始める並列のスレッド)も載っています。Agent teamsは CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 で有効にします。ドキュメントによるとチームメイトはワークツリーで分離されないため、チームメイトごとに別のファイル群を担当させるべきです。

別々の並列セッションでは何が得られる?

別々のセッションとは、タスクごとの完全な会話で、あなたが直接操作でき、専用のチェックアウトを持ち、好きなエージェントを動かせます。その代わり、セッション同士の調整はあなたかツールが担います。

  • 別々のコンテキスト。 各セッションは会話全体を保持し、誰かに渡される要約にはなりません。いつでも直接話しかけられます。やり取りを何度も重ねる長いタスクに向いており、サブエージェントのドキュメントもそうしたタスクはメインの会話で扱うべきだとしています。
  • 別々のワークツリー。 コードを編集するセッションにはそれぞれ専用のワークツリーを与え、あるセッションの作りかけの変更が別のセッションの足元に現れないようにします。Claude Codeに作らせることも、Gitをそのまま使うこともできます。
claude --worktree feature-auth      # terminal 1
claude --worktree fix-session-bug   # terminal 2

# or with git directly
git worktree add ../myapp-api -b agent/api
cd ../myapp-api && claude
  • プロバイダーの混在。 専用のターミナルなら、Claude Codeの隣でCodex、Gemini CLI、その他のCLIエージェントを動かせます。Claude Codeの組み込み機能ではこれはできません。

複数のセッションやサブエージェントを同時に動かすとトークン使用量は何倍にもなるため、ドキュメントは利用量とレート制限について料金のページを案内しています。特にAgent teamsは、チームメイトがそれぞれ別のClaudeインスタンスなので、単一のセッションよりかなり多くのトークンを使います。

サブエージェントと並列セッションの比較は?

サブエージェント並列セッション(それぞれ1つのワークツリー)
タスクの大きさ要約で終わる独立したサイドタスク何度もやり取りしながら操作するタスク
調整するのは誰かメインの会話にいるClaudeあなた、またはAgent view、セッション間メッセージ、オーケストレーションアプリ
コンテキスト専用のウィンドウ。返るのは要約だけ各セッションが会話全体を保持
ファイルの分離isolation: worktree を設定しない限りチェックアウトを共有セッションごとに1つのワークツリー
互いのやり取り呼び出し元に報告。Claudeが名前を付けたサブエージェント同士はメッセージを送り合えるClaude Codeセッション間のセッション間メッセージ
プロバイダーClaudeのみ任意のCLIエージェント、それぞれ専用のターミナルで
利用量同じ上限にカウント。Haikuなど小さいモデルで動かせる各セッションが自分のトークンを使う。同時に動かすと使用量は何倍にもなる

どちらを使うべき?

条件を満たす最も軽い方法から始め、タスクが必要とするときだけ次へ進みます。

  1. すぐ済む変更や、やり取りの多いタスク: 1つのメインの会話のままにします。
  2. コンテキストを埋め尽くしてしまうサイドタスク(大きなコードベースの検索、ログの読み込み、テストの実行):サブエージェントを使い、要約だけを残します。
  3. 同時にファイルを編集する複数の独立したClaudeのタスク: isolation: worktree を設定したサブエージェント、またはそれぞれワークツリーを持つAgent viewのバックグラウンドセッションを使います。
  4. タスクごとに自分で操作したい作業や、別のプロバイダーのレビュアー: それぞれ専用のワークツリーを持つ別々のセッションを動かします。
  5. 作業を互いに受け渡す必要があるセッション: やり取りの手段を加えます。Claude Codeセッション間のセッション間メッセージ、Agent teams、または別のプロバイダーを含むならMAOです。

MAOはどこに当てはまる?

MAOは並列セッション側のためのものです。各セッションはキャンバス上の実際のターミナルで、MAOは普通のターミナルにないブランチ、接続、通知を加えます。

  • すべてのノードはエージェント自身のCLIです。 ノードはClaude Code、Codex、Gemini CLI、Grok、OpenCode、Antigravity、またはシェルを、そのエージェント自身のログインとモデルで動かします。Claude Codeのノードは本物のCLIなので、自分のサブエージェントにも委任できます。
  • レイヤーはGitワークツリーです。 エージェントをレイヤーに置くと、専用のブランチと専用の作業ツリーで作業します。キャンバス上で差分を確認し、準備ができたらレイヤーをGroundに取り込みます。
  • ワイヤーでセッション同士がやり取りできます。 2つのエージェントを接続すると、mao コマンドで互いにタスクを送り、結果を受け取れます。ワイヤーが許可するのは、その反対側にあるノードへのアクセスだけです。
  • 共有コンテキストはノートに置きます。 ノートにワイヤーで接続したエージェントは、そのノートを読み、追記できるので、仕様は一度書けば済みます。
  • 要対応は向こうから知らせてくれます。 エージェントが完了、失敗、または承認待ちになると、そのノードに表示され、デスクトップ通知も届きます。
  • ノードごとのアカウント。 エージェントノードはそれぞれ専用のプロバイダーアカウントを使えるので、2つのClaude Codeセッションを2つのアカウントで並べて動かせます。

ワーカーは自分のターミナルから、接続したレビュアーに依頼し、進捗を記録します。

mao peers
mao ask reviewer "Review the session refresh changes on this branch"
mao note append progress "Refresh path done; reviewer is on it"

よくある質問

いいえ。各サブエージェントは専用のコンテキストウィンドウで動き、あなたの会話履歴を見ずに、要約を返します。例外はフォークしたサブエージェントで、会話を引き継ぎます。

はい、それぞれが専用のワークツリーを持っていればできます。サブエージェントのフロントマターに isolation: worktree を加えるか、エージェントにワークツリーを使うようClaudeに頼みます。そうしなければ、サブエージェントはメインの会話のチェックアウトで作業します。

サブエージェントは要約だけが返るのでメインのコンテキストを小さく保てますが、そのリクエストは同じ利用上限にカウントされます。Haikuなど小さいモデルで動かすこともできます。どちらの方法でも、複数のセッションやサブエージェントを同時に動かすとトークン使用量は何倍にもなります。

いいえ。Claude Codeのどの方法でもワーカーはClaudeのセッションで、別のツールにはMCPサーバーとしてしか接続できません。CodexやGemini CLIを独立したエージェントとして動かすには、専用のターミナルで起動するか、MAOのノードとして置いてClaude Codeのセッションとワイヤーで接続します。

サブエージェントは結果をメインの会話に報告し、作業全体はメインの会話が管理します。Agent teamsでは、リードがチームメイトを起動し、チームメイトはタスクリストを共有して直接メッセージを送り合います。この機能は実験的で、デフォルトで無効になっており、より多くのトークンを使います。

出典

確認日:2026-10-28。

ご質問は?Discordで質問するか、hello@miguer.comまでメールでお知らせください。

自分のリポジトリで試す

エージェントをひとつのキャンバスに。

キャンバスの全機能を使える7日間のトライアル。カードは不要です。