SpyBara
Go Premium

cross-session-messaging.md 2026-10-09 23:02 UTC to 2026-10-10 22:01 UTC

This page contains 5 additions and 5 deletions.

2026
Fri 2 22:59 Sat 3 23:57 Sun 4 23:58 Sat 10 23:01

他の Claude Code セッションにメッセージを送信する

Claude が同じマシン上の他の Claude Code セッションをリストアップしてメッセージを送信できるようにし、他のマシンまたはクラウド上のセッションに到達します。

クロスセッションメッセージングにより、Claude は一つの Claude Code セッションから別のセッションにメッセージを配信できます。一つのセッションでの変更が別のセッションが構築しているものを破壊する場合、Claude はあなたが気付く前にそのセッションに警告することができます。一つのセッションが別のセッションがブロックされている質問を解決する場合、Claude は答えを送信することができます。

メッセージは、一つの Claude が別の Claude に書くテキストの一部であり、送信者の会話履歴またはファイルではありません。会話全体またはそのコンテキストを移動するには、代わりにセッションを再開してください。

クロスセッションメッセージングを使用する場合

1 つのセッションが別のセッションが必要とするものを持っている場合にメッセージングを使用します。Claude は必要に応じて自動的にメッセージを送信できます。たとえば、別のセッションが実行している作業に影響する変更を加えた後、または送信するよう求めることができます。一般的なケースは次のとおりです。

  • 検出結果を引き継ぐ: 1 つのセッションが破壊的な変更を発見するか決定を下すと、Claude はそれを影響を受ける領域で作業しているセッションに要約します。そこで再度説明する代わりに。
  • 並列ワークツリーを調整する: セッションが別のワークツリーで同じリポジトリで作業する場合、Claude は他のセッションに何がマージされたかを伝えることができます。
  • 長時間実行される作業からステータスを取得する: マイグレーションまたはテスト実行を監視しているセッションに報告させるか、そこから自分で尋ねます。そのセッションがこのマシン上にある場合、Claude は次にアイドル状態になるか終了するときに 1 つの通知を求めることもできます。
  • マシン間でメッセージを送信する: 別のマシンまたはウェブ上の 1 つのセッションに到達します。

別のセッションにメッセージを送信する

あるセッションが別のセッションで必要な情報(調査結果、ステータス、決定など)を学んだ場合、Claude はターミナル間でコピー&ペーストする代わりに、その情報を自動的に渡します。Claude は ListAgents でターゲットを検出し、SendMessage で送信するため、ユーザーがこれらのツールを呼び出す必要はありません。Claude は要求されなくてもメッセージを送信することを決定できますし、ユーザーがメッセージを促すこともできます。

自分でメッセージを促すには、別のセッションが知る必要があることや実行する必要があることを Claude に伝えます。以下の例は Claude が送信するメッセージではなく、ユーザーが入力するプロンプトです。

Ask the session running in my other terminal whether the migration finished

Claude は実際のメッセージ自体を作成するため、ユーザーのプロンプトはコンテンツを Claude に任せることができます。このプロンプトは表現方法を指定せずに要約を求めており、Claude が送信する内容は異なります。

Explain what we just did to the session working on the payments API

ターゲットを自分で指定するには、プロンプトでセッションに言及します。@ に続けてセッション名の最初の文字を入力し、タイプアヘッドからセッションを選択します。これは サブエージェントを明示的に呼び出す 場合と同じ方法です。Claude Code v2.1.232 以降が必要です。Claude Code はメンション(@api-worker など)を挿入し、Claude にそのセッションを指定するため、Claude はセッションを最初にリストアップせずにそのセッションにメッセージを送信できます。このプロンプトはメンションでターゲットを指定します。

Let @api-worker know the schema migration finished

