ガイド

Claude Codeの通知機能を完全解説【2026年最新】:音・設定・Hooks活用まで

室谷東吾
監修者室谷東吾(@0x__tom

株式会社MYUUU 代表取締役 / 日本最大級AIコミュニティ「.AI」創設者(累計2,000名超)/ セプテーニ・ホールディングス(電通グループ)と資本業務提携 / 著書「お金を使わず、AIを働かせる『Dify』活用」(ぱる出版、3刷)/ Xフォロワー約2万人

テキトー教師
監修者テキトー教師(@tekitoo_T_cher

.AI 認定講師 / 教育×AIの専門家 / 累計300名以上にAI活用を指導 / 「テキトーに学ぶ」がモットーの実践派講師 / Xアカウント

Claude Codeの通知機能を完全解説【2026年最新】:音・設定・Hooks活用まで

Claude Codeの通知機能を完全解説【2026年最新】:音・設定・Hooks活用まで

室谷室谷
今日はClaude Codeの通知について話しましょうか。これ、地味に大事なテーマで・・・「処理が終わったのに気づかない」「ずっと画面を見てた」という話、.AI(ドットエーアイ)コミュニティでもよく聞くんですよね。
テキトー教師テキトー教師
わかります。コードの生成や長めのタスクを走らせながら他のことしてると、いつ終わったか気づけないんですよね。

で、気づいたらClaude Codeが返答待ちになってた、みたいなことが起きる(笑)
室谷室谷
MYUUUでも同じことがあって。エンジニアが「Claude Code走らせてる間に別の作業してたら終わってるのに気づかなかった」って言ってたんですよ。

ここ、通知を正しく設定するだけで生産性がぜんぜん変わるんですよね。
テキトー教師テキトー教師
通知の設定を知らないまま使い続けてる人、思ったより多いと思いますよ。というより、デフォルトでどう動くのかが把握されていないケースが多い印象です。

Claude Codeの通知はどういうときに発火するか

Claude Code Hooksリファレンス - 通知イベントの種類と設定方法(公式サイトより)

室谷室谷
まず仕組みから確認しましょう。Claude Codeの通知(Notification)は、公式ドキュメントによると4種類のタイプがあります。
通知タイプいつ発火するか
permission_promptClaude Codeが操作の許可を求めるとき
idle_promptClaude Codeがアイドル状態になったとき(入力待ち)
auth_success認証が成功したとき
elicitation_dialogMCPサーバーがユーザー入力を求めるとき
テキトー教師テキトー教師
この中で日常的に関係するのは idle_promptpermission_prompt ですね。「Claude Codeが止まった」ときがほぼこの2つ。

コミュニティのメンバーさんに「どんなときに通知が来ると嬉しいか」を聞くと、大半は「処理が終わったとき」と「許可を求めてきたとき」と答えます。
室谷室谷
そうですよね。auth_successelicitation_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通知フロー図 - idle_prompt・permission_prompt・auth_successから各通知先への流れ

室谷室谷
ここが今回の記事のメインですね。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"
}
テキトー教師テキトー教師
messagetitlenotification_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 通知 discordclaude 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_successelicitation_dialog
  • settings.jsonでHooksを設定: ~/.claude/settings.json にNotificationフックを書いてスクリプトを紐付ける
  • スマホ通知: ntfy・Discord Webhook・Slack Webhookで実現できる
  • Stopフックとの使い分け: タスク完了通知には Stop フック、許可要求には Notificationpermission_prompt が適切
室谷室谷
「処理が終わったのに気づかなかった」という経験が一度でもあれば、この設定を入れる価値があります。特に長めのコーディングタスクを走らせながら別の作業をすることが多いなら、絶対に設定しておくべきですね。
テキトー教師テキトー教師
「この設定を入れると、Claude Codeを"ながら作業"で使えるようになる」—これを一度体験すると、設定前には戻れなくなりますよ。

出典

.AI TIMES一覧に戻る