Claude Code Agent Teams(エージェントチーム)は、1つのClaude Codeセッションを「チームリード」にして、別のClaude Codeインスタンスを「チームメイト」として複数起動し、共有タスクリストとメッセージで協調させる機能です。サブエージェントも名前付きなら互いにメッセージを送れますが、チームメイトはそれぞれが独立したClaude Codeセッションで、リードを介さずに人間から直接指示を受けられ、作業の調整もチームメイト自身が行います。
2026年2月5日公開のv2.1.32でリサーチプレビューとして追加され、10月時点でも実験的機能のまま既定で無効です。ただし中身は2月から大きく変わっています。チームを作る専用ツール(TeamCreate)は6月のv2.1.178で廃止され、チームメイトの切り替えキーも変わりました。この記事は2026年10月6日時点の公式ドキュメント(Orchestrate teams of Claude Code sessions)とnpmのlatest版(2.1.289、10月3日公開)に合わせて書いています。
まとめ:Agent Teamsの要点
- 有効化は環境変数
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1。settings.jsonのenvにも書けます。 - チームは「この観点で3人起動して」と自然言語で頼むと作られます。1セッションに1チームで、チーム名はセッションIDから自動で付きます。
- 表示は既定のin-process(どのターミナルでも動く)と、tmuxかiTerm2が必要なsplit paneの2種類です。
- 料金はAgent Teams専用の課金ではなく、チームメイトごとのトークン消費がそのまま加わります。消費はほぼ人数に比例します。
- 向くのは調査・レビュー・競合仮説によるバグ調査のように、互いに待たずに進められる作業です。同じファイルを触る作業や順番に進める作業は、単一セッションかサブエージェントのほうが安く速く済みます。
Agent Teamsの構成要素とサブエージェントとの違い
チームリード・チームメイト・タスクリスト・メールボックス
チームは4つの要素で動きます。チームリードはチームメイトを起動して作業を割り振るメインのセッションで、セッションの間ずっと固定です。途中でチームメイトをリードに昇格させることはできません。
| 要素 | 役割 | 保存場所 |
|---|---|---|
| チームリード | 起動・割り振り・統合 | メインのセッション |
| チームメイト | 割り当てタスクを実行 | 独立したClaude Code |
| タスクリスト | 作業の取り合いと依存管理 | ~/.claude/tasks/{team-name}/ |
| メールボックス | エージェント間メッセージ | ~/.claude/teams/{team-name}/inboxes/ |
共有タスクリストはTaskツールが利用できるセッションで使われ、タスクは pending・in progress・completed の3状態を持ちます。依存先が未完了のタスクは取得できません。ここに注意点があります。v2.1.233(8月14日)以降、Taskツールが既定で付くのはClaude 3.x、Opus 4〜4.7、Sonnet 4〜4.6、Haiku 4.5だけになりました。Opus 4.8やSonnet 5以降の新しいモデルでは、起動前に CLAUDE_CODE_ENABLE_TODO_TOOLS=1 を設定しない限り共有タスクリストは使われず、チームメイトはメッセージだけで作業を調整します。同時に同じタスクを取りに行く競合はファイルロックで防ぎます。チーム名は session- にセッションIDの先頭8文字を付けた自動の名前で、チーム設定(config.json)はセッション終了時に消えます。タスクリストは残るため、再開したセッションでもタスクは引き継がれます。
チーム設定ファイルにはtmuxのペインIDなどの実行時状態が入るので、手で編集しても上書きされます。プロジェクトに .claude/teams/teams.json のようなファイルを置いても設定としては読まれません。役割を使い回したいときは、後述のサブエージェント定義を使います。
サブエージェント・セッション間メッセージ・worktreeとの比較
公式docsは、チームを組む前に軽い手段で足りないかを確かめるよう勧めています。並列化の手段は4つあり、違いは「誰が調整するか」と「トークン量」です。
| 手段 | 調整役 | やり取り | トークン |
|---|---|---|---|
| サブエージェント | メインのエージェント | 結果を返す・名前付きなら相互通信も可能 | 少ない |
| Agent Teams | リード+チームメイト自身 | チームメイト同士で直接 | 多い |
| セッション間メッセージ | 人間 | 自分のセッション同士 | セッション数次第 |
| git worktree | 人間 | なし(手動) | セッション数次第 |
判断の分かれ目は、作業者同士が途中で発見を共有したり、互いの結論に反論したりする必要があるかどうかです。結果だけ受け取れれば済む調べものや単発の修正はClaude Codeのサブエージェントで足ります。人が手で複数セッションを並べる方法はClaude Codeのgit worktreeでの並列開発、自分のセッション同士で発見を渡す仕組み(v2.1.224以降)はclaude-peers-mcpと公式セッション間メッセージの違いで扱っています。
Agent Teamsの有効化と最初のチームの起動手順
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMSの設定
シェルで export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 とするか、settings.jsonの env に書きます。プロジェクト単位で有効にするなら .claude/settings.json、自分の全プロジェクトなら ~/.claude/settings.json です。
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}
チームメイトを起動できるのは対話セッションだけです。-p フラグの非対話モードやAgent SDKでは、変数を有効にしてもチームメイトは作られず、通常のサブエージェントとして動きます。CIのジョブにAgent Teamsを組み込む設計は、現行仕様では成り立ちません。
自然言語でチームを作る指示の書き方
有効化した後は、作業内容と欲しいチームメイトを文章で伝えます。公式docsの例は、3人が互いを待たずに別の角度から調べられる構成になっています。
I'm designing a CLI tool that helps developers track TODO comments across
their codebase. Spawn three teammates to explore this from different angles:
one on UX, one on technical architecture, one playing devil's advocate.
日本語で「PR #142 をセキュリティ・性能・テストカバレッジの3観点でレビューするチームメイトを3人起動して、それぞれの指摘をまとめて」のように書いても同じです。チームメイトはCLAUDE.md・MCPサーバー・スキルを読み込みますが、リードの会話履歴は引き継ぎません。対象ディレクトリ、使っている認証方式、報告の形式など、作業に必要な前提は起動の指示に書き込みます。
Claudeはチームを組まずにサブエージェントで済ませることがあります。サブエージェントもチームメイトと同じエージェントパネルに表示されるため、パネルに並んだだけではチームができた証拠になりません。チームが欲しい場合は「agent team として」と明示して頼み直します。
名前付きサブエージェントのチームメイト化と例外
見落としやすいのがこの挙動です。変数を有効にしている間、Claudeが名前(name)を付けて起動したサブエージェントは、forkによる起動やAgentツールの呼び出し自体にisolationを指定した場合を除き、チームメイトとして立ち上がります。Claudeは後でメッセージを送るために自分からサブエージェントに名前を付けることがあるので、チームを頼んでいない作業でもチームができ、トークンが増えます。起動時の確認もありません。
普段はサブエージェントだけを使いたいなら、変数を 0 にします。settings.jsonの env は保存した時点で実行中のセッションにも反映されるため、再起動は不要です。ただしプロジェクト設定・ローカル設定・管理設定のほうが優先度が高く、そこで 1 になっていればそちらが勝ちます。
表示モードの選び方(in-processとsplit pane・tmux・iTerm2)
表示モードは teammateMode で決めます。既定は "in-process" で、追加の準備なしにどのターミナルでも動きます。
| teammateMode | 動作 |
|---|---|
| “in-process”(既定) | メインのターミナル内で全員が動く |
| “auto” | tmux内かit2入りiTerm2ならsplit pane |
| “tmux” | tmuxかiTerm2を検出してsplit pane |
| “iterm2” | it2 CLIでiTerm2のネイティブ分割 |
in-processでは、プロンプト入力欄の下のエージェントパネルで操作します。上下の矢印キーでチームメイトを選び、Enterでその会話を開いて直接メッセージを送れます。選択中に x で停止、Ctrl+Tでタスクリストの表示を切り替えます。2月の解説にあるShift+Up/Downでの切り替えは、2月18日のv2.1.47でShift+Downだけに簡略化され、現行docsでは矢印キーとEnterの操作になっています。
チームメイトを開いている間も、/compact・/clear・/rewind はリードの会話に作用します(v2.1.286以降は実行前に確認が出ます)。/model と /fast もリードの設定を変えるため、この画面からは実行されません。チームメイトのモデルは起動した時点で固定です。
全員の出力を同時に見たいときはsplit paneにします。セッション単位なら claude --teammate-mode auto と起動します。このフラグは実験扱いで、v2.1.289の claude --help には表示されません。tmuxはOSのパッケージマネージャーで入れ、操作の基本はtmuxの使い方を参照してください。iTerm2では it2 CLI を入れたうえで、Settings → General → Magic の「Enable Python API」を有効にします。iTerm2自体の設定はiTerm2とは?Macのおすすめターミナルにまとめています。
split paneはVS Codeの統合ターミナル、Windows Terminal、Ghosttyでは使えません。Windowsで使う場合はin-processが前提です。
チームメイトのモデル・権限・計画承認の決まり方
モデルの解決順(v2.1.251以降)
チームメイトのモデルは、次のうち最初に当てはまるもので決まります。
- 起動の指示でそのチームメイトに指定したモデル
- サブエージェント定義から起動した場合は、その定義の
model(inheritならリードのモデル) CLAUDE_CODE_SUBAGENT_MODEL(inherit以外の値のとき)- リードの現在のモデル
v2.1.251より前は環境変数が最優先でした。全員を1つのモデルに固定したい場合は CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1(v2.1.257以降)を使います。2月時点にあった既定モデルの設定(teammateDefaultModel)はv2.1.234で削除され、残っていても無視されます。組織で availableModels の許可リストを設定している場合、許可されていないモデルの代替は、指定値と接続先によって異なります。ファミリー別名の置換に対応する接続先では同じファミリーの許可済み最新版を使い、それ以外では設定済みの CLAUDE_CODE_SUBAGENT_MODEL を同じ許可条件で試してから、リードのモデルへ戻ります。
権限モードの継承と承認プロンプト
チームメイトはリードの権限モードを引き継ぎます。例外は dontAsk で、これは継承されません。リードを --dangerously-skip-permissions で起動すると全員がそのモードで動くため、隔離していない環境では避けてください。起動後に個別のモードへ変えることはできますが、起動時にチームメイトごとのモードを指定する方法はありません。モードの違いはClaude Codeのパーミッションモードの違いと設定方法で整理しています。
チームメイトの承認プロンプトはすべてリードのセッションに上がってきます。人数が増えると承認待ちで止まりやすいので、よく使うコマンドは起動前に許可ルールへ入れておきます。チームメイト間のメッセージは「別のClaudeセッションからの発言」として扱われ、あるチームメイトが他のチームメイトの代わりに承認することはできません。
チームメイトの計画の自動承認と人による実行承認
リードをplanモードにしてからチームメイトを起動すると、そのチームメイトは計画ができるまで読み取り専用で動きます。2月時点の解説では「リードが計画を審査する」と書かれがちですが、現行docsでは、計画の承認要求が届いた時点でリードのセッションが審査なしに承認すると明記されています。計画段階を挟んでも、計画の中身を人が見るわけではありません。編集やコマンド実行には通常の承認プロンプトが残るので、人のチェックはそちらで行います。
Hooksによる品質ゲート(TeammateIdle・TaskCreated・TaskCompleted)
チーム向けのフックは3つあります。どれもマッチャーに対応せず、イベントのたびに必ず実行されます。TaskCreatedとTaskCompletedはTaskツールが動いているセッションでしか発火しないため、Opus 4.8以降のモデルでは前述の CLAUDE_CODE_ENABLE_TODO_TOOLS=1 が前提です。仕様の詳細は公式のHooksリファレンスにあります。
| イベント | 発火タイミング | exit 2の効果 | 追加版 |
|---|---|---|---|
| TeammateIdle | チームメイトがアイドルになる直前 | フィードバックを渡して作業を続けさせる | v2.1.33 |
| TaskCreated | TaskCreateでタスク作成時 | 作成を取り消す | v2.1.84 |
| TaskCompleted | タスクを完了にする時 | 完了にさせない | v2.1.33 |
bash・jq・npmが利用でき、フックの作業ディレクトリにtestスクリプトを定義したpackage.jsonがある環境で、テストが通るまでタスクを完了にさせない例です。stderrに書いた文がそのままチームメイトへのフィードバックになります。入力JSONの teammate_name はリード自身が完了にした場合などに欠けることがあるため、既定値を置いています。
#!/bin/bash
# .claude/hooks/task-completed.sh
INPUT=$(cat)
SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')
WHO=$(echo "$INPUT" | jq -r '.teammate_name // "lead"')
TEST_LOG=$(mktemp) || exit 2
trap 'rm -f "$TEST_LOG"' EXIT
if ! npm test --silent > "$TEST_LOG" 2>&1; then
echo "[$WHO] テストが通っていません。直してから「$SUBJECT」を完了にしてください。" >&2
tail -n 20 "$TEST_LOG" >&2
exit 2
fi
exit 0
このスクリプトは、テストが失敗する package.json に入力JSONを流すと終了コード2とメッセージを返し、成功させると0を返すことをbashとjq 1.7.1で確認しています。登録はsettings.jsonに書きます。
{
"hooks": {
"TaskCompleted": [
{
"hooks": [
{ "type": "command", "command": "bash \"${CLAUDE_PROJECT_DIR}/.claude/hooks/task-completed.sh\"" }
]
}
]
}
}
TaskCompletedとTeammateIdleは、終了コードの代わりに {"continue": false, "stopReason": "..."} を返すとチームメイト自体を止められます。ただしTaskCompletedでは、チームメイトのターン終了によって発火した場合に限ります。TaskUpdateによる発火では continue: false は無視され、完了を阻止するには終了コード2を返します。TaskCreatedは continue: false を無視します。TeammateIdleでexit 2を返し続けると、チームメイトがアイドルにならずトークンを使い続ける点に注意してください。判定条件は「成果物ファイルがあるか」のように、いずれ必ず満たせるものにします。フック全般の書き方はClaude Code Hooksの設定方法で扱っています。
Agent Teamsの料金とトークン消費の目安
Agent Teamsに専用の料金はありません。チームメイトはそれぞれ独立したClaude Codeインスタンスとして自分のコンテキストウィンドウを持つため、その分のトークンが、使っているプランの利用枠かAPIの従量課金からそのまま消費されます。公式のコスト解説は、消費は動いているチームメイトの数と各自の稼働時間に比例し、おおむねチームの人数に比例すると説明しています。
比較の基準として、公式のコスト解説が示すClaude Code全体の企業平均は、開発者1人あたり稼働日1日約13ドル、月150〜250ドルです。チームメイトを3人足せば、その時間帯の消費はリード1人の数倍になると見積もっておくのが安全です。プランごとの上限や損益分岐はClaude Codeの料金プラン比較を参照してください。
公式docsが挙げる抑え方は次のとおりです。
- チームメイトにはSonnetを指定する(起動の指示に「Use Sonnet for each teammate」と書く)
- 人数を絞る。docsの目安は多くの作業で3〜5人、独立タスクが15個あっても3人から始める
- 起動の指示を必要な前提だけに絞る(指示文はそのまま全員のコンテキストに載る)
- 作業が終わったチームメイトは「researcher に終了するよう伝えて」と名前で止める
見落としやすいのがキャッシュです。in-processのチームメイトのリクエストはメイン会話のキャッシュ期間の対象外で、サブスクリプションでも既定5分で切れます。休憩を挟む長い作業では、subagentPromptCacheTtl を "1h" にすると再読み込みが減ります。ただしAPI課金では1時間キャッシュの書き込み単価が高くなります。
2026年2月の解説から変わったAgent Teamsの仕様
国内の解説記事の多くは2月の公開直後に書かれています。次の変更を知らずに手順をなぞると、存在しないツールやキーを探すことになります。版と日付は公式CHANGELOGとnpmレジストリの公開日時で確認しました。
| 版(公開日) | 変更 |
|---|---|
| 2.1.32(2/5) | リサーチプレビューとして追加 |
| 2.1.33(2/6) | TeammateIdle・TaskCompletedフック追加 |
| 2.1.47(2/18) | 切り替えがShift+Downのみに |
| 2.1.84(3/25) | TaskCreatedフック追加 |
| 2.1.178(6/15) | TeamCreate・TeamDelete廃止、1セッション1チームに |
| 2.1.186(6/22) | teammateMode “iterm2” 追加 |
| 2.1.233(8/14) | Opus 4.8以降でTaskツールが既定で外れる |
| 2.1.234(8/17) | 既定チームメイトモデルの設定を削除 |
| 2.1.251(8/28) | モデル解決順を変更、最終回答がアイドル通知に載る |
| 2.1.281(9/23) | –setting-sourcesをチームメイトにも適用 |
版の変更以外にも、現行docsの記述が2月時点と違う点が3つあります。全員に一斉送信する説明は消え、「全員に届けるには1人ずつ送る」と書かれています。Shift+Tabで切り替えるデリゲートモードは現行docsに記載がありません。チーム名は自分で付けるものではなく、session- で始まる自動の名前です。フックの入力にある team_name も非推奨になっています。
Claude Code本体の版の確認とアップデートはClaude Codeの最新バージョンは2.1系を参照してください。Agent Teamsは版ごとの修正が多い機能なので、挙動が記事と違うときはまず版を上げてから確かめます。
Cコンパイラ事例とAgent Teams機能の関係
Agent Teamsの紹介では、AnthropicのNicholas Carlini氏が2026年2月5日に公開したBuilding a C compiler with a team of parallel Claudesがよく引かれます。16エージェントがおよそ2,000セッション・2週間で、Linux 6.9をx86・ARM・RISC-Vでビルドできる10万行のRust製Cコンパイラを書いた事例で、入力トークンは20億、費用は2万ドル弱でした。GCC torture test suiteを含む主なテストスイートの通過率は99%です。
ただし、この実験はClaude CodeのAgent Teams機能そのものを使ったものではありません。記事に書かれた実装は、エージェントごとにDockerコンテナを立て、claude --dangerously-skip-permissions -p を無限ループで回し、共有のbareリポジトリへpushさせる自作のハーネスです。タスクの取り合いは current_tasks/ にテキストファイルを書いてロックし、衝突はgitの同期で検出していました。前述のとおり、Agent Teams機能は -p の非対話モードではチームメイトを起動しません。
この事例から持ち帰れるのは機能の使い方ではなく、並列化の条件です。Linuxカーネルのビルドという1つの巨大なタスクでは、16エージェントが同じバグに取り組んで互いの変更を上書きし、並列化が効きませんでした。GCCを正解として使い、カーネルの大半のファイルをGCCで、残りだけを自作コンパイラでビルドする方式に変えて、ようやく各エージェントが別々のバグを担当できるようになっています。Agent Teamsでも同じで、作業を互いに独立した単位に割れない限り、人数を増やしても速くなりません。16bit x86のコード生成を最後まで実装できなかった点など、記事には限界も具体的に書かれています。
Agent Teamsが向かない作業と現行の制限
採用を見送るべきなのは、次の条件に当てはまる作業です。
- 同じファイルを複数人が編集する:上書き事故が起きます。docsはチームメイトごとに担当ファイルを分けるよう求めています。
- 前の結果を待たないと進めない順次作業:調整コストだけが増えます。
- 定型の小さな修正:単一セッションのほうが安く済みます。
- 放置して回したい長時間作業:チームメイトはエラーで止まることがあり、リードも全タスクの完了前に「終わった」と判断することがあります。
現行の制限は次のとおりです。
| 制限 | 回避策 |
|---|---|
| /resume・/rewindでin-processチームメイトが戻らない | 新しく起動し直させる |
| タスクの状態更新が遅れることがある | 手動で更新するかリードに催促させる |
| 入れ子のチームは作れない | チームの管理はリードだけ |
| in-processチームメイトのサブエージェントは前景実行のみ | background: true の定義を使わない |
| 終了に時間がかかる | 実行中の処理が終わるまで待つ |
split paneで使った後にtmuxのセッションが残った場合は、tmux ls で一覧を出し、チームが作ったセッションを tmux kill-session -t <セッション名> で終了します。初めて導入するなら、コードを書かせる前にPRレビューやライブラリ調査のような読み取り中心の作業から始めると、並列化の効果と調整の手間を切り分けて確かめられます。複数エージェントを協調させる設計パターンの全体像はAnthropic公式マルチエージェント協調5パターンの選び方で比較しています。
よくある質問
Agent TeamsはWindowsで使えますか?
既定のin-processモードはどのターミナルでも動きます。split paneはtmuxかiTerm2が必要で、Windows TerminalとVS Codeの統合ターミナルには対応していません。
チームメイトは何人まで起動できますか?
公式docsには、起動人数の上限値は明記されていません。ただし人数に比例してトークンが増え、調整の手間も増えるため、docsは多くの作業で3〜5人から始め、1人あたり5〜6個のタスクを持たせる構成を勧めています。
claude -p やAgent SDKからAgent Teamsを使えますか?
使えません。非対話モードとAgent SDKのセッションでは、変数を有効にしてもチームメイトは起動せず、名前付きのサブエージェントも通常のサブエージェントとして動きます。
サブエージェント定義をチームメイトに使い回せますか?
使えます。「security-reviewer エージェントタイプでチームメイトを起動して」のように定義名を指定すると、tools と model が適用されます。定義の skills はどちらの表示モードでも適用されず、mcpServers はsplit paneのチームメイトにだけ効きます。
リードがチームメイトを待たずに自分で実装を始めたらどうしますか?
公式docsの対処は「Wait for your teammates to complete their tasks before proceeding」とリードに伝えることです。逆にリードが早く切り上げた場合は、続けるよう指示します。