タイプアヘッドには、このマシン上の他のライブセッションが表示されます。名前の最初の文字以上が必要な場合は 2 つあります。

  • このマシンを超えたセッション:クラウドまたはリモートコントロールセッションは、Claude がこのマシンを超えたセッションをリストアップまたはメッセージした後にのみタイプアヘッドに表示されるため、Claude に最初にそれらをリストアップするよう依頼してください。
  • スペースまたは文字、数字、ハイフン、アンダースコア以外の文字を含む名前:@"release notes" のようにダブルクォートで入力してください。タイプアヘッドからセッションを選択すると、Claude Code がクォートを自動的に挿入します。

ピッカーなしでメンションを入力することもできます。複数のライブセッションが指定された名前に応答する場合、Claude は送信前にどちらを意味するのかを尋ねます。

メッセージが到着したときの Claude が作成するメッセージの外観(例を含む)については、メッセージの外観 を参照してください。

メッセージ配信

受信側の Claude はアクティブなターンの間にツール呼び出しの間でメッセージを読むため、実行中のツールが中断されることはありません。受信セッションがアイドル状態の場合、Claude Code はメッセージで新しいターンを開始します。

別のセッションからのメッセージはプレーンテキストとして到着します。@ でファイルまたは MCP リソース に言及する場合、Claude は記述されたメンションを見て、Claude Code は何も添付しません。メッセージが新しいターンを開始するか、既存のターン中に到着するかに関わらず、です。Claude は依然として受信マシン上の指定されたパスを独自のツールで開くことができます。そのセッションの権限に従います。

Claude Code は以下の場合、メッセージを拒否します。

受信セッションは到着した各メッセージを独自の インバウンドコントロール に対してチェックし、チェックは 3 つの結果のいずれかで終了します。

  • 配信済み:Claude Code はメッセージを受信側の Claude に渡します。
  • 保留中:Claude Code はメッセージを配信されないまま脇に置きます。保留中のメッセージは、ユーザーが承認するか、後のモードまたは設定変更がそれを許可する場合にのみ Claude に到達します。
  • 拒否:Claude Code はメッセージを配信せずに削除します。

配信されると、メッセージは 使用状況 に対してユーザーが入力したプロンプトのようにカウントされ、受信側の Claude は同じ方法で送信者に返信できます。ただし、一方向クロスマシンの場合 を除きます。

権限の境界はセッションごとに保たれます。Claude は、自身のセッションで拒否またはブロックされたアクション、または独自の権限設定がブロックするアクションを別のセッションに要求しないよう指示されており、その作業をユーザーに戻すよう指示されています。受信側では、受信セッション独自の権限プロンプトとルール がメッセージが要求するすべてのものに適用されます。

別のセッションがアイドル状態になったときに通知を受け取る

Claude は、このマシン上のセッションの 1 つに、そのセッションが次にアイドル状態になるか終了するときに 1 つの通知を送り返すよう依頼できます。ここでアイドルとは、セッションがキューに入っているものがない状態でターンを完了したことを意味します。別のセッションで長いタスクを待っていて、チェックする代わりに完了したときに聞きたい場合に使用します。両方のセッションで Claude Code v2.1.236 以降が必要です。

通知をリクエストする

待機中の内容を Claude に伝えます。このプロンプトはマイグレーションセッションから通知をリクエストします。

Tell me when the migration session finishes what it's working on

Claude は SendMessage ツールの notify_when_idle 入力で購読します。送信しているメッセージに添付するか、単独で。単独の場合、Claude Code は監視対象セッションでターンを開始したり、トークンを消費したりせずに購読し、そのセッションが既にアイドル状態の場合は通知をすぐに送信します。メッセージに添付する場合、Claude Code はメッセージを最初に配信し、後で通知を送信します。

各セッションが表示するもの

監視対象セッションは、別のプロセスがセッションが次にアイドル状態になったときに通知されるよう要求したことを示す行を表示します。要求側セッションは、監視対象セッションに名前を付ける行として通知を表示します。この行には、そのセッションのターンが完了した時刻と、そのターンからの 1 行のステータスを含めることができます。要求側セッションがアイドル状態の場合、Claude Code は通知で新しいターンを開始します。

制限

