EngineeringClaude CodentfyDX

もう ntfy はいらない。Claude Code が iPhone に直接 push してくれる時代になりました

Claude Code v2.1.110 でモバイル push が公式機能になりました。長時間タスクの通知のために ntfy.sh の private トピックでしのいでいた運用を、ついに引退させた話です。

TF
藤田 智也
CEO / Founder
Published2026.04.29
Read4 min
Words2,015
[ ntfy → CLAUDE CODE ]
// Contents (7)
  1. なんで通知ってそんなに大事なんですか?
  2. 今までの構成: ntfy.sh + Stop フック
  3. v2.1.110 で公式 push が入りました
  4. 「Claude が判断する」がいい仕事してくれる
  5. ぶっちゃけ、弱点もあります
  6. Before / After
  7. まとめ

Claude Code、まだ「ターミナルに張り付いて完了を待つツール」だと思ってませんか?

うちは長らく、長時間タスクの完了通知のために ntfy.sh の private トピックでしのいできました。サーバを自前で立てるわけでもなく、ただ十分に長くてランダムなトピック名を private 扱いで使う、という運用です。Claude Code の Stop フックから curl を 1 行叩いて、iPhone に push を飛ばす、それだけ。これがあるかないかで体験は天と地ほど違って、もう手放せないやつでした。

それが、2026 年 4 月 15 日リリースの Claude Code v2.1.110 で、設定 1 つで完全に置き換わってしまいました。本記事は、その移行の記録です。

なんで通知ってそんなに大事なんですか?

うちの開発スタイルは neovim + tmux + Kitty + Claude Code を中心に組み立てていて、ぶっちゃけ、Claude Code に長時間タスクを任せて自分は別のことをしている、という時間がかなり多いです。

たとえばこんな場面:

  • マルチエージェントパイプラインを再構築させていて、10 分くらい走り続ける
  • リファクタリング後の pnpm typecheck がフルで走る
  • Plan モードのレビュー後に「実装どうぞ」と渡して長く戻ってこない

このとき何が困るって、Claude が途中で「権限プロンプト」や「実装終わったから見て」みたいなブロッキングに突入してしまう ことです。気づかないと 30 分そのまま待たされる。Slack で別の話に集中していたら、結局 1 時間ロス、なんて経験を何度もしました。

集中を奪わずに、終わったときだけ知らせてくれる。それくらいでいいんです、こちらが欲しいのは。

今までの構成: ntfy.sh + Stop フック

ntfy はいいツールです。ntfy.sh の好きなトピックに POST するだけで、登録したスマホに push が飛ぶ。サインアップもサーバ立ても要りません。これだけ。

私は Claude Code の Stop フックでこれを叩いていました。

bash
# ~/.claude/hooks/stop.sh curl -s \ -H "Title: Claude Code finished" \ -H "Priority: default" \ -d "Session $CLAUDE_SESSION_ID completed at $(date)" \ https://ntfy.sh/grz-claude-private-xxxxx

これで、何かしらセッションが終わるたびに iPhone がブブッと震える わけです。

便利でした。が、運用してみると地味に気になる点が 2 つ。

  1. どんな終わり方でも push する。ファイル 1 つ書いて終わったセッションでも鳴る。要は、ノイズが多い。
  2. トピック名が事実上のパスワード。長くてランダムにしてもらってますが、漏れたら他人にも push を撃たれる。public な ntfy.sh に POST しているわけで、運用としてはちょっと気が重い。

「ノイズだけ消したい」と思って、フックスクリプトを少しずつ育てていく…という選択肢もありますが、長時間タスクの通知のために Bash スクリプトを延々と育てる、というのもなんだか目的を見失っている気がします。

v2.1.110 で公式 push が入りました

そこに 2026-04-15 の Claude Code v2.1.110 で、モバイル push がしれっと組み込まれました。changelog の文面はえらく素っ気なくて、

Added push notification tool — Claude can send mobile push notifications when Remote Control and "Push when Claude decides" config are enabled.

これだけ。でも、中身を読むとなかなかすごいです。

仕組みは超シンプル:

  • 公式の Claude モバイルアプリ(iOS / Android)にログインしておく
  • ローカルの Claude Code セッションで Remote Control を有効化
  • /config から Push when Claude decides を true に

