要点まとめ
- 対象のClaudeプランでRemote Controlを使っている場合は、/config から公式モバイルプッシュを有効化できます。
- Claude Codeの通知だけを無料で受け取りたい場合は、~/.claude/settings.json の Notification フックから curl で ntfy.sh へPOSTします。
- Claude Codeに加えてCursor、Codex、XcodeなどMac全体の通知を1つのチャンネルにまとめたい場合は、NotiFerryでmacOS通知センターを転送します。
- いずれの方法でも、タスク実行中はMacが起きている必要があります。
Mac上のClaude Codeにおけるデフォルトの通知動作
Claude Codeがタスクを終えたとき、またはコマンド実行の許可(permission prompt)を求めて停止したとき、ターミナルがバックグラウンドにあると通知イベントが発生します。ただし実際にバナーが表示されるかどうかは使用しているターミナルアプリによって異なります。Claude Code公式のターミナル設定ドキュメントによると、標準でデスクトップ通知が送られるのは Ghostty、Kitty、iTerm2 の3つです。Apple標準の「ターミナル.app」などその他のターミナルでは、ベルまたはフックを設定しない限りバナーは表示されません。
- Ghostty / Kitty: そのままmacOSの通知センターへ通知が送られます。
- iTerm2: 「Settings → Profiles → Terminal」で Notification Center Alerts にチェックを入れ、「Filter Alerts」で Send escape sequence-generated alerts を有効にします。
- tmux内での実行:
allow-passthroughを有効にしないとエスケープシーケンスが遮断されます。
いずれの場合も、標準のままでは通知はMacの画面にしか出ません。席を外しているときにiPhone(やApple Watch)で受け取るには、次の3つの方法があります。
方法1:Claude Code組み込みのモバイルプッシュ通知(Remote Control)
Claude CodeのセッションをRemote Controlで接続している場合、iPhoneのClaude公式アプリへ直接プッシュ通知を送ることができます。
- iPhoneにClaudeアプリをインストールし、Claude Codeと同じアカウントでログインします。
- iOSの通知許可をオンにします。
- Remote Controlを有効にしてセッションを開始します。
- ターミナル内で
/configを実行し、Push when Claude decides または Push when actions required をオンにします。
Remote Controlのドキュメントに記載されている通り、この機能はPro・Max・Team・Enterpriseプラン対象で、APIキー利用やサードパーティプロバイダ経由では利用できません。またセッション自体はMac上で動くため、Macがスリープしないようにしておく必要があります。
方法2:Notificationフックからcurlでntfyへ直接送信する(無料)
Claude CodeのHooks機能を使うと、通知イベント発生時に任意のシェルコマンドを実行できます。Notification フックで無料のプッシュ配信サービス ntfy にPOSTすれば、APIキー利用時やどのターミナルでも確実にiPhoneへ通知を送れます。iPhoneに無料のntfyアプリを入れて推測されにくいトピック名を購読し、~/.claude/settings.json に以下を追加します:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "curl -s -d 'Claude Codeが確認を待っています' https://ntfy.sh/your-private-topic"
}
]
}
]
}
}空の matcher はすべての通知イベントに一致します。承認待ちだけを受け取りたい場合は permission_prompt、入力待ちだけなら idle_prompt を指定してください。設定後、Claude Code内で /hooks を実行すると登録状態を確認できます。
方法3:NotiFerryでmacOS通知センターごとiPhoneへ転送する
3つ目の方法は、Claude Codeを他のMacアプリと同じように扱い、macOSの通知センターに届いた通知を NotiFerry でまとめてiPhoneへ転送するやり方です。
Ghostty、Kitty、設定済みのiTerm2ならすでに通知センターへバナーが届いています。Apple標準のターミナル.appなどを使う場合は、公式ドキュメントにある osascript フックを ~/.claude/settings.json に設定します:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Codeが確認を待っています\" with title \"Claude Code\"'"
}
]
}
]
}
}macOS上ではこの通知は「スクリプトエディタ(Script Editor)」からの通知として扱われます。一度ターミナルで osascript -e 'display notification "test"' を実行し、「システム設定 › 通知」でスクリプトエディタの通知を許可してください。
あとは NotiFerryをセットアップ するだけです。デフォルトの「タイトルのみ」モードなら通知本文をMacの外へ出さずに済み、同一アプリの通知が短時間に5件以上溜まって配信が30秒以上遅れた場合は最新1件に自動集約されます(10分以上経過した古い通知は破棄されます)。また、Cursor、Codex Macアプリ、Xcode、FinderなどClaude Code以外のMacアプリの通知も同じntfyチャンネルで一括受信できます。NotiFerryがプロンプトやソースコードを読み取ることはありません。
3つの方法の比較と選び方
| 方法 | 必要なもの | カバー範囲 | 費用 |
|---|---|---|---|
| 公式モバイルプッシュ | Remote Control・対象Claudeプラン・Claude iOSアプリ | Remote Control接続中のClaude Codeセッション | プランに含まれる |
| ntfy フック(curl) | settings.jsonの数行の設定 + iPhoneのntfyアプリ | このMac上のすべてのClaude Codeセッション | 無料 |
| NotiFerry | MacのNotiFerry + iPhoneのntfyアプリ | Claude Codeに加え、Cursor・Codex・Xcodeなど全Macアプリ | 無料トライアル後、買い切り |
手首のApple Watchで通知を受け取りたい場合は、ntfyでMacの通知をApple Watchに届けるガイドもあわせてご覧ください。
MacとiPhoneでの動作イメージ
macOSの通知センターフォルダに読み取り専用アクセスを許可し(フルディスクアクセス不要)、iPhoneの無料アプリ「ntfy」で専用トピックを購読します。テスト通知の受信を確認すると、7日間の無料トライアルが開始されます。

よくある質問
Apple標準の「ターミナル.app」でClaude Codeの通知が出ないのはなぜですか?
Claude Codeが標準でデスクトップ通知エスケープシーケンスを送るのはGhostty、Kitty、iTerm2のみだからです。標準のターミナル.appでは、~/.claude/settings.json に osascript または curl を使う Notification フックを追加してください。
Claude Code単体でiPhoneへプッシュ通知を送れますか?
はい。Pro、Max、Team、EnterpriseプランでRemote Controlを使用し、iPhoneにClaude公式アプリをインストールしている場合は、/config からモバイルプッシュ通知を有効にできます。
NotiFerryはClaude Codeのプロンプトやコードを読み取りますか?
いいえ。NotiFerryが読み取るのはmacOSの通知センターに記録された通知テキストのみで、プライバシーフィルタを適用してからntfyトピックへ送信します。ターミナルのセッションやソースコードファイルには一切アクセスしません。
タスク実行中、Macはスリープさせない必要がありますか?
はい。どの方法を使う場合でも、Claude CodeはMac上でローカル実行されているため、Macがスリープすると処理自体が一時停止し、通知も送られません。