> ## Documentation Index
> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

> [!NOTE]
>
> クロスセッションメッセージングには、macOS と Linux（WSL 2 内の Linux を含む）で Claude Code v2.1.224 以降が必要です。ネイティブ Windows では、Claude Code v2.1.234 以降が必要です。セッションが要件を満たしている場合、メッセージングは有効になっており、有効にするものはありません。プロバイダー要件とセッションがそれを持っていることを確認する方法については、[利用可能性](#availability)を参照してください。

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

メッセージは、一つの Claude が別の Claude に書くテキストの一部であり、送信者の会話履歴またはファイルではありません。会話全体またはそのコンテキストを移動するには、代わりに[セッションを再開](https://code.claude.com/docs/ja/sessions.md#resume-a-session)してください。

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

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

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

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

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

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

```text wrap theme={null}
Ask the session running in my other terminal whether the migration finished
```

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

```text wrap theme={null}
Explain what we just did to the session working on the payments API
```

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

```text wrap theme={null}
Let @api-worker know the schema migration finished
```

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

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

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

メッセージが到着したときの Claude が作成するメッセージの外観（例を含む）については、[メッセージの外観](#what-a-message-looks-like) を参照してください。

### メッセージ配信

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

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

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

* メッセージが [サイズ上限を超えている](#limitations)。Claude Code はそれを送信セッションで拒否します。送信前に。
* このマシン上のセッションへの急速なバースト送信が [そのセッションのインボックスが受け入れる内容](#limitations) に達しています。Claude Code はそのセッションへのさらなるメッセージを拒否します。
* このマシンを超えたセッションが [クロスセッションメッセージを受信できないとリストに表示されている](#message-sessions-on-other-machines)。Claude Code は、メッセージがこのマシンを離れる前に送信セッションで拒否します。
* このマシン上の返信ターゲットが、シンリンクされたターゲットなど、安全性チェックに失敗します。[クロスセッションメッセージの送信を拒否する](https://code.claude.com/docs/ja/errors.md#refusing-to-send-a-cross-session-message) にこれらのチェックが記載されています。

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

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

配信されると、メッセージはユーザーが入力したプロンプトと同様に [使用量](https://code.claude.com/docs/ja/costs.md) にカウントされます。受信側の Claude は `SendMessage` で送信者に返信できます。ただし、[他のマシンおよびクラウドセッションからの返信](#replies-from-other-machines-and-cloud-sessions) と [クロスセッションメッセージングをオフにする](#turn-off-cross-session-messaging) で説明されている場合を除きます。

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

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

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

#### 通知をリクエストする

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

```text wrap theme={null}
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 に通知するため、待機を続けません。

各側の [インバウンドコントロール](#control-inbound-messages) はメッセージのような通知に適用されます。

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

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

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

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

* **サブエージェント**：現在のセッション内で実行されているエージェント。
* **チームメイト**：このセッション独自の [エージェントチーム](https://code.claude.com/docs/ja/agent-teams.md) チームメイト。
* **他のローカルセッション**：同じマシン上で実行されている Claude Code セッション。[バックグラウンドセッション](https://code.claude.com/docs/ja/agent-view.md) を含みます。セッションは [インボックスソケット](#the-sessions-inbox-socket) をバインドするときにのみ表示されます。
* **[クラウドセッション](https://code.claude.com/docs/ja/claude-code-on-the-web.md)**：このセッションが [リモートコントロール](https://code.claude.com/docs/ja/remote-control.md) に接続されている間に表示されます。
* **他のマシン上のリモートコントロールセッション**：このセッションが [リモートコントロール](https://code.claude.com/docs/ja/remote-control.md) に接続されている間に表示され、`Remote Control` とラベル付けされます。Claude Code は、リモートコントロール接続が切断されたセッションのステータスを `offline` として表示します。

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

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

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

セッションは [`/rename`](https://code.claude.com/docs/ja/commands) コマンドまたは [`--name`](https://code.claude.com/docs/ja/cli-reference#cli-flags) フラグで設定した名前に応答します。設定しない場合、Claude Code はセッション自体に名前を付けます。インタラクティブセッションの場合、これは [実行中のセッションのリスト](https://code.claude.com/docs/ja/sessions.md#name-your-sessions) に表示される名前です。

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

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

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

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

| 他のセッションが実行される場所 | メッセージの移動方法 |
| :- | :- |
| このマシン上 | macOS および Linux 上のセッションごとのソケット、またはネイティブ Windows 上のセッションごとの名前付きパイプ。Anthropic サーバーを通じて決してない |
| 他のマシンの 1 つ | Anthropic サーバーを通じて、そのマシンの [リモートコントロール](https://code.claude.com/docs/ja/remote-control.md) 接続を通じて到着 |
| [クラウド](https://code.claude.com/docs/ja/claude-code-on-the-web.md) | Anthropic サーバーを通じて、クラウドセッションに直接 |

他のマシン上のセッションとの会話を開始するには、Claude Code v2.1.225 以降と、[リストに表示される](#see-which-sessions-claude-can-reach) ターゲットが必要です。

[リスト](#see-which-sessions-claude-can-reach) のセッションの行には、Claude がそのセッションにメッセージを送信したときの動作を変える状態が表示されることがあります。

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

コンテナ内のセッションとホスト上のセッションは互いに到達できません。同じコンテナ内の 2 つのセッションは依然としてメッセージを送信できます。[セルフホストランナー](https://code.claude.com/docs/ja/self-hosted-environments) を含みます。WSL 2 内のセッションと同じコンピュータ上のネイティブ Windows セッションも互いに到達できません。

このマシンを超えたメッセージが送信される前にユーザーの承認を要求するには、[`isolatePeerMachines`](#require-approval-for-cross-machine-messages) を設定します。

#### 他のマシンおよびクラウドセッションからの返信

[クラウドセッション](https://code.claude.com/docs/ja/claude-code-on-the-web.md)（[セルフホストランナー](https://code.claude.com/docs/ja/self-hosted-environments) 上のものを含む）は、メッセージに [返信アドレス](#what-a-message-looks-like) が含まれている場合でも、`SendMessage` を使用して別のマシンからのメッセージに応答できません。メッセージ自体は到着します。クラウドセッションの応答は、[claude.ai/code](https://claude.ai/code) のトランスクリプトで確認してください。

Claude がこのマシンを超えたセッションに送信するときにこのセッションが Remote Control に接続されていない場合、メッセージは依然として送信されますが、[返信アドレス](#what-a-message-looks-like) は含まれません。受信側の Claude はそれに応答できません。

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

セッション 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` を押して[トランスクリプトビューア](https://code.claude.com/docs/ja/interactive-mode.md#transcript-viewer)を開き、送信者のセッション名の下で完全なテキストを読みます。
* [フルスクリーンレンダリング](https://code.claude.com/docs/ja/fullscreen.md#use-the-mouse)では、メッセージの一部が省略されているプレビュー行をクリックすると、その場で展開されます。
* [`--verbose`](https://code.claude.com/docs/ja/cli-reference#cli-flags) で開始されたセッションでは、Claude Code はプレビューではなく完全なテキストを表示します。

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

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

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

```text wrap theme={null}
Schema migration finished
The new column is tenant_id, and rebasing on main is safe now.
```

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

[`crossSessionInbound`](https://code.claude.com/docs/ja/settings-reference#crosssessioninbound) を設定して、セッションが他のセッションから到着するメッセージをどのように処理するかを選択します。

| 値 | 動作 |
| :- | :- |
| `accept` | Claude Code は各メッセージを Claude に配信します |
| `hold` | Claude Code は各メッセージの通知を表示し、配信しません。後で `accept` が適用される場合、[優先順位ルール](https://code.claude.com/docs/ja/settings-reference.md#crosssessioninbound)に従って、Claude Code は保留中のメッセージをリリースします |
| `refuse` | Claude Code は各メッセージを配信せずにドロップします |

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

どの値が適用されるかを確認するには、[設定リファレンス](https://code.claude.com/docs/ja/settings-reference.md#crosssessioninbound)の `crossSessionInbound` 優先順位ルールに従います。

値が適用されない場合、Claude Code は 2 つのセッションの権限モードに基づいてメッセージごとに決定します。[権限プロンプトをバイパス](https://code.claude.com/docs/ja/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)するセッションを 1 つのクラスにグループ化し、他のすべてのセッションを別のクラスにグループ化します。plan モードは、バイパス権限が利用可能なインタラクティブなターミナルセッションではバイパスとしてカウントされ、[auto](https://code.claude.com/docs/ja/permission-modes.md#eliminate-prompts-with-auto-mode)、`acceptEdits`、`dontAsk` はプロンプトとしてカウントされます。

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

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

* **Approve** はそのメッセージを Claude に配信します。
* **Deny** またはダイアログを閉じると、ドロップされます。
* ダイアログが [`dialogExpiry`](https://code.claude.com/docs/ja/settings-reference#dialogexpiry) 期限を過ぎて未回答のままの場合、Claude Code はそれを閉じてメッセージをドロップします。期限のデフォルトは 5 分です。
* [バックグラウンドセッション](https://code.claude.com/docs/ja/agent-view.md)にターミナルが接続されていない場合、Claude Code はダイアログを期限を過ぎて開いたままにします。接続後、ダイアログが完全な期限期間未回答のままの場合、Claude Code はそれを閉じてメッセージをドロップします。
* このセッションの権限モードクラスがメッセージが保留されている間に変更される場合、Claude Code はインバウンドルールを再適用し、現在受け入れるメッセージを配信し、通知を表示します。

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

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

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

Claude Code は [`claude -p`](https://code.claude.com/docs/ja/headless) セッションのインボックスソケットをインタラクティブなものと同様にバインドするため、長時間実行される `-p` ワーカーはメッセージを受信でき、リストに表示されます。[bare モード](https://code.claude.com/docs/ja/headless.md#start-faster-with-bare-mode)でセッションを開始する場合、Claude Code はソケットをバインドしないため、そのセッションはメッセージを受信できず、エージェントリストに表示されません。

`-p` セッションは承認ダイアログを表示できません。[インバウンドデフォルト](#control-inbound-messages)がそこでメッセージを保留する場合、Claude Code はダイアログが使用する同じ [`dialogExpiry`](https://code.claude.com/docs/ja/settings-reference#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 ではネームドパイプです。どのセッションの種類がバインドするかについては、[非インタラクティブセッション](#non-interactive-sessions)を参照してください。

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

* `/status` は `Peer address` 行に表示します。パスは `uds:` で始まります。
* Claude Code は[フック](https://code.claude.com/docs/ja/hooks.md)と Bash コマンドに [`CLAUDE_CODE_MESSAGING_SOCKET`](https://code.claude.com/docs/ja/env-vars#variables) 環境変数としてエクスポートします。
  * メッセージングがオンで開始するセッションでは、Claude Code は `SessionStart` を含むすべてのフックが実行される前に変数をエクスポートします。

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

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

ソケットのパスと共に、Claude Code はセッションごとのトークンを [`CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/ja/env-vars#variables) としてエクスポートします。独自のセッションのソケットに投稿するスクリプトは、接続の最初の行として `{"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 つの前提条件を除いて、他のピアメッセージと同じ[インバウンドコントロール](#control-inbound-messages)を通して実行します。

* **独自の子メッセージ**: `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`](https://code.claude.com/docs/ja/env-vars#variables) を送信した子を検証します。ネイティブ Windows では、そのトークンが Claude Code が独自の子メッセージを検証する唯一の方法です。
  * Claude Code がどちらの方法でも検証できない場合、それはメッセージを権限クラスを主張しない他のメッセージのように扱うため、権限プロンプトをバイパスするセッションは承認のためにそれを保留します。
* **サンドボックス化されたセッション**: Bash コマンドが[サンドボックス](https://code.claude.com/docs/ja/sandboxing.md)内からソケットに到達できるかどうかを、サンドボックスの Unix ソケット設定 [`sandbox.network.allowAllUnixSockets` と `sandbox.network.allowUnixSockets`](https://code.claude.com/docs/ja/settings-reference#sandbox-settings) で制御します。

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

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

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

[`isolatePeerMachines`](https://code.claude.com/docs/ja/settings-reference#isolatepeermachines)を `true` に設定して、`SendMessage` がこのマシンを超えたセッションに到達する前に明示的な承認を要求します。

```json theme={null}
{
  "isolatePeerMachines": true
}
```

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

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

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

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

管理者は、[管理設定](https://code.claude.com/docs/ja/managed-settings.md)で組織の両側をオフにでき、拒否ルールと `refuse` を組み合わせることができます。

```json theme={null}
{
  "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 を含むすべてのプロバイダーで利用可能です。また、[フィーチャーフラグ取得](https://code.claude.com/docs/ja/env-vars.md#features-that-need-feature-flag-fetching)がオフで実行されるセッションでも利用可能です。これらのプロバイダーでフラグ取得がオフの場合、同一マシン上のメッセージングには Claude Code v2.1.248 以降が必要です。Claude Code はこれらのメッセージを [セッションごとのソケット](#the-sessions-inbox-socket)を通じてマシン上で配信し、Anthropic サーバーを経由することはありません。

  セッションがメッセージを受け取らないようにするには、[`crossSessionInbound`](#turn-off-cross-session-messaging)を`refuse`に設定してください。

* **このマシンを超えたセッション**: Claude は [ウェブ上の Claude Code](https://code.claude.com/docs/ja/claude-code-on-the-web.md)セッションと、Remote Control に接続されているセッションから他のマシン上のセッションを検出します。このセッションのアクティブな認証として claude.ai サインインが必要であり、他の [Remote Control 要件](https://code.claude.com/docs/ja/remote-control.md#requirements)も必要です。Claude は API キーまたは Amazon Bedrock、Claude Platform on AWS、Google Cloud の Agent Platform、Microsoft Foundry ではこれらのセッションを検出できません。

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

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

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

## 制限

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

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

## 関連リソース

* [サブエージェント](https://code.claude.com/docs/ja/sub-agents.md#resume-subagents)と[エージェントチーム](https://code.claude.com/docs/ja/agent-teams.md#messages-between-agents): 単一のセッションまたはチーム内のメッセージング
* [バックグラウンドエージェント](https://code.claude.com/docs/ja/agent-view.md): メッセージを送信する可能性のある並列セッションをディスパッチおよび監視します
* [リモートコントロール](https://code.claude.com/docs/ja/remote-control.md): このセッションを接続して、他のマシン上のセッションに到達します
* [チャネル](https://code.claude.com/docs/ja/channels.md): CI 結果やチャットメッセージなどの外部イベントをセッションにプッシュします
* [設定](https://code.claude.com/docs/ja/settings-reference.md#all-settings): `crossSessionInbound`、`isolatePeerMachines`、`dialogExpiry`
* [権限モード](https://code.claude.com/docs/ja/permission-modes.md): インバウンドデフォルトの 2 つのクラスの背後にあるモード
* [ツールリファレンス](https://code.claude.com/docs/ja/tools-reference.md): ツールテーブルの `ListAgents` と `SendMessage` 行
* [エージェントを並列で実行](https://code.claude.com/docs/ja/agents.md): Claude Code が複数のエージェントを実行する方法を比較します