これで終わり。agentPushNotifEnabled: true が settings.json に書かれます。

json
{ "agentPushNotifEnabled": true }

ペアリングは、初回にモバイルアプリを開くだけです。私は最初これを忘れて CLI に「No mobile registered」と言われました。アプリ起動した瞬間に push token が refresh されて解決。

「Claude が判断する」がいい仕事してくれる

ここがこの機能の一番面白いところです。自分で「いつ通知するか」を細かく設定しなくていい。Claude がその時々の文脈を見て、「ここは止まるから通知すべき」と判断してくれます。

ドキュメントを読むと、push が飛ぶのはだいたい次の 3 ケース:

  1. 長時間タスクの完了 — テストや build が走り終わったとき
  2. 判断要求 — 権限プロンプトや、Plan モード承認待ちのとき
  3. 明示的に依頼したとき — プロンプトに「終わったら知らせて」と書けば、終了時に確実に push

これがちょうど、私が ntfy で頑張ってフィルタしようとしていた条件そのものなんですよ。なんなら自分でルール書くより精度が高い。yarn install が終わっただけでは push されない。「30 分かかった typecheck の最後で型エラーが残っていて、ユーザーに尋ねるしかない瞬間」だけ届く わけです。

体感で、ノイズが 1/10 になりました。これで集中も切れません。至れり尽くせり。

ぶっちゃけ、弱点もあります

正直、これは万能じゃないです。私は自分のラップトップで Claude Code を回している時間が多いから刺さるけれど、用途によっては従来の ntfy のほうが向いてます。

シナリオntfy / curlClaude Code 公式 push
ローカル Claude Code の長時間タスク✅✅
GitHub Actions / CI ジョブ✅ (curl 1 行)❌ (Remote Control 不可)
サーバ常駐の cron 完了通知✅❌
他人の Claude Code セッションを共有✅ (URL 渡せば誰でも)△ (個人アカウント紐付け)

要は 「自分のマシンで動いている Claude Code セッションだけ」 が対象です。CI 完了通知が要るケースだと、ntfy はやっぱり残しておく必要があります。私もそうしてます。GitHub Actions の curl 1 行は、これからも消しません。

Before / After

text
Before: Stop hook → curl → ntfy.sh の private トピック → モバイルアプリ ・hook スクリプトのメンテ ・トピック名 = 事実上のパスワード、漏れたら他人にも push 可能 ・どんな終了でも一律 push (ノイズ多) After: /config → agentPushNotifEnabled: true ・モバイルアプリにログインするだけ ・Claude が「止まる瞬間」だけ判断して push ・トピック秘匿の心配なし

設定値 1 つでこれが全部置き換わる、という体験は、自前 hook の運用と比べると拍子抜けします。

まとめ

  • Claude Code v2.1.110 でモバイル push が 標準機能 になりました
  • 設定は agentPushNotifEnabled: true 1 つ。モバイルアプリにログインしてペアリングするだけ
  • 「Claude が判断する」 ので、ノイズが激減します。これがほんとに気持ちいい
  • ただし対象はローカルセッションのみ。CI 通知はこれからも ntfy 併用です

ツール選定は「自分が何の運用をやめたいか」という問いに帰着することが多いです。ntfy 自体は今後も大好きで、GitHub Actions からの CI 通知では使い続けます。けれど、Claude Code セッションの通知のためだけに維持していた hook スクリプトと private トピックは、もう要らない。

~/.claude/hooks/stop.sh を一回 git rm して、寝ます。

Less infrastructure is better infrastructure.

— 公式ドキュメント: Remote Control / Mobile Push Notifications / Changelog v2.1.110

// この記事を
TF

藤田 智也

CEO / Founder

株式会社Grizzlarity 代表取締役 CEO / Founder。AI インテグレーション事業と、業界特化型マルチエージェントAIプラットフォーム「KumaKumaAI」の事業開発をリード。マルチエージェント設計と現場実装の橋渡しを関心領域とし、開発スタイルは neovim + tmux + Kitty + Claude Code。

Next →
AI エージェントに Gmail を触らせるために、Google と 6 ヶ月戦った話

Related Articles.

← Tech Blog 一覧に戻る