通知は 1 回限りです。Claude Code は監視対象セッションから 1 回送信し、どちらのセッションも他方をポーリングしません。12 時間以内に通知が到着しない場合、Claude Code は購読を削除し、Claude に通知するため、待機を続けません。

各側の インバウンドコントロール はメッセージのような通知に適用されます。

  • どちらかの側で refuse:何も到着しません。監視対象セッションは要求を記録または応答せずに削除するため、購読は 12 時間後に未応答で期限切れになり、refuse を持つ要求側セッションは購読しません。
  • どちらかの側で hold:通知は少なく到着します。監視対象セッションは 1 行のステータスを除外し、要求側セッションは Claude に配信せずにトランスクリプトに通知を表示します。

メインの会話の Claude のみが購読でき、このマシン上のセッションのみに購読できます。Claude がチームメイト、サブエージェント、またはこのマシンを超えたセッションなど、他のエージェントから通知をリクエストする場合、Claude Code は添付されたメッセージを含む呼び出し全体を拒否します。

Claude が到達できるセッションを確認する

Claude はメッセージのターゲットを独自に検出するため、送信を依頼する前に何かを実行する必要はありません。Claude が到達できるセッションを自分で確認するには、/list-agents コマンドを実行します。最初の行(存在する場合)はこのセッション自体の名前で、他のセッションがそれにメッセージを送信するために使用する名前です。以下の行は Claude が到達できるセッションです。

  • サブエージェント:現在のセッション内で実行されているエージェント。
  • チームメイト:このセッション独自の エージェントチーム チームメイト。
  • 他のローカルセッション:同じマシン上で実行されている Claude Code セッション。バックグラウンドセッション を含みます。セッションは インボックスソケット をバインドするときにのみ表示されます。
  • クラウドセッション:このセッションが リモートコントロール に接続されている間に表示されます。
  • 他のマシン上のリモートコントロールセッション:このセッションが リモートコントロール に接続されている間に表示され、Remote Control とラベル付けされます。Claude Code は、リモートコントロール接続が切断されたセッションのステータスを offline として表示します。

このセッションが リモートコントロール に接続されている間、Claude Code は /list-agents 出力からローカルセッションの詳細の一部を保留し、Claude 自体がセッションをメッセージするために検索するときに見るものは変わりません。

  • 作業ディレクトリ:各ローカルセッションの作業ディレクトリを除外します。
  • セッション名:人に属性付けできないセッション名を除外するため、名前が残っていない行は (unnamed session) と読みます。
  • 最初の行:このセッション自体の名前を持つ行を除外します。ユーザーがこのターミナルでその名前を入力した場合を除き、--name または /rename と名前を使用して、セッションを起動または再開してから。

出力が何かをリストアップする場合、詳細が保留されたことを示す注記で終了します。セッション独自のキーボードで /rename に続いて未使用の名前を実行すると、そのセッションに出力に表示される名前が付与されます。

セッションは /rename コマンドまたは --name フラグで設定した名前に応答します。設定しない場合、Claude Code はセッション自体に名前を付けます。インタラクティブセッションの場合、これは 実行中のセッションのリスト に表示される名前です。

このセッションが Remote Control に接続されていない限り、Claude Code は /list-agents 出力に各ローカルセッションの作業ディレクトリを表示するため、異なるディレクトリで実行されている同じ名前のセッションを区別できます。Claude はメッセージを 2 つの方法のいずれかで送信します。名前に応答するライブセッションの数によって異なります。

  • 1 つのセッションが名前に応答する:Claude Code は名前だけでメッセージを配信します。
  • 複数のセッションが名前を共有するか、Claude Code がセッションを実行するすべての場所をチェックできない:Claude はリストの各行に短い識別子を追加し、アドレスで識別子を使用します。

他のマシン上のセッションにメッセージを送信する

メッセージがどのように移動するか、および Anthropic サーバーを通過するかどうかは、ターゲットセッションが実行される場所によって異なります。

