Claude Code には、自分の別セッションにメッセージを送る cross-session messaging という機能があります。ターミナルを2枚開いて並行作業しているとき、片方の変更をもう片方に伝えるやつです。
これ、「Windowsでは使えない」と思っている人が多いはずです。自分もそうでした。少し前の公式ドキュメントにはこう書いてありました。
Claude Code doesn't offer cross-session messaging on native Windows.
(ネイティブWindowsではセッション間メッセージングを提供していない)
8月15日時点のスナップショット(Wayback Machine)より。
これは過去の話です。 v2.1.234 で Windows 対応が入り、手元で動きました。実測と、まだ情報が食い違っている箇所を書いておきます。
一次情報
公式ドキュメント: https://code.claude.com/docs/en/cross-session-messaging
CHANGELOG: https://code.claude.com/docs/en/changelog
動作確認環境: Windows 10 Home(ネイティブ、WSLではない)+ Claude Code v2.1.241
何が変わったか
| 時点 | 記述 |
|---|---|
| 8/15 のドキュメント | 「ネイティブWindowsでは提供していない」 |
| 8/17 の CHANGELOG (v2.1.234) | Windows対応が入った(原文は下記) |
| 現在のドキュメント | 「ネイティブWindowsでは v2.1.234 以降が必要」 |
Windows: cross-session messaging is now available, so Claude Code sessions across your machines can message each other with
SendMessageand find each other withListAgents, as on macOS and Linux
実測1: 別セッションが見える
セッションを複数開いた状態で、片方に他を列挙させると、こう返ってきました。
Peer sessions (4):
work-7a [12505d] · interactive · started 49m ago
work-37 [72b59d] · interactive · started 34m ago
work-a0 [7390f5] · interactive · started 49m ago
work-f0 [f8a592] · interactive · started 7m ago
実測2: 送って、返ってくる
work-f0 にテキストを1通送ります。「work-f0 にこう伝えて」と頼むとClaudeが SendMessage で送ります。
{"success": true,
"message": "“動作確認テスト” → work-f0 (another Claude session on this machine)"}
受信側に「受信OKと1行だけ返して」と頼んでおいたら、返ってきました。
<cross-session-message from="uds:\\.\pipe\cc-msg-dc2c…" from-name="work-f0">
受信OK
</cross-session-message>
送信元アドレスが uds: に続いて \\.\pipe\ になっています。これがWindowsの named pipe(名前付きパイプ) で、実装の違いがそのまま出ています。
実測3: 「暇になったら教えて」も届く
v2.1.236 で入った notify_when_idle も試しました。別セッションが次にアイドルになったとき、1回だけ通知が来る仕組みです。購読しておいたら、work-f0 が一段落したところで届きました。
[Cross-session idle notice] "work-f0" is idle now —
it finished a turn at 08:55.
ここだけ情報が食い違っている
その notify_when_idle、CHANGELOG の記述は今も「(macOS and Linux)」のままです。
Added
notify_when_idleto cross-sessionSendMessage... opt-in, one-shot, no polling (macOS and Linux)
一方、現在の公式ドキュメントの該当セクションにOS制限はなく、条件は「両方のセッションが v2.1.236 以降」だけです。そして上のとおり、Windowsで通知が届きました。
CHANGELOG だけ見て諦めると、動く機能を使い損ねます。リリースノートと本体ドキュメントは両方見る、という教訓でした。
Windows実装はUnixソケットではなくnamed pipe
同一マシン内の配送はAnthropicのサーバーを経由しません。経路はOSで分かれます。
| OS | 配送経路 |
|---|---|
| macOS / Linux(WSL 2含む) | Unixドメインソケット |
| ネイティブWindows | named pipe |
セキュリティも別作りです。macOS/LinuxがOSユーザー単位のアクセス制限なのに対し、Windowsは接続ごとに認証トークンを最初に送ることが必須で、トークンなしの接続は1行目で切られます。
事故りそうな点: WSL 2とネイティブは混ざれない
これは踏むな、と思ったのがここです。
A session inside WSL 2 and a native Windows session on the same computer can't reach each other, because they register under different home directories and listen on different socket types.
(同じPC上でも、WSL 2内のセッションとネイティブWindowsのセッションは互いに到達できない。ホームディレクトリもソケットの種類も違うため)
Windows非対応だった頃の回避策が「WSL 2で動かす」だったので、WSL 2に逃がしたセッションとネイティブの新しいセッションが同居する環境が生まれます。互いに見えないので、どちらかに寄せる必要があります。
そのほかの条件はこちらです。
- 両側のセッションが v2.1.234 以降(
notify_when_idleは v2.1.236 以降) - Amazon Bedrock や Microsoft Foundry など、一部のプロバイダ経由では使えない
-
DISABLE_TELEMETRYやDO_NOT_TRACKでフィーチャーフラグ評価を切っていると無効 - 渡るのはテキスト1通だけ。会話履歴もファイルも渡らない
まとめ
- cross-session messaging はネイティブWindowsで動く(v2.1.234以降)。列挙・送信・返信・idle通知まで v2.1.241 で確認できた
-
notify_when_idleの CHANGELOG は今も「(macOS and Linux)」だが、ドキュメントにOS制限はなく、Windowsで動く - WindowsはUnixソケットではなくnamed pipe + トークン認証の別実装
- WSL 2のセッションとネイティブのセッションは、同じPCでも互いに見えない
関連記事
- Claude Codeの新機能、"仕事の引き継ぎ"じゃありません — 公式ドキュメントで確認した3つのズレ — この機能で何ができて何ができないか
- Claude Code の fork、既定ONのはずが使えなかった — 環境変数1つで決まっていた — 同じ8月のハマりどころ
- Claude Code の出力を35%短くしたら、情報がむしろ増えた — Concise 出力スタイルの実測
JQITのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。
エンジニア採用も行っています。もしご興味あれば覗いてみてください。
▶ 採用サイト