TeamDelete(チームデリート)

組み込みツール
TeamDelete
チームデリート
Agent Team(複数のClaude Codeセッションを1つのチームとして並走させる実験的な仕組み)を解散し、teammateプロセスとローカル設定ファイルをまるごと片付けるためのツール。私たちが直接叩くのではなく、リーダーに自然言語で『Clean up the team』と頼むと内部で呼ばれる。

Agent Teamを一度組んだことがある人。チームを正しく解散したい人

料理ブログのリニューアル案件のように、複数のteammateで進めていた作業が完了して正式にチームを解散したいとき、またはチーム編成を間違えたので別構成で組み直したいとき。1人のリーダーが同時に持てるチームは1つだけ(One team at a time)なので、新チームを作る前に必ず前のチームを片付ける必要がある。リーダーセッションで『Clean up the team』と頼むと、内部でTeamDeleteが呼ばれる。

TeamDelete はAgent Teamを解散するためのツールです。一仕事終わって役目を終えたチームを片付け、teammateのプロセスと、ローカルに残ったチーム設定・タスクリストをまるごと掃除します。

このツールはClaude Code側で勝手に組み込まれていて、私たちが直接叩くものではありません。leadに自然言語で「Clean up the team」と頼むと、Claudeが内部で TeamDelete を呼ぶ、という流れになります。

噛み砕くと

会社のプロジェクトチームを思い浮かべると分かりやすいです。プロジェクトが終わったら、メンバーを順に「お疲れさまでした」と送り出し、最後に会議室の予約と共有フォルダを片付けます。TeamDelete がやるのは、ちょうどその「会議室と共有フォルダの片付け」の部分です。

注意点は2つ。1つ目は、メンバーがまだ会議室で作業している間は片付けに入れないこと。残ってる人がいたら片付けは失敗します。2つ目は、片付けの号令を出せるのはチームを作った本人だけ、ということ。メンバー側が勝手に片付けようとすると、設定ファイルが中途半端な状態で残るリスクがあります。

つまり「全員idle/stoppedにしてから、リーダーに片付けを頼む」が正しい順番です。

大事な前提:Agent Teamは現状experimental機能

Agent Teamは2026年5月時点でexperimentalです。デフォルトでは無効で、明示的に有効化しないと TeamCreateTeamDelete もメニューに出てきません。

有効化するには ~/.claude/settings.json の env セクションか、ターミナルの起動時設定で次を1行入れます。

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

あわせて、Claude Code本体のバージョンが v2.1.32以上 必須です。手元で確認するには次を叩きます。

$ claude --version

experimentalなので、後述する「セッションを途中で閉じてもチームは復元できない」「シャットダウンが遅い」など、本番運用では困る制約がそのまま残っています。TeamDelete はそういう機能の上で動く、と踏まえた上で使う必要があります。

「料理ブログのリニューアル完了→チーム解散」を例に、実際の手順を見る

料理ブログのリニューアル案件を、3人のteammateと一緒に進めていたとします。フロント担当・記事DB担当・SEO監査担当の3人をAgent Teamで並走させ、リニューアル作業が完了したところです。ここから解散の手順を順に見ていきます。

ステップ1: Shift+Downで各teammateの状態を確認する

解散の前に「いま誰が動いていて、誰が手を止めているか」を把握します。in-processモードなら、Shift+Downを押すごとに teammate のセッションが切り替わって、各々の現在の状態が見えます。

料理ブログの例だと、フロント担当はもうidleになっていて、記事DB担当も同じく完了済み。SEO監査担当だけまだ sitemap.xml のチェックスクリプトを動かしていて、activeだった、というシチュエーションを想定します。

ステップ2: 活動中のteammateにshut downを依頼する

活動中の teammate がいる場合、最初にやるのはその teammate へのシャットダウン依頼です。リーダーセッションでこう言います。

Ask the SEO auditor teammate to shut down

するとリーダーが内部でシャットダウン要求を出し、SEO監査担当が「了解、終わります」と応答するか、「いま sitemap.xml のチェック途中なので少し待ってほしい」と拒否を返すか、どちらかになります。teammate側にreject、つまりシャットダウン要求を断る権利が認められているのが公式仕様で、ここは強制終了ではない、というのが大事なところです。