他のセッションが実行される場所 メッセージの移動方法
このマシン上 macOS および Linux 上のセッションごとのソケット、またはネイティブ Windows 上のセッションごとの名前付きパイプ。Anthropic サーバーを通じて決してない
他のマシンの 1 つ Anthropic サーバーを通じて、そのマシンの リモートコントロール 接続を通じて到着
クラウド Anthropic サーバーを通じて、クラウドセッションに直接

他のマシン上のセッションとの会話を開始するには、Claude Code v2.1.225 以降と、リストに表示される ターゲットが必要です。

リスト のセッションの行には、Claude がそのセッションにメッセージを送信したときの動作を変える状態が表示されることがあります。

  • offline:そのセッションの Remote Control 接続が切断されています。メッセージは送信されますが、そのセッションのマシンが再接続した後にのみ到着します。
  • can't receive cross-session messages (off in that session):そのセッションでメッセージ送受信が 利用できない か、その crossSessionInbound の値が refuse です。Claude Code は、メッセージがこのマシンを離れる前に、そのセッションへのメッセージを拒否します。Claude の SendMessage 呼び出しの結果は Not sent で始まり、理由が示されます。そのセッションで原因が解消されると、以降のリストにはこの状態が表示されなくなり、Claude はそのセッションにメッセージを送信できます。

コンテナ内のセッションとホスト上のセッションは互いに到達できません。同じコンテナ内の 2 つのセッションは依然としてメッセージを送信できます。セルフホストランナー を含みます。WSL 2 内のセッションと同じコンピュータ上のネイティブ Windows セッションも互いに到達できません。

このセッションがこのマシンを超えたセッションに Claude が送信するときにリモートコントロールに接続されていない場合、メッセージは依然として通過しますが、返信アドレス なしで、受信側の Claude は応答できません。

このマシンを超えたメッセージが送信される前にユーザーの承認を要求するには、isolatePeerMachines を設定します。

セッションが受信メッセージをどのように扱うか

セッション A がセッション B にメッセージを送信する場合、Claude Code は B の Claude に対して、そのメッセージがユーザーからではなく別のセッションから来たことを伝え、メッセージが実行できることを制限します。

  • 何も承認できません: 別のセッションからのメッセージはユーザーの同意としてカウントされないため、ユーザーに代わって保留中の権限プロンプトに応答することはできません。
  • 設定を変更できません: Claude Code は受信側の Claude に対して、別のセッションが要求したため権限設定、CLAUDE.md、またはその他の設定を変更しないよう指示します。
  • コマンドは実行されません: メッセージのテキスト内のコマンド(/compact など)はプレーンテキストとして到着します。Claude Code はそれを実行することはありません。
  • 権限プロンプトは引き続き発火します: メッセージに対応するために受信側セッションが持っていない権限が必要な場合、他の作業と同じプロンプトが表示されます。

メッセージの外観

メッセージが到着すると、Claude Code は会話内に薄い 1 行のプレビューとして表示し、プレビュー行は後で会話に残ります。プレビューには送信者の名前とメッセージの最初の行が含まれ、長い場合は … で切られます。例えば › Message from @api-worker: Schema migration finished (ctrl+o to expand) のようになります。

以下のいずれかで完全なテキストが表示されます。

  • Ctrl+O を押してトランスクリプトビューアを開き、送信者のセッション名の下で完全なテキストを読みます。
  • フルスクリーンレンダリングでは、メッセージの一部が省略されているプレビュー行をクリックすると、その場で展開されます。
  • --verbose で開始されたセッションでは、Claude Code はプレビューではなく完全なテキストを表示します。

プレビューは表示内容のみを短縮します。展開するかどうかに関わらず、Claude はメッセージ全体を読みます。

Claude は送信者の名前と返信アドレスを含むメッセージを受け取ります。ただし、一方向クロスマシンメッセージは返信アドレスを含みません。

この例は、ある Claude が別の Claude に書いたメッセージで、展開時の完全なテキストは次のように読まれます。

