
Claude Codeのセッション間メッセージが届かない原因
この記事は4分で読めます
こんにちは。今日も記事をご覧いただきありがとうございます。
Claude Code には、同じ PC で動いている別のセッションにメッセージを送る機能があります。
VS Code 拡張機能の Claude Code セッション(以下、ブログ開発室)から Claude Desktop のセッション(以下、全体セッション)へ送ろうとしたところ、メッセージが届かずに消えてしまいました。
原因は「権限モードの違い」でした。
起きたこと
ブログ開発室(VS Code 拡張機能・自動モード)に、全体セッション(Claude Desktop・権限をバイパス)へ作業の完了報告を送るように依頼しました。
送った後に全体セッションを確認すると、メッセージは届いていませんでした。
ブログ開発室には「held(保留)」という通知が届いており、保留のまま受け取られずに捨てられたことを知りました。
原因
権限モードの組み合わせで、届くかどうかが決まる
公式ドキュメントによると、受け取る側に特別な設定(crossSessionInbound)がない場合、2つのセッションの権限モードで扱いが変わります。
- 受け取る側が自動・手動など(確認を出すモード):基本的にそのまま届く
- 受け取る側が「権限をバイパス」:送る側もバイパスでないと保留になる
今回は受け取る側(全体セッション)がバイパス、送る側(ブログ開発室)が自動だったので、保留になりました。
Desktop と VS Code では承認ダイアログが出ない
ターミナルのセッションなら、保留されたメッセージを受け取るかどうか、承認ダイアログで選べます。
一方、VS Code 拡張機能と Claude Desktop はダイアログを出せません。そのため保留のまま期限(初期値は5分)を過ぎ、メッセージは捨てられてしまいます。
対処法
今回やったこと
送る側(ブログ開発室)も「権限をバイパス」にそろえました。
- VS Code の設定で「Claude Code」を検索し、バイパスを許可する項目を有効にする(項目名はバージョンによって違うかもしれません)
- チャット入力欄の下のモード表示から「権限をバイパス」を選ぶ
- VS Code の拡張機能を再起動する
- 短いテストメッセージを送り、相手から返信が来ることを確かめる
今回は、拡張機能を再起動したあとに初めて届きました。再起動が必須かどうかは公式ドキュメントでは確認できなかったので、通らないときに試してみる、くらいに考えておくとよさそうです。
ほかの選択肢
公式ドキュメントを読むと、ほかにも方法があります。
- 受け取る側をバイパスではなく自動モードにする:受け取る側が確認を出すモードなら、自動モードからのメッセージは基本的に届きます。後日、ブログ開発室と Claude Desktop のセッションの両方を自動モードにしてテストしたところ、拡張機能を再起動しなくても、どちらの向きでも届きました
- 受け取る側の設定で crossSessionInbound を accept にする:届いたメッセージをすべて受け取るようになります(こちらは試していません)
設定ファイルに書く場合は、次のようになります。
{
"crossSessionInbound": "accept"
}
ただし、ユーザー設定に書くと、すべてのセッションに効いてしまう点に注意が必要です。
気をつけたいこと
- バイパスモードでは、ファイルの削除や main へのマージ、本番デプロイなども確認なしで実行されます。自動モードなら止めてくれる安全判定も働かなくなります
- 別のセッションから届いたメッセージは、承認の代わりにはならず、設定の変更もできない仕組みになっています。それでも、バイパス同士だと依頼がそのまま実行されやすくなります
- 「送信成功」と出ても、相手が読んだとは限りません。保留中に同じメッセージを送り直しても、また保留されるだけです
- 拡張機能を再起動すると、セッション名が変わることがあります。返信先を名前で書いている場合は直しましょう
メッセージを届けるためだけにバイパスにするよりは、まず受け取る側のモードを見直すのがおすすめです。
参考
記事を最後まで読んでいただきありがとうございました。また次の記事でお会いしましょう。