ここで初心者がやりがちな勘違いを1つ。「shut down」と言った瞬間に teammate が即座に閉じるわけではありません。公式は「teammateは現在のリクエストやツール呼び出しを完了させてから閉じる」と明記していて、長めのファイル読み書きが走ってる最中だと、数十秒〜数分待たされることがあります。

ステップ3: approveを確認して、teammateが完全に止まるまで待つ

SEO監査担当がapproveを返したら、その teammate の状態が stopped に切り替わるのを待ちます。Shift+Downで巡回して、3人全員が idle か stopped になっているのを目で確認するのが安全です。

ステップ4: リーダーに「Clean up the team」と依頼する

全員が止まっているのを確認したら、いよいよ解散です。リーダーセッションにこう言います。

Clean up the team

これを受けてリーダーが TeamDelete を内部で呼びます。ここで最初にやるのが「activeな teammate が残っていないかチェック」で、もし誰か残っていたら、片付けはその場で失敗します。失敗した場合は、ステップ2に戻って残ってる teammate を一人ずつ shut down する流れに戻ります。

無事に片付けが通ると、~/.claude/teams/{team-name}/config.json~/.claude/tasks/{team-name}/ のフォルダが片付けられ、teammateプロセスもまとめてkillされます。

ステップ5: tmux環境ならtmux lsで残骸セッションがないか確認

tmux配下で split-paneモードを使っていた場合、まれにtmuxセッションだけが残ることがあります。これはorphanedと呼ばれる状態で、公式トラブルシュートに書かれた既知の現象です。

確認方法はシンプルで、次を叩きます。

$ tmux ls
$ tmux kill-session -t <session-name>

残骸セッションが見つかったら、名前を指定して個別にkillします。in-processモードだけで運用していた場合、この心配はありません。

つまり TeamDelete は何をしてくれるのか

  • やってくれる: teammateプロセスのkill、~/.claude/teams/{team-name}/config.json~/.claude/tasks/{team-name}/ の掃除、共有チームリソースの解放
  • やってくれない: 活動中teammateの強制終了、tmuxセッションのkill、リーダーセッション自体の終了、新しいチームへの自動引き継ぎ
  • 意味が薄い場面: そもそも CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 を設定していない環境(メニューに出てこない)、teammateを1人もspawnしていない場合(片付けるものがない)

使いどころ3シナリオ

シナリオ1: 料理ブログのリニューアル案件が完了したとき

フロント担当・記事DB担当・SEO監査担当の3人体制で進めていたリニューアル作業が、3日かけて完了。レビューも通って本番反映が終わった段階で、チームを正式に解散する。ここでステップ1〜5を踏むことで、次に別案件のチームを組むときにスムーズに移行できる。lead is fixed、つまりリーダーは固定で、リーダー自身が別チームを兼ねることはできないため、新しいチームを作る前にいまのチームを必ず片付けておく必要があります。

シナリオ2: チーム編成を間違えて作り直したいとき

「3人体制で始めたけど、テスト担当が必要だった」と気づいた瞬間、いまのチームをいったん解散して4人で組み直す必要があります。1人のリーダーが同時に管理できるチームは1つだけ、という公式仕様(One team at a time)があるので、新チームをいきなり TeamCreate しようとしても、先に TeamDelete で前のチームを片付けないと弾かれます。チーム編成の変更が、即 TeamDelete 必須に繋がるパターンです。

シナリオ3: 翌日に作業を再開したいけどチームを連れて行きたいとき

これは TeamDelete使うべきとき ではなく、諦めて使うべきとき のシナリオです。in-processモードのteammateは /resume/rewind で復元できないという公式制限があるため、リーダーセッションを /resume しても teammate は戻ってきません。翌日に「昨日のチームの続き」をやろうとしてもチームは再現できないので、その日のうちに TeamDelete で正しく解散しておくか、翌日に新しい teammate を spawn し直す、のどちらかを選ぶしかありません。

