ここ最近、Claude Code の新機能としてこういう話が流れてきます。
「この作業、別セッションに引き継いで」と伝えるだけ。
調査担当のClaude → 実装担当のClaude → レビュー担当のClaude、とリレーできる。
たしかに新機能は実在します。Claude Code v2.1.224 で入った cross-session messaging(セッション間メッセージング)です。
ただ、公式ドキュメントを読んだら、紹介されている内容とだいぶ違いました。しかも自分の環境(Windows)だと、そもそも動きません。
期待してから「あれ?」となる前に、一次情報で確認できたところを整理しておきます。
一次情報はこちらです。
公式ドキュメント: https://code.claude.com/docs/en/cross-session-messaging
CHANGELOG: https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
ズレ1: 渡るのは「テキスト1通」だけ
まずここが一番大きいです。公式にはっきり書いてあります。
A message is a piece of text one Claude writes to another, never conversation history or files.
(メッセージとは、あるClaudeが別のClaudeに向けて書くテキストであって、会話履歴やファイルではない)
会話履歴は渡りません。ファイルも渡りません。開いていたコンテキストも渡りません。渡るのは、送り手のClaudeが書いた短い文章1通だけです。
受信側にどう見えるかの例も公式に載っていて、こんな感じです。
Schema migration finished: the new column is tenant_id, and rebasing on main is safe now.
要するに Slack のDMです。「これ終わったよ」「この列名になったよ」を隣の席に伝える、あの感じ。
そして公式は、引き継ぎたいなら別の機能を使えと名指ししています。
To move a whole conversation or its context, resume the session instead.
(会話やその文脈をまるごと移したいなら、代わりにセッションを再開すること)
「文脈を引き継ぐ」のは /resume の担当で、今回の新機能ではない、と公式が線を引いてるわけですね。
ズレ2: ネイティブWindowsでは動きません
これ、日本語の紹介ではほぼ触れられてないんですが、対応OSに制限があります。
Operating system: available on macOS and Linux, including Linux inside WSL 2. Claude Code doesn't offer cross-session messaging on native Windows.
(対応OSはmacOSとLinux。WSL 2 内のLinuxを含む。ネイティブWindowsではセッション間メッセージングを提供していない)
WSL 2 は対象に入っているので、WSL 2 上で動かしていれば使えます。逆に、Windows でそのまま claude を叩いている人は対象外ということになります。自分がまさにこれなので、記事を書くにあたって手元では試せませんでした。
OS以外にも条件があります。
| 条件 | 内容 |
|---|---|
| バージョン | v2.1.224 以降。他マシンへの送信開始は v2.1.225 以降、@ でのセッション指定は v2.1.232 以降 |
| プロバイダ | Amazon Bedrock、Claude Platform on AWS、Google CloudのAgent Platform、Microsoft Foundry では使えない |
| 環境変数 |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC、DISABLE_TELEMETRY、DO_NOT_TRACK、DISABLE_GROWTHBOOK でフィーチャーフラグ評価を切っていると無効 |
自分の環境で使えるかどうかは、/list-agents(別名 /peers)で判定できます。
/list-agents
- コマンドが認識されない → その環境には機能自体がない
- 認識されるが送ったメッセージが届かない → 権限のdenyルール、受信側の設定、Remote Control未接続などの別要因
公式もこの順で切り分けろと書いていて、コマンドが通るかどうかがそのまま対応可否の判定になります。
ズレ3: 「役割分担リレー」は別機能の担当
冒頭の「調査担当 → 実装担当 → レビュー担当」というリレー。あれをやりたい場合、公式ドキュメントの整理だと別の機能を見ることになります。
公式は cross-session messaging の守備範囲を示したうえで、それ以外のやり方には専用の機能があるからそっちを使えと、5つ名指ししています。
| やりたいこと | 使う機能 |
|---|---|
| 自分で立てて自分で操縦しているセッション同士で連絡する | cross-session messaging(今回の新機能) |
| 会話をまるごと別ターミナルで続ける・新セッションに文脈を渡す | セッション再開(/resume) |
| Claudeが立ち上げて監督するチームを組む | agent teams |
| 多数のセッションを1箇所から監視・操縦する | agent view |
| スマホなど別デバイスから、自分でセッションを操縦する | Remote Control |
| CI結果やチャットなど外部イベントを流し込む | channels |
cross-session messaging の守備範囲は、公式の言葉だと「independent sessions that you start and steer yourself(自分で開始し、自分で舵を取る独立したセッション)」の間の連絡です。
Claudeが勝手に4人チームを組んでリレーしてくれる機能ではない、ということですね。それがやりたいなら agent teams のほうを見ることになります。
じゃあ何に使う機能なのか
公式が挙げているユースケースは4つで、どれも「並行して動いている作業の、途中の連絡」です。
- breaking changeを伝える: あるセッションで壊れる変更を入れたとき、その影響を受ける作業をしている別セッションに知らせる
- 並行worktreeの調整: 同じリポジトリを別々のworktreeで触っているセッション同士で、何がマージされたかを共有する
- 長時間タスクの報告: マイグレーションやテストの完走を、こちらが見ているセッションに報告させる
- 別マシンへの連絡: 他のマシンやWeb版のセッションに届ける
自分でも ListAgents や SendMessage を呼ぶ必要はなくて、Claudeが自分で宛先を探して送ります。人間側は「隣のターミナルのセッションに、マイグレーション終わったか聞いて」のように頼むだけ。宛先を指定したければ @ でセッション名を補完できます(v2.1.232以降)。
@api-worker に、スキーマのマイグレーションが終わったと伝えて
地味に効いてる設計: メッセージは人間の承認を代行できない
セッション間で自由に指示が飛ぶと権限の抜け道になりますが、そこはきっちり塞いでありました。
受信側のClaudeには「これは人間ではなく別セッションから来たメッセージだ」と伝わったうえで、できることが制限されます。
- 承認の代行はできない: 他セッションからのメッセージは、こちらの許可プロンプトへの同意にはならない
-
設定変更はさせない: 「別セッションに言われたから」を理由に権限設定や
CLAUDE.mdを書き換えない -
コマンドは実行されない: メッセージ本文に
/compactと書いてあっても、ただの文字列として届く - 権限プロンプトは普通に出る: メッセージに従って作業するのに権限が要るなら、いつも通り確認が出る
送信側にも制約があります。自分のセッションで拒否された操作を、他のセッションに代わりにやらせようとしない、という指示が入っています。
受け取る側は crossSessionInbound で挙動を選べます。
| 値 | 挙動 |
|---|---|
accept |
全部そのまま届ける |
hold |
通知だけ出して保留。あとから accept が適用される状態になれば、まとめて届く |
refuse |
破棄する |
なお、この値を明示していない場合は、送信側と受信側の権限モードの組み合わせで自動判定されます。保留になったときは受信側に承認ダイアログが出て、5分(dialogExpiry の既定値)で応答がなければ破棄されます。
組織全体で止めたい場合は、managed settings でこう書けます。
{
"permissions": {
"deny": ["SendMessage", "ListAgents"]
},
"crossSessionInbound": "refuse"
}
あと、セッション同士がメッセージを投げ合って無限ループする件も対策済みでした。送信者ごとのレート制限、短時間の同一メッセージの破棄、未読上限50通で、ループは自然に止まるようになっています。
まとめ
| 流れてきた説明 | 実際 |
|---|---|
| 仕事や文脈をそのまま引き継げる | 渡るのはテキスト1通。履歴もファイルも渡らない |
| 引き継ぎ用の機能 | 引き継ぎは /resume の担当だと公式が明記 |
| 役割分担のリレーが組める | それは agent teams の守備範囲 |
| (OSの話は出てこない) | ネイティブWindowsでは非対応。WSL 2 ならOK |
機能そのものは便利だと思います。ターミナルを何枚も開いて並行作業していると、片方の変更をもう片方にコピペで伝える手間が地味に効いてくるので、そこが自動化されるのは素直にありがたい。
ただ「セッションをまたいで記憶が繋がる」ものではないです。セッション間で足りないのは相変わらず記憶のほうで、そこは別の手当てが要ります。
対応OSに入っている方は /list-agents から試してみてください。自分のようにネイティブWindowsで動かしている場合は、WSL 2 に移すかどうかがそのまま判断の分かれ目になります。
※ 引用は原文と日本語訳を併記しています。訳は読みやすさを優先しているので、正確な表現は原典をご確認ください。
関連記事
- Claude Code はセッションをまたぐと記憶がリセットされる — 5分で永続記憶を仕込む方法 — 今回「渡らない」と分かった文脈のほうをどう持ち越すか
- CLAUDE.md は21セクションか、8行か — 公式ドキュメントで決着をつけた — 同じく、話題になっている主張を公式ドキュメントで突き合わせた話
- バズってる「STORMプロンプト」、実は一番大事な部分が抜けてます【Stanford論文ベース】 — 紹介が一人歩きして、肝心の部分が落ちていた例