他の Claude Code セッションにメッセージを送信する
Claude が同じマシン上の他の Claude Code セッションをリストアップしてメッセージを送信できるようにし、他のマシンまたはクラウド上のセッションに到達します。
クロスセッションメッセージングには、macOS と Linux(WSL 2 内の Linux を含む)で Claude Code v2.1.224 以降が必要です。ネイティブ Windows では、Claude Code v2.1.234 以降が必要です。セッションが要件を満たしている場合、メッセージングは有効になっており、有効にするものはありません。プロバイダー要件とセッションがそれを持っていることを確認する方法については、利用可能性を参照してください。
クロスセッションメッセージングにより、Claude は一つの Claude Code セッションから別のセッションにメッセージを配信できます。一つのセッションでの変更が別のセッションが構築しているものを破壊する場合、Claude はあなたが気付く前にそのセッションに警告することができます。一つのセッションが別のセッションがブロックされている質問を解決する場合、Claude は答えを送信することができます。
メッセージは、一つの Claude が別の Claude に書くテキストの一部であり、送信者の会話履歴またはファイルではありません。会話全体またはそのコンテキストを移動するには、代わりにセッションを再開してください。
Claude はこのために 2 つのツールを使用します。到達できるエージェントを発見するための ListAgents と、名前でそのうちの 1 つにメッセージを配信するための SendMessage です。同じ SendMessage ツールを使用して、Claude は単一のセッションまたはチーム内のサブエージェントとエージェントチームチームメイトにもメッセージを送信できます。このページは、独立したセッション間のメッセージについて説明しています。
クロスセッションメッセージングを使用する場合
1 つのセッションが別のセッションが必要とするものを持っている場合にメッセージングを使用します。Claude は必要に応じて自動的にメッセージを送信できます。たとえば、別のセッションが実行している作業に影響する変更を加えた後、または送信するよう求めることができます。一般的なケースは次のとおりです。
- 検出結果を引き継ぐ: 1 つのセッションが破壊的な変更を発見するか決定を下すと、Claude はそれを影響を受ける領域で作業しているセッションに要約します。そこで再度説明する代わりに。
- 並列ワークツリーを調整する: セッションが別のワークツリーで同じリポジトリで作業する場合、Claude は他のセッションに何がマージされたかを伝えることができます。
- 長時間実行される作業からステータスを取得する: マイグレーションまたはテスト実行を監視しているセッションに報告させるか、そこから自分で尋ねます。そのセッションがこのマシン上にある場合、Claude は次にアイドル状態になるか終了するときに 1 つの通知を求めることもできます。
- マシン間でメッセージを送信する: 別のマシンまたはウェブ上の 1 つのセッションに到達します。
独立したセッション間でメッセージングを使用します。これらは、自分で開始して操舵するセッションです。Claude Code には、複数のセッションを実行または到達する他の各方法に専用の機能があるため、実行している内容に対して構築されたものを使用してください。
- 別のターミナルで 1 つの会話を続行するか、その コンテキストを新しいセッションと共有するには、セッションを再開してください。
- Claude が生成および監督する調整されたセッションチームの場合は、エージェントチームを使用してください。
- 1 つの場所から多くのセッションを監視および操舵するには、エージェントビューを使用してください。
- セッションをセッション間でメッセージを送信させるのではなく、電話または別のデバイスから自分で操舵するには、リモートコントロールを使用してください。
- CI 結果やチャットメッセージなどの外部イベントをセッションにプッシュするには、チャネルを使用してください。
別のセッションにメッセージを送信する
あるセッションが別のセッションで必要な情報(調査結果、ステータス、決定など)を学んだ場合、Claude はターミナル間でコピー&ペーストする代わりに、その情報を自動的に渡します。Claude は ListAgents でターゲットを検出し、SendMessage で送信するため、ユーザーがこれらのツールを呼び出す必要はありません。Claude は要求されなくてもメッセージを送信することを決定できますし、ユーザーがメッセージを促すこともできます。
自分でメッセージを促すには、別のセッションが知る必要があることや実行する必要があることを Claude に伝えます。以下の例は Claude が送信するメッセージではなく、ユーザーが入力するプロンプトです。
他のターミナルで実行中のセッションに、マイグレーションが完了したかどうかを確認してください
Claude は実際のメッセージ自体を作成するため、ユーザーのプロンプトはコンテンツを Claude に任せることができます。このプロンプトは表現方法を指定せずに要約を求めており、Claude が送信する内容は異なります。
支払い API で作業中のセッションに、今実行したことを説明してください
ターゲットを自分で指定するには、プロンプトでセッションに言及します。@ に続けてセッション名の最初の文字を入力し、タイプアヘッドからセッションを選択します。これは サブエージェントを明示的に呼び出す 場合と同じ方法です。Claude Code v2.1.232 以降が必要です。Claude Code はメンション(@api-worker など)を挿入し、Claude にそのセッションを指定するため、Claude はセッションを最初にリストアップせずにそのセッションにメッセージを送信できます。このプロンプトはメンションでターゲットを指定します。
@api-worker にスキーママイグレーションが完了したことを知らせてください
タイプアヘッドには、このマシン上の他のライブセッションが表示されます。名前の最初の文字以上が必要な場合は 2 つあります。
- このマシンを超えたセッション:クラウドまたはリモートコントロールセッションは、Claude がこのマシンを超えたセッションをリストアップまたはメッセージした後にのみタイプアヘッドに表示されるため、Claude に最初にそれらをリストアップするよう依頼してください。
- スペースまたは文字、数字、ハイフン、アンダースコア以外の文字を含む名前:
@"release notes"のようにダブルクォートで入力してください。タイプアヘッドからセッションを選択すると、Claude Code がクォートを自動的に挿入します。
ピッカーなしでメンションを入力することもできます。複数のライブセッションが指定された名前に応答する場合、Claude は送信前にどちらを意味するのかを尋ねます。
メッセージが到着したときの Claude が作成するメッセージの外観(例を含む)については、メッセージの外観 を参照してください。
メッセージ配信
受信側の Claude はアクティブなターンの間にツール呼び出しの間でメッセージを読むため、実行中のツールが中断されることはありません。受信セッションがアイドル状態の場合、Claude Code はメッセージで新しいターンを開始します。
別のセッションからのメッセージはプレーンテキストとして到着します。@ でファイルまたは MCP リソース に言及する場合、Claude は記述されたメンションを見て、Claude Code は何も添付しません。メッセージが新しいターンを開始するか、既存のターン中に到着するかに関わらず、です。Claude は依然として受信マシン上の指定されたパスを独自のツールで開くことができます。そのセッションの権限に従います。v2.1.251 より前では、新しいターンを開始したメッセージ内の @ メンションは、受信側のファイルまたは MCP リソースを添付していました。
Claude Code は以下の場合、メッセージを拒否します。
- メッセージが サイズ上限を超えている。Claude Code はそれを送信セッションで拒否します。送信前に。
- このマシン上のセッションへの急速なバースト送信が そのセッションのインボックスが受け入れる内容 に達しています。Claude Code はそのセッションへのさらなるメッセージを拒否します。
- このマシン上の返信ターゲットが、シンリンクされたターゲットや予期されたプロセスではないエンドポイントなど、安全性チェックに失敗します。クロスセッションメッセージの送信を拒否する にこれらのチェックが記載されています。
- Claude がこのセッション自体の名前にメッセージを送信する場合。Claude が到達できるセッションを確認する で説明されています。
受信セッションは到着した各メッセージを独自の インバウンドコントロール に対してチェックし、チェックは 3 つの結果のいずれかで終了します。
- 配信済み:Claude Code はメッセージを受信側の Claude に渡します。
- 保留中:Claude Code はメッセージを配信されないまま脇に置きます。保留中のメッセージは、ユーザーが承認するか、後のモードまたは設定変更がそれを許可する場合にのみ Claude に到達します。
- 拒否:Claude Code はメッセージを配信せずに削除します。
配信されると、メッセージは 使用状況 に対してユーザーが入力したプロンプトのようにカウントされ、受信側の Claude は同じ方法で送信者に返信できます。ただし、一方向クロスマシンの場合 を除きます。
権限の境界はセッションごとに保たれます。Claude は、自身のセッションで拒否またはブロックされたアクション、または独自の権限設定がブロックするアクションを別のセッションに要求しないよう指示されており、その作業をユーザーに戻すよう指示されています。受信側では、受信セッション独自の権限プロンプトとルール がメッセージが要求するすべてのものに適用されます。
別のセッションがアイドル状態になったときに通知を受け取る
Claude は、このマシン上のセッションの 1 つに、そのセッションが次にアイドル状態になるか終了するときに 1 つの通知を送り返すよう依頼できます。ここでアイドルとは、セッションがキューに入っているものがない状態でターンを完了したことを意味します。別のセッションで長いタスクを待っていて、チェックする代わりに完了したときに聞きたい場合に使用します。両方のセッションで Claude Code v2.1.236 以降が必要です。
通知をリクエストする
待機中の内容を Claude に伝えます。このプロンプトはマイグレーションセッションから通知をリクエストします。
マイグレーションセッションが作業を完了したときに教えてください
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 のみが購読でき、このマシン上のセッションのみに購読できます。サブエージェントまたはエージェントチームメイトが notify_when_idle を設定する場合、Claude Code は購読を行わず、そのことを伝えます。Claude がチームメイト、サブエージェント、またはこのマシンを超えたセッションなど、他のエージェントから通知をリクエストする場合、Claude Code は添付されたメッセージを含む呼び出し全体を拒否し、Claude に拒否を報告して、リクエストなしでメッセージを再送信できるようにします。
Claude が到達できるセッションを確認する
Claude はメッセージのターゲットを独自に検出するため、送信を依頼する前に何かを実行する必要はありません。Claude が到達できるセッションを自分で確認するには、/list-agents コマンドを実行します。最初の行(存在する場合)はこのセッション自体の名前で、他のセッションがそれにメッセージを送信するために使用する名前です。以下の行は Claude が到達できるセッションです。
- サブエージェント:現在のセッション内で実行されているエージェント。
- チームメイト:このセッション独自の エージェントチーム チームメイト。v2.1.239 より前では、チームメイトはリストに表示されませんでしたが、Claude は既に名前でメッセージを送信できました。
- 他のローカルセッション:同じマシン上で実行されている Claude Code セッション。バックグラウンドセッション を含みます。セッションは インボックスソケット をバインドするときにのみ表示されます。
- クラウドセッション:このセッションが リモートコントロール に接続されている間に表示されます。Claude Code はリストで
cloudとラベル付けします。 - 他のマシン上のリモートコントロールセッション:このセッションが リモートコントロール に接続されている間に表示され、
Remote Controlとラベル付けされます。Claude Code は、リモートコントロール接続が切断されたセッションのステータスをofflineとして表示します。
このセッションは行の 1 つではありません。Claude がこのセッション自体の名前にメッセージを送信する場合、Claude Code はそれを拒否し、ターゲットが現在のセッションであることを Claude に伝えます。v2.1.239 より前では、リストはこのセッションの名前を表示せず、Claude Code はそれに送信されたメッセージを見つけられないエージェントとして報告しました。
このセッションが リモートコントロール に接続されている間、Claude Code は /list-agents 出力からローカルセッションの詳細の一部を保留し、Claude 自体がセッションをメッセージするために検索するときに見るものは変わりません。
- 作業ディレクトリ:各ローカルセッションの作業ディレクトリを除外します。
- セッション名:人に属性付けできないセッション名を除外するため、名前が残っていない行は
(unnamed session)と読みます。 - 最初の行:このセッション自体の名前を持つ行を除外します。ユーザーがこのターミナルでその名前を入力した場合を除き、
--nameまたは/renameと名前を使用して、セッションを起動または再開してから。
出力が何かをリストアップする場合、詳細が保留されたことを示す注記で終了します。セッション独自のキーボードで /rename に続いて未使用の名前を実行すると、そのセッションに出力に表示される名前が付与されます。
Claude Code はクラウドおよびリモートコントロールセッションリストを最新順に読み、各ページの制限数の後に停止します。アカウントにそれ以上のセッションがある場合、Claude Code は古いセッションをリストアップしません。Claude はそれらを名前でメッセージできません。これが発生すると、Claude Code はリストでそのことを述べ、Claude はメッセージを送信するときに同じ注記を見ます。
Claude はこのマシンを超えたセッションをローカルセッションと同じ方法で名前で送信します。他のマシン上のセッションにメッセージを送信する でこれらのメッセージがどのように移動するかを参照してください。
セッションは /rename コマンドまたは --name フラグで設定した名前に応答します。設定しない場合、Claude Code はセッション自体に名前を付けます。インタラクティブセッションの場合、これは 実行中のセッションのリスト に表示される名前です。
セッションの名前を変更する場合、Claude Code は他のセッションがセッションの名前を検索するために使用する共有レコードも更新します。そのレコードを更新できない場合、他のセッションが古い名前を表示する可能性があることを /rename 出力で警告します。--debug でセッションを実行し、Claude Code は失敗した更新の原因をログに記録します。
セッションの名前を変更するか、このマシン上の別のライブセッションが既に使用している名前でインタラクティブセッションを開始または再開する場合、Claude Code は既に名前を持つセッションに名前を残し、ユーザーの名前をバリアントに変更します。セッションは、例えば 1 つが以前のバージョンの Claude Code を実行している場合や、共有名が Claude Code が生成した名前である場合など、名前を共有できます。このセッションがリモートコントロールに接続されていない限り、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 以降と、リストに表示される ターゲットが必要です。v2.1.225 より前では、Claude は到着したメッセージにのみ返信できました。
リストに offline として表示されるセッション(リモートコントロール接続が切断されたセッション)にメッセージを送信できます。送信は通過しますが、メッセージはそのセッションのマシンが再接続した後にのみ到着します。Claude は送信するときにそのことを伝えられます。
同じマシン配信は機能が有効な場所ならどこでも機能します。各セッションはディスク上のファイルに自身を登録します。Claude がローカルセッションをリストアップまたはメッセージするとき、Claude Code はそれらのファイルを読んでセッションを検出するため、2 つのセッションは同じファイルを見ることができる場合にのみ互いに到達できます。
コンテナは独自のファイルシステムを持つため、コンテナ内のセッションとホスト上のセッションは互いに到達できません。同じコンテナ内の 2 つのセッションは依然としてメッセージを送信できます。セルフホストランナー を含みます。WSL 2 内のセッションと同じコンピュータ上のネイティブ Windows セッションも互いに到達できません。異なるホームディレクトリに登録され、異なるソケットタイプでリッスンするためです。
このセッションがリモートコントロールに接続されている間、別のマシン上のセッションにメッセージを送信する場合、Claude Code はそのセッションの会話でこのセッションのリモートコントロール名の下にメッセージを表示します。そのマシン上の Claude はその名前に返信できます。例えば、このセッションが laptop-graceful-unicorn としてリモートコントロールに接続されており、デスクトップにメッセージを送信する場合、デスクトップセッションで laptop-graceful-unicorn の下にメッセージが表示されます。
このセッションがこのマシンを超えたセッションに Claude が送信するときにリモートコントロールに接続されていない場合、メッセージは依然として通過しますが、返信アドレス なしで、受信側の 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) のようになります。v2.1.247 より前では、Claude Code は到着したメッセージをプレビューではなく完全に表示していました。
以下のいずれかで完全なテキストが表示されます。
Ctrl+Oを押してトランスクリプトビューアを開き、送信者のセッション名の下で完全なテキストを読みます。--verboseで開始されたセッションでは、Claude Code はプレビューではなく完全なテキストを表示します。
プレビューは表示内容のみを短縮します。展開するかどうかに関わらず、Claude はメッセージ全体を読みます。
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 mode は、バイパス権限が利用可能なセッションではバイパスとしてカウントされ、auto、acceptEdits、dontAsk はプロンプトとしてカウントされます。
- 受信側セッションが権限をプロンプト: Claude Code は各メッセージを配信します。送信側セッションが権限プロンプトをバイパスしていることを識別する場合のみ、承認のために 1 つを保留します。
- 受信側セッションが権限をバイパス: Claude Code は各メッセージを承認のために保留します。送信側セッションも同様にバイパスしていることを識別する場合のみ、1 つを配信します。
デフォルトがメッセージを保留する場合、Claude Code は受信側セッションで承認ダイアログを開きます。ダイアログには送信者とプレビューが表示されます。
- Approve はそのメッセージを Claude に配信します。
- Deny またはダイアログを閉じると、ドロップされます。
- ダイアログが
dialogExpiry期限を過ぎて未回答のままの場合、Claude Code はそれを閉じてメッセージをドロップします。期限のデフォルトは 5 分です。 - バックグラウンドセッションにターミナルが接続されていない場合、Claude Code はダイアログを期限を過ぎて開いたままにします。接続後、ダイアログが完全な期限期間未回答のままの場合、Claude Code はそれを閉じてメッセージをドロップします。
- このセッションの権限モードクラスがメッセージが保留されている間に変更される場合、Claude Code はインバウンドルールを再適用し、現在受け入れるメッセージを配信し、通知を表示します。
- 設定変更により
refuseがメッセージが保留されている間に適用される場合、Claude Code はすべての保留中のメッセージをドロップし、到達できる各送信者に拒否を報告します。
送信者が同じマシン上のセッションの場合、Claude Code は受信者がメッセージを保留するときに通知を送信し、受信者が後でメッセージを配信、拒否、または期限切れにするときにフォローアップを送信します。通知は送信側の Claude に到達するため、他のセッションが読んでいないメッセージで待機し続けないようになります。
インタラクティブな送信セッションでは、通知はトランスクリプトに表示されます。claude -p 送信者はストリーム出力で情報提供用の system メッセージとして受け取ります。claude -p 送信者への通知には Claude Code v2.1.271 以降が必要です。
受信者がメッセージを拒否する場合、送信者への通知は受信者がクロスセッションメッセージを受け入れていないことを示し、送信者の Claude に待機または再送信しないよう指示します。
Claude Code は最大 100 個のメッセージを保留し、配信キューとは別に、それを超えると最も古いものをドロップします。
非インタラクティブセッション
Claude Code は claude -p セッションのインボックスソケットをインタラクティブなものと同様にバインドするため、長時間実行される -p ワーカーはメッセージを受信でき、リストに表示されます。ベアモードでセッションを開始する場合、Claude Code はソケットをバインドしないため、そのセッションはメッセージを受信できず、エージェントリストに表示されません。
-p セッションは承認ダイアログを表示できません。インバウンドデフォルトがそこでメッセージを保留する場合、Claude Code はダイアログが使用する同じ dialogExpiry 期限(デフォルトは 5 分)でそれを保持します。
- 期限前: モードまたは設定変更によりメッセージが許可される場合、Claude Code はそれを配信します。
- 期限後: Claude Code はメッセージをドロップし、到達できる送信者に期限切れとして報告します。
dialogExpiry を "never" に設定して、デフォルト保留メッセージをセッション終了まで保持します。明示的な hold 設定で保留されたメッセージは期限切れになりません。Claude Code はそれを配信するだけで、後で accept が適用される場合です。
セッションがメッセージが保留されたまま終了する場合、Claude Code はそれらを到達できる各送信者に期限切れとして報告します。v2.1.225 より前では、-p セッションに期限は適用されませんでした。保留中のメッセージは、実行中の権限モード変更によって配信されない限り保留されたままで、保留中のメッセージでセッションが終了した場合、送信者に何も報告されませんでした。
-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を含むすべてのフックが実行される前に変数をエクスポートします。 - 各セッションは独自のソケットをエクスポートし、親セッションから継承されたものは決してエクスポートしません。
- メッセージングがオンで開始するセッションでは、Claude Code は
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 がトークンを参照するタイミングと、検証できないメッセージをどのように扱うかを説明しています。
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としてリストされているセッションへのメッセージは通過しますが、そのセッションのマシンが再接続した後にのみ到着します。 - 古いクラウドまたは他のマシンのセッションが見つからない: Claude Code は これらのセッションリストを最新順に読み込み、制限されたページ数の後に停止します。そのため、Claude はそれらのページを超えて落ちたセッションを名前でメッセージすることはできません。
- 会話を開始する: 他のマシン上のセッションにメッセージを送信するは、このマシンを超えたセッションとの会話を開始することについて説明しています。
- 拒否ルール: 権限拒否ルールは
メッセージング機能を持つセッションでは、/statusはセッション自身のインボックスアドレスを含むPeer address行も表示するか、Claude Code が インボックスをセットアップできなかった場合はunavailableと理由を表示します。
制限
ここの制限はメッセージングチャネル自体の特性であり、機能が実行される場所に適用されます。プラットフォームとプロバイダーのギャップについては、代わりに利用可能性を参照してください。
- プレーンテキストのみ: Claude はセッション間でプレーンテキストのみを送信します。構造化されたエージェントチームプロトコルメッセージはチーム内に留まります。
- 同じマシンメッセージサイズは上限があります: Claude Code は、シリアル化された形式が約 100 万文字を超えると、このマシン上のセッションへのメッセージを拒否します。拒否は正確なサイズに名前を付けます。受信側のセッションには何も到達しません。
- このマシン上のセッションへの急速なバーストは送信者で拒否されます: このマシン上のセッションへのメッセージの急速なバーストがそのセッションのインボックスが受け入れるものに達すると、Claude Code は送信側のセッションでさらなる送信を拒否します。拒否はバーストに名前を付けます。Claude に残りを 1 つのメッセージにバッチするか、待機するよう伝えます。v2.1.236 より前では、Claude Code はそれらの送信を送信されたと報告しましたが、受信側のセッションはそれらをドロップしました。
- メッセージループはスロットルされます: 受信側のセッションでは、Claude Code は送信者ごとに繰り返されたメッセージをレート制限し、短いウィンドウ内に到着する同一の繰り返しをドロップし、最大 50 個の受け入れられたメッセージを Claude が読むためにキューに入れます。したがって、2 つのセッション間のメッセージループは独自に停止します。レート制限、繰り返しチェック、またはキューキャップがこのマシン上のインタラクティブセッションからメッセージをドロップする場合、Claude Code はそのセッションにどちらがドロップされたかを伝え、その Claude に右に再送信しないよう伝えます。
関連リソース
- サブエージェントとエージェントチーム: 単一のセッションまたはチーム内のメッセージング
- バックグラウンドエージェント: メッセージを送信する可能性のある並列セッションをディスパッチおよび監視します
- リモートコントロール: このセッションを接続して、他のマシン上のセッションに到達します
- 設定:
crossSessionInbound、isolatePeerMachines、dialogExpiry - 権限モード: インバウンドデフォルトの 2 つのクラスの背後にあるモード
- ツールリファレンス: ツールテーブルの
ListAgentsとSendMessage行 - エージェントを並列で実行: Claude Code が複数のエージェントを実行する方法を比較します