Schema migration finished
The new column is tenant_id, and rebasing on main is safe now.

インバウンドメッセージを制御する

crossSessionInbound を設定して、セッションが他のセッションから到着するメッセージをどのように処理するかを選択します。

値 動作
accept Claude Code は各メッセージを Claude に配信します
hold Claude Code は各メッセージの通知を表示し、配信しません。後で accept が適用される場合、優先順位ルールに従って、Claude Code は保留中のメッセージをリリースします
refuse Claude Code は各メッセージを配信せずにドロップします

設定ファイルを編集する以外に、/config 行の Messages from your other sessions で値を選択できます。Claude Code は選択した値をユーザー設定に書き込みます。この行には Claude Code v2.1.232 以降が必要で、管理設定または --settings フラグがキーを設定している場合は表示されません。ユーザー設定値は適用されないためです。Claude Code はこのキーに対して /config crossSessionInbound=value ショートハンドを拒否します。

どの値が適用されるかを確認するには、設定リファレンスの crossSessionInbound 優先順位ルールに従います。

値が適用されない場合、Claude Code は 2 つのセッションの権限モードに基づいてメッセージごとに決定します。権限プロンプトをバイパスするセッションを 1 つのクラスにグループ化し、他のすべてのセッションを別のクラスにグループ化します。plan モードは、バイパス権限が利用可能なインタラクティブなターミナルセッションではバイパスとしてカウントされ、auto、acceptEdits、dontAsk はプロンプトとしてカウントされます。

  • 受信側セッションが権限をプロンプト: Claude Code は各メッセージを配信します。送信側セッションが権限プロンプトをバイパスしていることを識別する場合のみ、承認のために 1 つを保留します。
  • 受信側セッションが権限をバイパス: Claude Code は各メッセージを承認のために保留します。送信側セッションも同様にバイパスしていることを識別する場合のみ、1 つを配信します。

インタラクティブなターミナルセッションでデフォルトがメッセージを保留する場合、Claude Code はそのセッションで承認ダイアログを開きます。ダイアログには送信者とプレビューが表示されます。

  • Approve はそのメッセージを Claude に配信します。
  • Deny またはダイアログを閉じると、ドロップされます。
  • ダイアログが dialogExpiry 期限を過ぎて未回答のままの場合、Claude Code はそれを閉じてメッセージをドロップします。期限のデフォルトは 5 分です。
  • バックグラウンドセッションにターミナルが接続されていない場合、Claude Code はダイアログを期限を過ぎて開いたままにします。接続後、ダイアログが完全な期限期間未回答のままの場合、Claude Code はそれを閉じてメッセージをドロップします。
  • このセッションの権限モードクラスがメッセージが保留されている間に変更される場合、Claude Code はインバウンドルールを再適用し、現在受け入れるメッセージを配信し、通知を表示します。

VS Code 拡張機能または Desktop アプリのセッションはダイアログを表示できません。その場合、非インタラクティブセッションで説明しているように、Claude Code は保留中のメッセージを同じ期限まで保持します。

Claude Code は最大 100 個のメッセージを保留し、それを超えると最も古いものをドロップします。

非インタラクティブセッション

Claude Code は claude -p セッションのインボックスソケットをインタラクティブなものと同様にバインドするため、長時間実行される -p ワーカーはメッセージを受信でき、リストに表示されます。bare モードでセッションを開始する場合、Claude Code はソケットをバインドしないため、そのセッションはメッセージを受信できず、エージェントリストに表示されません。

-p セッションは承認ダイアログを表示できません。インバウンドデフォルトがそこでメッセージを保留する場合、Claude Code はダイアログが使用する同じ dialogExpiry 期限(デフォルトは 5 分)でそれを保持します。

  • 期限前: モードまたは設定変更によりメッセージが許可される場合、Claude Code はそれを配信します。
  • 期限後: Claude Code はメッセージをドロップし、到達できる送信者に期限切れとして報告します。

