Claude CodeのPushNotificationでスマホに完了通知を送る設定
PushNotificationツールとagentPushNotifEnabledで、長いタスクの完了をスマホに届ける設定、届く条件、Bedrockなどで使えない理由を解説します。
席を外している間に走らせたテストやリファクタリングが終わったら、スマホに知らせてほしい。Claude Codeには、そのためのPushNotificationツールがあります。agentPushNotifEnabledをtrueにすると、Claude自身が「通知する価値がある」と判断した場面で、スマホにpushを送れるようになります。
ただし、設定を入れただけでは届きません。Remote Controlの接続、スマホ側のアプリ、使っている接続経路の3つがそろって初めて動きます。この記事では、ツールの役割、設定キー、届く条件、使えない環境、届かないときの切り分けを順に見ていきます。
PushNotificationツールは何を送るのか
PushNotificationは、Claude Codeの組み込みツールのひとつです。ツール一覧の説明では、デスクトップ通知を送り、Remote Controlが接続されていればスマホにもpushを送るツールとされています。長時間タスクやスケジュール実行の結果を、席を外した人に届けるための道具です。権限プロンプトは必要ありません。
追加されたのはv2.1.110(2026年4月15日)です。changelogには「Remote Controlと『Push when Claude decides』の設定が有効なときに、Claudeがモバイルpushを送れる」と書かれています。
通知を出すかどうかを決めるのはClaudeです。たいていは、長いタスクが終わったときや、続行にあなたの判断が要るときに送ります。イベントごとの細かい設定項目はなく、あるのは次の2つのオン・オフだけです。
agentPushNotifEnabledを有効にする
agentPushNotifEnabledは、Claudeが「送る価値がある」と判断したときのpushを許可する真偽値です。既定はfalseで、/configではPush when Claude decidesとして出てきます。
{
"agentPushNotifEnabled": true
}settings.jsonのスコープは「どのファイルでも可」です。この選択はアカウントに同期されます。古いバージョンが~/.claude.jsonに残した値も読み込まれます。
手順は/configだけでも済みます。
スマホにpushが届くまでの4段階
- 1
Claudeアプリを入れる
iOSまたはAndroidにClaudeのモバイルアプリを入れます。
- 2
同じアカウントでサインインする
ターミナルのClaude Codeで使っているアカウントと組織に合わせます。
- 3
OSの通知を許可する
アプリの初回起動で出る通知の許可を承諾します。
- 4
/configでトグルを入れる
ターミナルで
/configを開き、Push when Claude decidesをオンにします。
Remote Controlの接続は別に必要です。起動方法はRemote Controlのガイドにあります。接続していない間は、pushは届きません。
inputNeededNotifEnabledは「許可待ち」の通知
似た名前のキーが、もうひとつあります。inputNeededNotifEnabledは、権限プロンプトや質問がユーザーの入力を待っているときに送るpushです。/configではPush when actions requiredにあたります。こちらもRemote Controlの接続中だけ送られ、既定はfalseです。
| 項目 | agentPushNotifEnabled | inputNeededNotifEnabled |
|---|---|---|
/configの表示 | agentPushNotifEnabledPush when Claude decides | inputNeededNotifEnabledPush when actions required |
| 送るきっかけ | agentPushNotifEnabledClaudeが送る価値ありと判断したとき | inputNeededNotifEnabled権限プロンプトや質問が待っているとき |
| 例 | agentPushNotifEnabled長いタスクの完了 | inputNeededNotifEnabled実行許可の確認 |
| 既定値 | agentPushNotifEnabledfalse | inputNeededNotifEnabledfalse |
| Remote Control | agentPushNotifEnabled接続中のみ | inputNeededNotifEnabled接続中のみ |
完了通知だけが欲しければ前者、「承認待ちで止まったままにしたくない」なら後者です。両方をオンにしても構いません。
届く条件と、使えない環境
pushがスマホに届くには、次が前提になります。
- Remote Controlが接続中であること
- 通知を許可したClaudeアプリが、同じアカウントのスマホに入っていること
/configでトグルがオンになっていること
Remote Control自体にも利用条件があります。Pro・Max・Team・Enterpriseのプランが対象で、APIキーでは使えません。TeamとEnterpriseでは、オーナーが管理設定でRemote Controlを先に有効にします。Amazon Bedrock、Google CloudのAgent Platform、Microsoft Foundryを使っている場合も、Remote Controlは使えません。ANTHROPIC_BASE_URLをapi.anthropic.com以外に向けた構成も同様です。
PushNotificationツールの説明にも、同じ制約が別の言い方で書かれています。pushの配信はAnthropicがホストする基盤を通るため、Amazon Bedrock、Claude Platform on AWS、Agent Platform、Foundryからは利用できません。
つまり、社内でBedrock経由にしている環境では、スマホpushは選択肢に入りません。そうした環境の通知は、ターミナルベルとNotificationフックで組み立てることになります。Remote Controlが使えない理由の見分け方は、requires the Anthropic APIの記事が詳しいです。
在席中は送られない
席にいるときまでスマホが鳴っては困ります。Claude Codeは、接続中のターミナルで入力している間と、そのターミナルにフォーカスがある間は、デスクトップ通知もモバイルpushも送りません。
この抑制を調整する手段は2つあります。
CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK=1: ローカルの在席判定だけを無効にし、キー入力中やフォーカス中でもデスクトップ通知を出す。サーバー側がpushを抑えることはある。v2.1.193以降で使える。詳細は在席判定を無効化する記事CLAUDE_CLIENT_PRESENCE_FILE: 指定したファイルが存在する間はpushを送らない。画面ロックの解除に合わせてファイルを作る使い方で、v2.1.181以降。設定例は画面ロック解除中のpushを止める記事
「完了通知が来ない」と感じたら、その時点で自分がターミナルを触っていなかったかも確かめてください。
届かないときの切り分け
順番に確認すると原因を絞れます。
/configにNo mobile registeredと出ていれば、スマホでClaudeアプリを開きます。アプリがpushトークンを更新し、警告は次にRemote Controlが接続したとき消えます。- iOSでは、集中モードや通知のまとめ表示がpushを抑えたり遅らせたりします。設定の通知項目でClaudeを確認します。
- Androidでは、バッテリー最適化が配信を遅らせることがあります。Claudeアプリを最適化の対象から外します。
- Remote Controlが切れていないかを見ます。接続できないときは接続の見分け方が出発点です。
ツールの返すメッセージが手がかりになる場合もあります。changelogには、過去に次のような不具合の修正が載っています。
| 修正した版 | 内容 |
|---|---|
| v2.1.152 | 内容SDKが動かすセッションで、Remote Controlが有効なのに「Mobile push not sent (Remote Control inactive)」と出ていた |
| v2.1.293 | 内容claude remote-controlで起動したセッションで「Remote Control inactive」と出ていた |
| v2.1.295 | 内容claude remote-controlのセッションで、スマホからのメッセージ直後や/configのトグルなしでも「pushを送らなかった」と報告されていた |
古いバージョンで同じメッセージが出ているなら、設定を疑う前にアップデートを試す価値があります。
Claudeに通知させる頼み方
通知するかどうかはClaudeの判断ですが、プロンプトで頼むこともできます。Remote Controlのページには、notify me when the tests finishのように頼む例があります。日本語でも、次のような頼み方が考えられます。
全テストの実行とlintの修正が終わったら、PushNotificationで結果を1行にまとめて知らせて。失敗が残った場合は失敗した件数も含めて。毎回頼むのが面倒なら、プロジェクトのCLAUDE.mdに方針を書いておく手があります。
## 通知
- 5分以上かかるタスクが終わったら、PushNotificationで完了を知らせる
- 通知の本文は、成功か失敗かと件数だけにする
- 判断が必要で作業が止まるときも、PushNotificationで理由を1行で伝えるこれはCLAUDE.mdの書き方の一例で、通知がこの文面どおりに送られると保証するものではありません。送る・送らないの最終判断は、あくまでClaudeにあります。通知が必ず欲しい節目には、フックで別経路の通知を足す選択肢もあります。
ローカル通知との関係
PushNotificationのデスクトップ通知とは別に、Claude CodeにはpreferredNotifChannelというローカル通知の設定があります。/configではLocal notificationsです。既定の"auto"では、iTerm2、Ghostty、Kittyでデスクトップ通知を出します。Terminal.appではオーディブルベルがオフのときだけベルを鳴らし、それ以外の端末では何もしません。
層を分けて整理すると、次のようになります。
| 通知の層 | 設定 | Remote Control |
|---|---|---|
| 端末のベル・デスクトップ通知 | 設定preferredNotifChannel | Remote Control不要 |
| スマホへの完了通知 | 設定agentPushNotifEnabled | Remote Control必要 |
| スマホへの許可待ち通知 | 設定inputNeededNotifEnabled | Remote Control必要 |
WezTermのように"auto"の対象外の端末では、端末側の通知は別の設定が要ります。その手順はWezTermの通知設定にまとめています。端末側とスマホ側は仕組みが別なので、両方を同時に有効にできます。
まとめ
スマホへの完了通知は、agentPushNotifEnabledをオンにし、Remote Controlを接続し、同じアカウントのClaudeアプリで通知を許可すれば動きます。許可待ちも知りたいならinputNeededNotifEnabledを足します。Bedrock、Agent Platform、Foundryの構成では配信の基盤に届かないため、端末側の通知で代替することになります。