Claude Code の純正スマホプッシュ通知が届かない時の ntfy.sh 回避策
開発環境
ツール設定
Claude Code の Remote Control 純正プッシュ通知には「PushNotification ツールが成功応答(Mobile push requested)を返すのにモバイル端末に届かない」既知不具合がある(GitHub Issue #50949、Closed as not planned)。設定(settings.json の remoteControlAtStartup / agentPushNotifEnabled が true)が正常でも届かない場合は、送信自体は成功しているためデバイストークン登録・プッシュ配信・セッション→デバイスのルーティングといったサーバー側配信の問題である可能性が高い。
回避策として、~/.claude/settings.json の Stop(作業完了)/ Notification(入力待ち)フックに curl で ntfy.sh へ POST する1行を追加し、スマホの ntfy アプリで該当トピックを subscribe すると確実に受信できる。
例: curl -s -m 5 -H 'Title: Claude Code' -H 'Tags: white_check_mark' -d 'Task completed' https://ntfy.sh/<topic>
注意点:
- トピック名は推測されにくいランダム文字列にする(トピック名が実質パスワードになるため)。
- ntfy.sh の公開サーバーは通信が非暗号化で、トピック名を知れば誰でも読み書きできるため、送信内容は固定文言のみにしコードや機密は含めない。
- プライバシーを上げたい場合は ntfy の自前サーバーや Tailscale 経由に移行する。
- フックの変更は次回 Claude Code 起動(resume)時から有効になる。
補足: macOS のローカル通知(terminal-notifier 等のフック)はコマンドが exit=0 でも、macOS の通知許可が未許可だったり集中モード(お休みモード)が ON だと黙って表示されない。スマホ通知とは別系統なので切り分けて確認する。