dialogExpiry を "never" に設定して、デフォルト保留メッセージをセッション終了まで保持します。明示的な hold 設定で保留されたメッセージは期限切れになりません。Claude Code は、後で accept が適用された場合にのみそれを配信します。

-p ワーカーが無人でメッセージを受け取れるようにするには、その --settings 値で crossSessionInbound を accept に設定して開始します。ユーザー設定の accept も機能しますが、実行するすべてのセッションに適用されます。

セッションのインボックスソケット

期待するセッションがエージェントリストにない場合、スクリプトまたはフックをセッションに投稿したい場合、またはサンドボックス化されたコマンドがソケットに到達できない場合は、このセクションを読んでください。

Claude Code は、クロスセッションメッセージングが有効になっている各セッションのインボックスソケットをバインドします。ここで、マシン上の他のセッションはメッセージを配信します。ソケットは macOS と Linux(WSL 2 内の Linux を含む)では Unix ドメインソケットで、ネイティブ Windows ではネームドパイプです。どのセッションの種類がバインドするかについては、非インタラクティブセッションを参照してください。

ソケットのパスは 2 つの場所で見つけることができます。

  • /status は Peer address 行に表示します。パスは uds: で始まります。
  • Claude Code はフックと Bash コマンドに CLAUDE_CODE_MESSAGING_SOCKET 環境変数としてエクスポートします。
    • メッセージングがオンで開始するセッションでは、Claude Code は SessionStart を含むすべてのフックが実行される前に変数をエクスポートします。

macOS と Linux では、Claude Code はソケットをオペレーティングシステムユーザーに制限します。ネイティブ Windows では、代わりに各接続がまずオペレーティングシステムユーザーのみが読み取ることができるキーで認証することを要求します。どちらの方法でも、共有マシン上の別のユーザーのセッションはそれに配信できません。

macOS と Linux では、Claude Code は受け入れることができないディレクトリ(例えば別のユーザーが所有するディレクトリ)にソケットを作成することも拒否し、代わりにプライベートなユーザーごとのディレクトリ /tmp/cc-socks-<uid> を使用します。受け入れることができるディレクトリがない場合、セッションはインボックスなしで実行されます。Claude Code は通知を表示し、/status は Peer address 行に unavailable と理由を表示し、--debug ログは完全な拒否を記録します。

ソケットのパスと共に、Claude Code はセッションごとのトークンを CLAUDE_CODE_MESSAGING_TOKEN としてエクスポートします。独自のセッションのソケットに投稿するスクリプトは、接続の最初の行として {"type":"auth","token":"<token>"} を送信できます。ここで <token> は CLAUDE_CODE_MESSAGING_TOKEN の値です。Claude Code が行を要求するかどうかはプラットフォームに依存します。

  • macOS と Linux(WSL 2 を含む): 行はオプションです。Claude Code は認証行の有無にかかわらず接続を受け入れます。
  • ネイティブ Windows: 行は必須です。Claude Code は最初の行が有効な認証行でない接続を閉じ、その接続からは何も配信しません。

投稿するメッセージの準備ができたときにのみ接続を開きます。Claude Code は 30 秒以内に完全な行を送信していない接続を閉じるため、遅いコマンドの出力をまずキャプチャしてから接続を開いて送信します。

