teammateModeでAgent Teamsの表示方法を切り替える
Agent Teamsのteammateをin-process表示にするかsplit paneにするか。teammateModeの4値の違いと、tmux/iTerm2が必要になる条件を解説します。
このTipsでできること
teammateModeは、Agent Teamsでリードが立てたteammateの表示先を切り替えるsettings.jsonのキーです。メインのターミナル内に留めるか、teammateごとに別ペインへ分けるかを選びます。in-process・auto・tmux・iterm2の4値があり、既定値はin-processです。
teammateが立たない・勝手に立つときの前提
teammateModeは表示方法を切り替えるだけで、Agent Teams機能そのものを有効にするキーではありません。Agent Teamsは既定で無効で、settings.jsonか環境変数でCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1を設定して初めて動きます。
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}この変数が無いセッションでは、teammateModeを設定してもteammateは1つも立ちません。逆に有効にすると、Claudeが名前を付けて呼んだサブエージェントはteammateとして起動します。チームを頼んでいない委任でも、teammateが立つことがあります。
サブエージェントとして動かしたいだけなら、同じ変数を0にします。非対話モード(-p)やAgent SDKのセッションではteammateは立たず、名前付きのサブエージェントも通常のサブエージェントとして走ります。
Agent Teamsにはセッション再開・タスク調整・シャットダウンまわりの既知の制限があります。/resumeと/rewindはin-processのteammateを復元しないので、再開後はリードに新しいteammateを立て直させます。
4つの値と、操作の違い
| 値 | 挙動 | 前提環境 |
|---|---|---|
in-process | 挙動全teammateをメインターミナル内に表示。既定値 | 前提環境どの端末でも動く |
auto | 挙動tmux内で実行中、またはiTerm2ならsplit pane。それ以外はin-process | 前提環境tmux、またはiTerm2 |
tmux | 挙動split pane表示。ターミナルからtmuxかiTerm2かを自動判定 | 前提環境tmuxまたはiTerm2+it2 |
iterm2 | 挙動iTerm2ネイティブのsplit paneを明示指定(2.1.186以降) | 前提環境iTerm2+it2 CLI必須 |
autoの条件は、公式ページ同士で書き方が違います。Agent Teamsのページは「iTerm2でit2 CLIが入っているとき」、settingsリファレンスは「iTerm2でit2がPATHにあるか、tmuxが入っているとき」です。iTerm2でtmuxだけを入れている環境では、2つの記述が分かれます。迷う環境では、挙動が明確なtmuxかiterm2を指定する選択肢があります。
セッション単位で1回だけ変えたいときは--teammate-modeで上書きできます。
claude --teammate-mode autoこのフラグは実験的な扱いで、claude --helpの出力には載りません。v2.1.287でもteammateを含む行はありません。一方でCLIリファレンスにはin-process(既定)・auto・tmux・iterm2の4値を取るフラグとして載っています。
in-processとsplit paneの操作
in-process
プロンプト入力欄の下のエージェントパネルで、上下矢印キーでteammateを選び、Enterでそのteammateの画面を開いてメッセージを送ります。選択中のteammateはxで停止でき、Ctrl+Tでタスクリストの表示を切り替えます。teammateの画面を開いている間のEscapeは、そのteammateの実行中のターンを中断します。
split pane
teammateごとに別ペインが開き、全員の出力が同時に見えます。ペインを直接クリックすれば、そのteammateとやり取りできます。
in-processのteammateを開いている間は、/modelと/fastが実行されません。この2つはリードの設定を変えるコマンドで、teammate自身には効かないためです。/compact・/clear・/rewindはリードの会話に作用するので、実行前に確認が入ります。
split paneにならないときの切り分け
"auto"や"tmux"を設定したのにin-processのままなら、次の順に見ていきます。
split paneにならないとき
- 1
tmuxの中でClaude Codeを起動しているか
autoは、tmuxの中で動いているときにsplit paneを使います。tmuxの外で起動していて、iTerm2でもなければ、in-processへ戻ります。 - 2
tmuxがPATHにあるか
which tmux出力が空なら、OSのパッケージマネージャーでtmuxを入れます。
- 3
iTerm2なら it2 CLI と Python API
it2CLIを入れ、iTerm2のSettings → General → Magic → Enable Python APIを有効にします。iTerm2からtmuxに入るときはtmux -CCが推奨の入口です。 - 4
iterm2を明示指定してエラーで確かめる
"iterm2"にすると、it2が無いときにインストールコマンド付きのエラーが出ます。autoも、2.1.186以降はit2が見つからないと警告を出します。iTerm2でtmuxも使える環境では、autoとtmuxでit2の導入かtmuxへの切り替えを促す画面が出ます。
そもそもsplit paneに対応していない端末もあります。VS Codeの統合ターミナル、Windows Terminal、Ghosttyでは使えません。Zellijも前提の端末に含まれていません。tmuxは一部のOSで既知の制限があり、従来はmacOSで最も安定して動くとされています。
tmuxセッションがClaude Codeの終了後も残ることがあります。tmux lsで一覧を出し、チームが作ったセッションをtmux kill-session -t <セッション名>で終了します。
バージョンごとの違い
| バージョン | 変更点 |
|---|---|
| 2.1.178 | 変更点TeamCreateとTeamDeleteツールが削除。環境変数を有効にすると、セッションごとに暗黙のチームが1つ作られ、Agentツールのnameパラメーターでteammateを直接立てる |
| 2.1.186 | 変更点teammateMode: "iterm2"を追加。split pane表示でもリードのエフォートレベルがteammateに伝わる |
| 2.1.199 | 変更点他のteammateやサブエージェントが作業中の間、アイドルのteammateの行がパネルに残る |
| 2.1.234 | 変更点設定画面の「Default teammate model」とteammateDefaultModelが削除。残った値は無視される |
エージェントパネルのアイドル行は、バージョンで消え方が違います。2.1.199以降は、パネル内の全員がアイドルになってから30秒後に行が隠れ、次のターンで戻ります。隠れてもteammateは動作・応答できます。2.1.181〜2.1.198は、他のteammateが作業中でも、自分のターンが終わって30秒で個別に消えました。2.1.181より前は隠れません。
行が消えたteammateには、名前を指定してメッセージを送ると行が戻ります。アイドルのteammateが4人以上になると、4人目以降は「2 idle agents」のような1行に畳まれ、選択してEnterで展開できます。
teammateのモデルの決まり方
モデルはteammateごとに、次の順で最初に当てはまるものが採用されます。
- 立てるときのプロンプトでそのteammateに指定したモデル
- サブエージェント定義から立てた場合は、定義の
model(inheritならリードのモデル) inherit以外に設定されたCLAUDE_CODE_SUBAGENT_MODEL- リードの現在のモデル
2.1.251より前は、CLAUDE_CODE_SUBAGENT_MODELが最優先でした。CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1(2.1.257以降)を設定すると、1と2は効かなくなります。
Spawn 4 teammates to refactor these modules in parallel. Use Sonnet for
each teammate.立てたあとのモデルは固定です。リードが/modelで切り替えても、動いているteammateには届きません。エフォートレベルは別で、teammateはリードの設定に追従します。
選んだモデルは組織のavailableModels許可リストと照合されます。ブロックされると、opusのようなファミリーエイリアスはAnthropic APIとClaude Platform on AWSで許可リスト内の最新版に差し替わります。それ以外はリードのモデルへ戻ります。許可リストの設計はClaude Code組織管理ガイドにあります。
表示方法で変わるキャッシュと定義の扱い
in-processのteammateのリクエストは、メイン会話のキャッシュTTLの区分に入りません。キャッシュの保持は既定で5分で、Claudeのサブスクリプションでも同じです。1時間に延ばすには、subagentPromptCacheTtlを1hにします。1時間のキャッシュ書き込みは、APIで高い料率で課金されます。
サブエージェント定義から立てたteammateでは、表示方法で定義の使われ方が変わります。in-processでは、定義の本文が既定のシステムプロンプトに追記されます。split paneでは、本文が既定のシステムプロンプトの代わりに使われます。
定義のmcpServersは、split paneのteammateにだけ適用されます。in-processのteammateはこのフィールドを無視します。skillsはどちらの表示方法でも適用されません。
リードを--setting-sourcesで起動すると、teammateも同じ制限つきの設定ソースから読み込みます。v2.1.281より前は、split paneのteammateがすべての設定ソースを読み込んでいました。
実装前の計画を作らせる
複雑な変更では、teammateに先に計画を作らせられます。リードをplanモードにしてからteammateを頼むと、そのteammateは計画ができるまで読み取り専用のplanモードで動きます。
Spawn an architect teammate to refactor the authentication module.計画ができるとリードに承認依頼が届き、Claude Codeがリードのセッション内で即座に承認します。リード(Claude)が計画の中身を読んで却下する仕組みではありません。承認後にteammateはplanモードを抜けて実装に入りますが、編集やコマンドは通常どおり許可プロンプトを通ります。teammateの許可プロンプトはリードのセッションに出るので、そこで自分で答えます。
Agent Teamsとサブエージェントの違い
どちらも作業を並列化しますが、ワーカー同士のやり取りと調整の持ち方が違います。
| 観点 | サブエージェント | Agent Teams |
|---|---|---|
| コンテキスト | サブエージェント独立。結果は呼び出し元に返る | Agent Teams独立。完全に自律 |
| 連絡 | サブエージェント結果を返す。名前付きで起動したものは相互にメッセージも送れる | Agent Teamsteammate同士が直接メッセージを送る |
| 調整 | サブエージェントメインエージェントが全体を管理 | Agent Teamsメッセージのやり取りと、Taskツールを持つエージェント向けの共有タスクリスト |
| トークンコスト | サブエージェント低い。結果が要約されて戻る | Agent Teams高い。teammateごとに別のClaudeインスタンス |
| 表示制御キー | サブエージェントなし | Agent TeamsteammateMode |
逐次的な作業、同じファイルへの編集、依存の多い工程では、調整の負荷が効いて単一セッションやサブエージェントのほうが向きます。並列調査、競合仮説の検証、フロントエンド・バックエンド・テストの分担のように、独立して進められる仕事で効きます。サブエージェント側の詳細はサブエージェントの使い方にあります。Claude Codeの全体像から見ると、Agent Teamsは並列化の選択肢の1つです。
サブエージェントがメッセージを送るには、ツールにSendMessageが要ります。v2.1.206以降は、ほかの名前付きエージェントの一覧も渡されます。
エージェントパネルにはサブエージェントとteammateが同じ場所に並ぶので、見た目だけでは区別できません。確実にチームを組みたいときは「agent teamを使って並列で調査して」のように頼みます。
teammateDefaultModelで検索してきた人へ
teammateDefaultModelはバージョン2.1.234で削除された設定キーです。settings.jsonに残っていてもClaude Codeは値を無視します。teammateのモデルを固定するには、立てるプロンプトで名前を指定するか、CLAUDE_CODE_SUBAGENT_MODELを使います。
まとめ
split paneで確実に表示したいときは、前提が欠けたらエラーで気づけるiterm2かtmuxを明示する選択肢があります。