Claude Codeのプッシュ通知が来ない?それ、たぶん「仕様」です
はじめに
先日、Claude Codeに公式のスマホプッシュ通知機能が搭載されました。
長時間タスクの完了や承認待ちの発生をスマホに飛ばせるという、リモートワーク派には嬉しいアップデート。早速設定してみたのですが、すべて正しく設定したのに通知が一切来ないという状況にハマりました。
公式ドキュメントを読み、バージョンも要件を満たし、アカウントも一致、Remote Controlも有効、`Push when Claude decides` も `true`。それでも来ない。バグか?と疑い始めたところで、ようやく原因にたどり着きました。
結論から言うと、ターミナルにフォーカスしている間は通知が抑制される仕様でした。設計思想としては理にかなっているのですが、これを知らずにテストすると無限にハマります。
同じところで詰まる人を減らすために、設定の流れと判明した仕様を記録しておきます。
動作要件
Claude Code v2.1.110以降(私は2.1.122で確認)
Remote Control 機能が有効になっていること
利用プランは Pro / Max / Team / Enterprise(API キーは不可)
Team / Enterprise の場合は管理者が Remote Control トグルを有効化していること
スマホに Claude アプリ(iOS / Android)をインストール
ターミナル側とスマホ側で 同じアカウント・同じ Organization にサインイン
バージョン確認はターミナルで以下を実行:
claude --version古ければアップデート:
npm update -g @anthropic-ai/claude-code
# または
claude update設定手順
1. ターミナル側
`/config` で設定画面を開きます。
/config`Push when Claude decides` という項目を探して `true` に切り替え。Enter で保存します。
ついでに `Enable Remote Control for all sessions` も `true` にしておくと、新規セッションが自動的に Remote Control 対応になるので楽です。
2. スマホ側
Claude アプリ(iOS / Android)をインストール
ターミナルと同じアカウントでサインイン
OS の通知許可を ON
iOS なら「設定 → 通知 → Claude」で詳細を確認、Focus モードや通知サマリーから除外
Android ならバッテリー最適化から除外
3. 接続確認
`/status` でターミナル側の状態を確認します。Email、Organization、Version などが表示されます。`No mobile registered` という警告が出ていなければ、push token は正常に登録されています。
スマホアプリで「コード」タブを開き、現在進行中のセッションが一覧に表示されていれば Remote Control の同期も完了しています。
私がハマったポイント
ここまでの設定は何度も見直して、すべて正しく完了していました。
それでも通知が来ない。
軽いタスクを依頼して「終わったらプッシュ通知して」と添えても何も飛んでこない。アカウントを再確認し、アプリを再起動し、push token をリフレッシュしても変化なし。
業を煮やして、明示的に PushNotification ツールを呼ばせたところ、ターミナルのログにこう出ました。
PushNotification(タスク完了)
⎿ Not sent because you're active in this terminal.「ターミナルがアクティブだから送信していない」
これが答えでした。
「Push when Claude decides」の "decides" の意味
この機能の名前をよく見ると `Push when Claude decides` ── つまり「Claudeが必要と判断したときにプッシュする」という設計です。
その判断材料のひとつに「ユーザーが今ターミナルを見ているかどうか」が含まれている、ということ。
考えてみれば理にかなっています。ターミナルを見ながら作業している人にスマホ通知を送っても、ノイズにしかなりません。離席中・別作業中など、画面を見ていない人にだけ通知を届けるのが本来の価値です。
ただし、テスト時にこれを知らないと「設定全部正しいのに来ない」と延々悩みます。私はここで30分くらい溶かしました。
正しいテスト方法
通知の動作確認は以下の手順で行います。
ターミナルで時間のかかるタスクを依頼する
Enter を押した直後にターミナルからフォーカスを外す(別ウィンドウへ切り替え、最小化、または `Win+L` で画面ロック)
タスク完了を待つ
スマホに通知が届けば成功
私は以下のプロンプトでテストしました。
sleep 120 を実行して、終わったらプッシュ通知してEnter 押した瞬間に `Win+L` で画面ロック。2分後、ロック画面に「sleep 120 完了しました」の通知がしっかり届きました。
実用シナリオ
仕様を理解すると、この機能の便利さが見えてきます。
重いビルドを回して離席するパターン:ビルド開始後にターミナルを最小化して別作業 → 完了通知でスマホがブルッと
長時間のテスト実行を待つパターン:CI が無いプロジェクトで自前のテストスイートを走らせるとき、ターミナルを見続ける必要がない
承認待ちで止まる作業のパターン:Claude が判断に迷って権限確認を要求してきた瞬間にスマホが鳴る
外出先でも完了を把握したいパターン:自宅PCで重い処理を回しておいて、移動中にスマホで結果を受け取る
特に最後のシナリオが面白くて、これまでなら「終わったかな」と気にしながら帰宅していたのが、通知が来るまで気にせず動けるようになります。
つまずきポイントまとめ
通知が来ないとき、以下の順でチェックすると効率的です。
バージョンが v2.1.110 以上か ── `claude --version` で確認
`Push when Claude decides` が `true` か ── `/config` で確認
Remote Control が有効か ── 同じく `/config` で確認
アカウント・Organization が一致しているか ── `/status` とスマホアプリ設定で照合
OS の通知許可が ON か ── iOS は Focus モード・通知サマリーも要確認
ターミナルからフォーカスを外しているか ── ★最大の落とし穴
特に 6 番目を知らないと、1〜5 を何度見直しても解決しません。
おわりに
機能としては地味ですが、運用に組み込むと体験が大きく変わるアップデートでした。
「Claude が判断する」という仕様は、ユーザーの注意配分まで含めた設計になっていて、AI ツールが単なる自動化を超えて「気を遣う相棒」になりつつあるのを感じます。通知のオン・オフではなく、必要なときだけ届く ── この粒度の制御は、今後の AI エージェント全般のトレンドになっていくのかもしれません。
40年エンジニアやってきて、ここまで「人間の都合を察してくれるツール」が出てくるとは思いませんでした。いい時代です。