Claude Code はソケットに到着するメッセージを、1 つの例外と 1 つの前提条件を除いて、他のピアメッセージと同じインバウンドコントロールを通して実行します。

  • 独自の子メッセージ: crossSessionInbound 値が適用されない場合、Claude Code はセッションの独自の子プロセス(フックや Bash コマンドなど)から来たことを検証したメッセージを配信します。これらは独自のセッションのソケットに投稿します。
    • Linux(WSL 2 内を含む)では、Claude Code は既に終了した子についても、プロセス証拠によって検証できます。macOS では、投稿プロセスがまだ実行中の場合のみそのように検証でき、Claude Code がプロセス ID 1 として実行されるコンテナではプロセス証拠がまったくありません。ネイティブ Windows でも同様です。
    • 投稿プロセスが終了した後の macOS と Claude Code がプロセス ID 1 として実行されるコンテナでは、そのプロセス証拠がなく、Claude Code は代わりに接続を開いた認証行でセッションのエクスポートされた CLAUDE_CODE_MESSAGING_TOKEN を送信した子を検証します。ネイティブ Windows では、そのトークンが Claude Code が独自の子メッセージを検証する唯一の方法です。
    • Claude Code がどちらの方法でも検証できない場合、それはメッセージを権限クラスを主張しない他のメッセージのように扱うため、権限プロンプトをバイパスするセッションは承認のためにそれを保留します。
  • サンドボックス化されたセッション: Bash コマンドがサンドボックス内からソケットに到達できるかどうかを、サンドボックスの Unix ソケット設定 sandbox.network.allowAllUnixSockets と sandbox.network.allowUnixSockets で制御します。

クロスセッションメッセージングを制限する

メッセージごとのデフォルトを超えて、2 つの方法でメッセージングを狭めることができます。マシンを超えたメッセージが出発する前に承認を要求するか、セッションまたは組織のメッセージングをオフにします。

クロスマシンメッセージの承認を要求する

isolatePeerMachinesを true に設定して、SendMessage がこのマシンを超えたセッションに到達する前に明示的な承認を要求します。

{
  "isolatePeerMachines": true
}

これが設定されている場合、Claude Code は、bypassPermissions モード(通常の権限プロンプトをスキップする)でも、Claude のメッセージがこのマシンを超えたセッションに出発する前に承認を求めます。任意の設定スコープからの true が適用されるため、チェックインされたプロジェクトファイルは要件をオンにできますが、オフにはできません。Claude Code は同じマシン上のセッション間のメッセージをプロンプトしません。

クロスセッションメッセージングをオフにする

受信と送信は別のコントロールであるため、必要な方向をオフにするか、両方をオフにします。到着するメッセージには crossSessionInbound を使用し、Claude がここで送信またはリストできるものには権限ルールを使用します。

  • 受信を停止: crossSessionInbound を refuse に設定し、Claude Code はインバウンドピアメッセージをドロップし、配信しません。プロジェクトまたはローカル設定から、refuse はすべての他のソースに適用され、ユーザー設定から、管理設定または --settings フラグが値を設定しない限り適用されます。
  • 送信とリストを停止: SendMessage と ListAgents に名前を付ける権限拒否ルールを追加します。両方は指定子なしでベアツール名を取ります。

管理者は、管理設定で組織の両側をオフにでき、拒否ルールと refuse を組み合わせることができます。

{
  "permissions": {
    "deny": ["SendMessage", "ListAgents"]
  },
  "crossSessionInbound": "refuse"
}

これが設定されている場合、Claude Code は各セッションのインボックスソケットをバインドしますが、それに到着するすべてのメッセージをドロップし、Claude に何も配信しません。SendMessage を拒否すると、同じツールが両方に機能するため、サブエージェントとエージェントチームチームメイトへのメッセージングも削除されます。拒否するセッションは、独自の /status またはマシン上の他のセッションのリストに目に見える変化を示さないため、確認するには、ステータスではなく、そのセッションに適用される設定ファイルを確認してください。

利用可能性

クロスセッションメッセージングには、macOS、Linux、WSL 2 では Claude Code v2.1.224 以降が必要です。ネイティブ Windows では v2.1.234 以降が必要です。利用可能性と Claude がメッセージを送信できるセッションは、オペレーティングシステム、プロバイダー、設定によって異なります。

  • オペレーティングシステム: macOS、Windows、Linux(WSL 2 内の Linux を含む)で利用可能です。

  • このマシン上のセッション: Amazon Bedrock、Claude Platform on AWS、Google Cloud の Agent Platform、Microsoft Foundry を含むすべてのプロバイダーで利用可能です。また、フィーチャーフラグ取得がオフで実行されるセッションでも利用可能です。これらのプロバイダーでフラグ取得がオフの場合、同一マシン上のメッセージングには Claude Code v2.1.248 以降が必要です。Claude Code はこれらのメッセージを セッションごとのソケットを通じてマシン上で配信し、Anthropic サーバーを経由することはありません。

    セッションがメッセージを受け取らないようにするには、crossSessionInboundをrefuseに設定してください。

  • このマシンを超えたセッション: Claude は ウェブ上の Claude Codeセッションと、Remote Control に接続されているセッションから他のマシン上のセッションを検出します。このセッションのアクティブな認証として claude.ai サインインが必要であり、他の Remote Control 要件も必要です。Claude は API キーまたは Amazon Bedrock、Claude Platform on AWS、Google Cloud の Agent Platform、Microsoft Foundry ではこれらのセッションを検出できません。

