Claude Codeの通知機能を完全解説【2026年最新】:音・設定・Hooks活用まで
室谷今日はClaude Codeの通知について話しましょうか。これ、地味に大事なテーマで・・・「処理が終わったのに気づかない」「ずっと画面を見てた」という話、.AI(ドットエーアイ)コミュニティでもよく聞くんですよね。
テキトー教師わかります。コードの生成や長めのタスクを走らせながら他のことしてると、いつ終わったか気づけないんですよね。
で、気づいたらClaude Codeが返答待ちになってた、みたいなことが起きる(笑)
で、気づいたらClaude Codeが返答待ちになってた、みたいなことが起きる(笑)
室谷MYUUUでも同じことがあって。エンジニアが「Claude Code走らせてる間に別の作業してたら終わってるのに気づかなかった」って言ってたんですよ。
ここ、通知を正しく設定するだけで生産性がぜんぜん変わるんですよね。
ここ、通知を正しく設定するだけで生産性がぜんぜん変わるんですよね。
テキトー教師通知の設定を知らないまま使い続けてる人、思ったより多いと思いますよ。というより、デフォルトでどう動くのかが把握されていないケースが多い印象です。
Claude Codeの通知はどういうときに発火するか

室谷まず仕組みから確認しましょう。Claude Codeの通知(Notification)は、公式ドキュメントによると4種類のタイプがあります。
| 通知タイプ | いつ発火するか |
|---|---|
permission_prompt | Claude Codeが操作の許可を求めるとき |
idle_prompt | Claude Codeがアイドル状態になったとき(入力待ち) |
auth_success | 認証が成功したとき |
elicitation_dialog | MCPサーバーがユーザー入力を求めるとき |
テキトー教師この中で日常的に関係するのは
コミュニティのメンバーさんに「どんなときに通知が来ると嬉しいか」を聞くと、大半は「処理が終わったとき」と「許可を求めてきたとき」と答えます。
idle_prompt と permission_prompt ですね。「Claude Codeが止まった」ときがほぼこの2つ。コミュニティのメンバーさんに「どんなときに通知が来ると嬉しいか」を聞くと、大半は「処理が終わったとき」と「許可を求めてきたとき」と答えます。
室谷そうですよね。
auth_success や elicitation_dialog は特殊な状況なので、基本は2つを押さえれば十分です。
テキトー教師注意点として、通知はデフォルトだとOSのデスクトップ通知として表示されます。ただしMacの場合、システム設定でClaude Codeの通知を許可していないと届かないんですよね。
室谷これ、はまりポイントですね。「設定したはずなのに通知が来ない」という原因のほとんどがここです。
Mac・Windowsで通知を有効化する方法
テキトー教師まずOSレベルでの許可を確認しましょう。Macの場合、Claude Codeを初めて起動したときに「通知を許可しますか?」というダイアログが出ます。
ここで「許可」を選んでいないと、何を設定しても通知が来ません。
ここで「許可」を選んでいないと、何を設定しても通知が来ません。
室谷見逃してた人はMacの「システム設定 → 通知」からClaude Codeを探して、手動でオンにすればOKです。
テキトー教師Windowsの場合は「設定 → システム → 通知」に進んで、Claude Codeのエントリを探してオンにします。WSL環境で使ってる人はここが少し複雑で、WSL側ではなくWindowsのデスクトップ通知として受け取る形になります。
室谷WSLだと通知音が鳴らないという声もコミュニティで聞きます。これは後ほど話すHooksで解決できるんですよね・・・
テキトー教師そうですね。OSの通知に依存しないで、自分でカスタムスクリプトを書いてしまう方が柔軟性が高いです。
Claude Codeの通知設定:settings.jsonの使い方
室谷Claude Codeの設定ファイルは
settings.json で管理されます。通知設定は ~/.claude.json にも含まれていて、テーマや通知設定、エディターモードといった個人設定が保存されています。
テキトー教師settings.json は複数のスコープで管理されます。| ファイル | スコープ | 共有 |
|---|---|---|
~/.claude/settings.json | 全プロジェクト共通 | ローカルのみ |
.claude/settings.json | プロジェクト単位 | リポジトリにコミット可 |
.claude/settings.local.json | プロジェクト単位 | gitignore(コミット不可) |
室谷自分だけの通知設定は
~/.claude/settings.json に書けばよくて、チームで共有したい設定は .claude/settings.json に書く、という使い分けですね。
テキトー教師あと、インタラクティブモードで
/config コマンドを実行すると、GUIで設定を変更できます。コマンドに慣れてない人はここから始めた方がわかりやすいかもしれません。Claude Code通知の本命:Hooksで完全カスタマイズ