初心者が踏みやすい落とし穴

  • teammate側で「clean up」を頼まない。公式は「Always use the lead to clean up. Teammates should not run cleanup because their team context may not resolve correctly」と明記しています。teammateがクリーンアップを実行すると、チームコンテキストの参照が壊れて、リソースが中途半端に残るリスクがあります。片付けは必ずリーダーから。
  • 活動中のteammateを残したまま「Clean up the team」と頼むと失敗する。公式仕様で、片付けは最初にactive teammateの有無をチェックし、1人でも残っていればそこでfailします。失敗した時点でチームは中途半端な状態のまま残るので、ステップ2に戻ってshut downからやり直す必要があります。
  • シャットダウンは即座には終わらない。teammateは現在処理中のリクエストやツール呼び出しを完了させてから停止する設計です。長めのファイル読み書きや外部API呼び出しが走っている最中だと、数十秒〜数分は待たされます。「すぐ閉じるはず」と思って次の作業に移ると、片付けがまだ通っていない状態に気付かないまま新チームを作ろうとして弾かれる、というパターンが起きます。
  • teammateがshut down要求をrejectしてくることがある。teammate側にはシャットダウン要求を断る権利が認められていて、まだやることがあると判断すると「もう少し待ってほしい」と返してきます。その場合は、teammateに直接「タスクを中断して停止してほしい」と伝えるか、リーダーから別の指示を出すかで進めます。
  • tmux環境ではsessionが残骸として残ることがあるTeamDelete がtmuxセッションそのものまでkillしないケースが既知の現象として報告されています。チーム解散後に tmux ls で確認し、残骸があれば tmux kill-session -t <session-name> で個別に落とすのが安全です。
  • session resumptionは効かない/resume/rewind でリーダーセッションを復元しても、in-process teammateは復活しません。復元後のリーダーが、もう存在しない teammate にメッセージを送ろうとしてエラーになるケースがあります。再開するときは新しい teammate を spawn し直すのが基本動作です。
  • リーダーが早めに「もう終わり」と判断して片付けようとすることがある。公式トラブルシュートに記載があるパターンで、全タスクが完了していないのにリーダーが TeamDelete を呼びに行くケースが報告されています。これが起きたらリーダーに「Wait for your teammates to complete their tasks before proceeding」と伝えて、作業継続を明示します。
  • 解散後のチームは復元できないTeamDelete はチーム設定とタスクリストをローカルから消すので、片付け済みのチームを後から呼び戻すことはできません。途中経過を残しておきたいなら、TeamDelete の前にタスクリストや成果物を別の場所にコピーして保存しておくのが安全です。

書き方

Clean up the team

やってみるとこうなる

入力

Clean up the team

出力例

リーダーが内部でTeamDeleteを呼ぶ。activeなteammateが残っていないかチェック → 全員idle/stoppedなら ~/.claude/teams/{team-name}/config.json と ~/.claude/tasks/{team-name}/ を片付け、teammateプロセスをまとめてkill。誰か活動中だとその場でfailするので、その場合は先に個別shut down依頼に戻る。

このページに出てきた言葉

Agent Team
複数のClaude Codeセッションを1つのチームとして並走させる実験的な仕組み。<code>CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1</code> で有効化する
teammate(チームメイト)
リーダーの指示で並走する別のClaude Codeセッション。それぞれ独立したコンテキスト窓を持つ
lead(リーダー)
チームを作った大元のセッション。teammateの割り当て・解散・タスク管理を担当する司令塔。寿命の間ずっとリーダー固定
experimental
公式が『実験中』と明示している機能。仕様変更・廃止・不具合が織り込み済みの段階
in-processモード
リーダーセッションと同じターミナル画面の中で全teammateが動くモード。Shift+Downでteammate切替
split-paneモード
teammateごとに別ペインを割り当てる表示モード。tmuxまたはiTerm2環境が必要
idle
teammateが手元のタスクをやり終えて次の指示を待ってる待機状態
active
teammateがまだ何かのタスクを走らせている活動中の状態
approve / reject
シャットダウン要求への応答。approveは受け入れて終了処理、rejectは断る権利の行使
config.json
チーム名・メンバー一覧・稼働状態を保存する設定ファイル。<code>~/.claude/teams/{team-name}/config.json</code>。手で編集すると次の状態更新で上書きされる
orphaned(オーファンド)
親プロセスが消えたのに後始末されず残ってしまったセッションやプロセスのこと。tmux配下で起きやすい
session resumption
<code>/resume</code> や <code>/rewind</code> でセッションを復元すること。in-process teammateは現在この対象外(公式制限事項)

関連項目

公式ドキュメント

https://code.claude.com/docs/en/tools-reference#teamdelete

-

← 戻る