セッションを確認するには、/list-agentsを入力してください。/peersとしても利用可能です。結果は、フィーチャーを持たないセッションと、SendMessageツールの欠落や送信の拒否など、より狭い範囲でメッセージをブロックしたセッションを区別します。

  • /list-agentsが認識されない: セッションはクロスセッションメッセージングを持っていません。上記の要件を確認してください。バージョン要件についてはclaude --versionから始めてください。
  • /list-agentsは機能するが、送信が到着しなかった: メッセージングはオンであり、より狭い範囲の何かが適用されます。
    • 拒否ルール: 権限拒否ルールはSendMessageとListAgentsツールを削除します。
    • インバウンドコントロール: 受信セッションのインバウンドコントロールは、送信したものを保持またはドロップできます。
    • クラウドセッションが見つからない: クラウドセッションは、このセッションが Remote Controlに接続されている間のみ表示されます。
    • 他のマシンのセッションが見つからない: 別のマシン上のセッションは、Remote Controlで実行され、このセッションも接続されている場合にのみ表示されます。
    • 他のマシンのセッションがoffline: offlineとしてリストされているセッションへのメッセージは通過しますが、そのセッションのマシンが再接続した後にのみ到着します。
    • クラウドまたは他のマシンのセッションが can't receive cross-session messages: この状態でリストされているセッションへのメッセージはこのマシンから送信されず、SendMessage の結果は Not sent で始まります。
    • 古いクラウドまたは他のマシンのセッションが見つからない: Claude Code はこれらのセッションリストを最新順に読み込み、制限されたページ数の後に停止するため、Claude はそれらのページを超えて落ちたセッションを名前でメッセージすることはできません。

メッセージング機能を持つセッションでは、/statusはセッション自身のインボックスアドレスを含むPeer address行も表示するか、Claude Code が インボックスをセットアップできなかった場合はunavailableと理由を表示します。

制限

ここの制限はメッセージングチャネル自体の特性であり、機能が実行される場所に適用されます。プラットフォームとプロバイダーのギャップについては、代わりに利用可能性を参照してください。

  • プレーンテキストのみ: Claude はセッション間でプレーンテキストのみを送信します。構造化されたエージェントチームプロトコルメッセージはチーム内に留まります。
  • 同じマシンメッセージサイズは上限があります: Claude Code は、シリアル化された形式が約 100 万文字を超えると、このマシン上のセッションへのメッセージを拒否します。拒否は正確なサイズに名前を付けます。受信側のセッションには何も到達しません。
  • このマシン上のセッションへの急速なバーストは送信者で拒否されます: このマシン上のセッションへのメッセージの急速なバーストがそのセッションのインボックスが受け入れるものに達すると、Claude Code は送信側のセッションでさらなる送信を拒否します。拒否はバーストに名前を付けます。Claude に残りを 1 つのメッセージにバッチするか、待機するよう伝えます。
  • メッセージループはスロットルされます: 受信側のセッションでは、Claude Code は送信者ごとに繰り返されたメッセージをレート制限し、短いウィンドウ内に到着する同一の繰り返しをドロップし、最大 50 個の受け入れられたメッセージを Claude が読むためにキューに入れます。したがって、2 つのセッション間のメッセージループは独自に停止します。