室谷ここが今回の記事のメインですね。Claude Codeには「Hooks」という機能があって、通知イベントを起点に自分でシェルスクリプトやHTTP呼び出しを実行できるんですよ。
テキトー教師Hooksは公式ドキュメントで体系化されていて、
Notification フックが通知専用のイベントです。settings.json に設定を書くと、通知タイプに応じて異なるスクリプトを実行できます。
室谷公式の設定例がこれです。
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{
"type": "command",
"command": "/path/to/permission-alert.sh"
}
]
},
{
"matcher": "idle_prompt",
"hooks": [
{
"type": "command",
"command": "/path/to/idle-notification.sh"
}
]
}
]
}
}
テキトー教師この設定で「許可が必要なとき」と「アイドルになったとき」で別々のスクリプトを走らせられます。スクリプトの中身は自由なので、音を鳴らすのも、Discordに通知を飛ばすのも、スマホにプッシュ通知を送るのも可能です。
室谷HooksはJSONの入力データも受け取れます。
Notification フックには以下のフィールドが渡されます。{
"session_id": "abc123",
"transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
"cwd": "/Users/...",
"hook_event_name": "Notification",
"message": "Claude needs your permission to use Bash",
"title": "Permission needed",
"notification_type": "permission_prompt"
}
テキトー教師message と title、notification_type が使いやすいですね。スクリプト側でこれを読んで、通知タイプに応じてメッセージを出し分けるのが定番の使い方です。通知音の設定(Mac・Windows別)
室谷Macでは
afplay コマンドで音声ファイルを再生できます。Hooksスクリプトの中でこれを呼び出すのが一番シンプルです。
テキトー教師afplay /System/Library/Sounds/Glass.aiff でシステムのサウンドを再生できますよね。Macユーザーならこれで十分なことが多いです。
室谷Windowsは
PowerShell を使います。[System.Media.SystemSounds]::Beep.Play() や、カスタム .wav ファイルを再生する System.Media.SoundPlayer クラスを使う方法があります。
テキトー教師WSLで使ってる人は少し工夫が必要です。WSL内のシェルからWindowsのコマンドを呼ぶ方法として、
powershell.exe -Command "..." を使う形になります。claude code 通知 wsl で調べてる人の多くがここで詰まるポイントです。
室谷Ghosttyユーザーは、ターミナル自体のbell機能で通知を実現するのが手軽です。
printf '\a' をスクリプトに入れるだけでターミナルベルが鳴ります。Mac向け:処理完了通知スクリプト
テキトー教師Macで「処理が終わったとき」にサウンドとOSの通知を両方出す実用的なスクリプトを見てみましょう。
#!/bin/bash
# ~/.claude/hooks/notify-idle.sh
# JSONを読み込む
INPUT=$(cat)
MESSAGE=$(echo "$INPUT" | jq -r '.message // "Claude Codeが入力を待っています"')
TITLE=$(echo "$INPUT" | jq -r '.title // "Claude Code"')
# 通知音を鳴らす
afplay /System/Library/Sounds/Glass.aiff
# OSの通知を表示
osascript -e "display notification \"$MESSAGE\" with title \"$TITLE\""
室谷osascript を使ってMacの通知センターに出せるのが便利ですよね。許可が求められたときは音を変えたり、Slackに通知するスクリプトを追加したりと、拡張しやすい構造です。Claude Code通知をスマホに飛ばす方法
テキトー教師講座でこの内容を紹介すると「スマホに通知を飛ばしたい」という質問が必ず出ます。
ntfy.sh が無料で使えて手軽なのでおすすめしています。
室谷ntfy を使う場合、スクリプトはシンプルです。#!/bin/bash
# スマホにプッシュ通知を送る
INPUT=$(cat)
MESSAGE=$(echo "$INPUT" | jq -r '.message // "Claude Codeが入力を待っています"')
curl -d "$MESSAGE" ntfy.sh/your-topic-name
テキトー教師トピック名を自分だけが知る名前にして、スマホに
ntfy アプリをインストールしてそのトピックを購読すればOK。無料でプッシュ通知が届きます。
室谷Discordに飛ばしたい場合はWebhook URLを使います。設定のパターン自体は同じで、
curl -X POST でWebhookにPOSTするだけですね。#!/bin/bash
INPUT=$(cat)
MESSAGE=$(echo "$INPUT" | jq -r '.message // "Claude Codeが止まっています"')
WEBHOOK_URL="https://discord.com/api/webhooks/your-webhook-url"
curl -H "Content-Type: application/json" \
-d "{\"content\": \"$MESSAGE\"}" \
"$WEBHOOK_URL"
テキトー教師claude code 通知 discord や claude code 通知 slack で調べてる人もここが答えです。Slackも同じパターンで、Incoming WebhooksのURLに対してJSONをPOSTするだけです。完了通知とStopフックの使い分け
室谷「claude code 完了 通知」というKWも多いですが、これはStopフックとNotificationフックを使い分ける話です。
Notification フックの idle_prompt は「Claudeが返答してユーザーを待っている状態」全般で発火します。
テキトー教師一方
Stop フックは「Claudeが1つのターンの返答を終了したとき」に発火します。長いコーディングタスクの完了を知りたいなら Stop フックの方が適切ですね。idle_prompt だと短い返答にも全部反応してしまいます。
室谷MYUUUでの使い方は、
Stop フックで完了通知を飛ばして、Notification フックの permission_prompt で「許可が必要なとき」だけ別の強い通知音を出す組み合わせです。
テキトー教師これだと「タスク完了した」と「操作許可が必要」で通知の重みが変わるので、ながら作業中でもどっちの状況か即座に判断できます。この使い分けを知ってる人と知らない人で、作業効率が結構変わりますよ。
tmux・Linux環境での通知設定
室谷tmux claude code 通知 や claude code 通知 linux を調べてる人もいるので見ておきましょう。tmuxで作業している場合、セッションをデタッチしてバックグラウンドで動かすことが多いですよね。
テキトー教師デタッチ中はOSの通知が届きにくいことがあります。tmuxの場合は
tmux display-message でステータスバーに表示する方法が手軽です。#!/bin/bash
INPUT=$(cat)
MESSAGE=$(echo "$INPUT" | jq -r '.message // "Claude Code: 入力待ち"')
# tmuxのステータスバーに通知
tmux display-message -d 5000 "$MESSAGE"
# ターミナルベル
printf '\a'
室谷Ubuntuでは
notify-send コマンドが使えます。notify-send "Claude Code" "$MESSAGE" --urgency=normal でデスクトップ通知が出せます。
テキトー教師WSL2の場合は
powershell.exe 経由でWindowsのToast通知を出せます。WSL1では動作しないので注意です。設定ファイルの全体像
室谷全部まとめると、
~/.claude/settings.json の設定はこうなります。{
"hooks": {
"Notification": [
{
"matcher": "idle_prompt",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/notify-idle.sh"
}
]
},
{
"matcher": "permission_prompt",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/notify-permission.sh"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/notify-stop.sh"
}
]
}
]
}
}
テキトー教師スクリプトファイルには実行権限が必要です。
chmod +x ~/.claude/hooks/notify-idle.sh
chmod +x ~/.claude/hooks/notify-permission.sh
chmod +x ~/.claude/hooks/notify-stop.sh
室谷これを一度設定すれば、あとはClaude Codeを走らせて別の作業をしていても、タスク完了や許可要求を確実に受け取れます。MYUUUではこの設定をチームで標準化していて、かなり効率が上がりましたよ。
テキトー教師1つ注意点として、
Notification フックは通知のブロックや変更はできません。あくまでスクリプトをサイドエフェクトとして実行するだけです。additionalContext を返すことで会話にコンテキストを追加することはできます。まとめ
室谷Claude Code通知のポイントをまとめましょう。
テキトー教師整理するとこういう構造です。
- OSの通知許可: まずMac/Windowsのシステム設定でClaude Codeの通知をオンにする
- Notificationフックの4タイプ:
idle_prompt(待ち状態)、permission_prompt(許可要求)、auth_success、elicitation_dialog - settings.jsonでHooksを設定:
~/.claude/settings.jsonにNotificationフックを書いてスクリプトを紐付ける - スマホ通知:
ntfy・Discord Webhook・Slack Webhookで実現できる - Stopフックとの使い分け: タスク完了通知には
Stopフック、許可要求にはNotificationのpermission_promptが適切
室谷「処理が終わったのに気づかなかった」という経験が一度でもあれば、この設定を入れる価値があります。特に長めのコーディングタスクを走らせながら別の作業をすることが多いなら、絶対に設定しておくべきですね。
テキトー教師「この設定を入れると、Claude Codeを"ながら作業"で使えるようになる」—これを一度体験すると、設定前には戻れなくなりますよ。
