Claude Code の通知: 「待機中」と「完了」を音で聞き分ける

「ブロックされているセッションは、完了したセッションとまったく同じに見えるので、間違ったほうを先に開いてしまう」。Claude Code の機能リクエストにあったこの一文が、問題をよく表しています。それぞれに別の合図を出す方法を紹介します。

Aslan(Pet Island チーム)· 更新日 2026年10月26日 · 約 4 分で読めます

要点

Claude Code は、あなたが離席している間に作業を終えたときや許可を待っているときに、すでに通知を出しています。ただし、デフォルトでデスクトップ通知として表示されるのは Ghostty、Kitty、iTerm2 だけです。それ以外の環境では "preferredNotifChannel": "terminal_bell" を設定します。2 種類の音を使い分けるには、「あなたが必要」には permission_prompt マッチャーを指定した Notification フックを、「完了」には Stop フックを使います。

Claude Code が標準で行うこと

Claude がタスクを終えたとき、または許可の確認で一時停止したときに、あなたがターミナルから離れているように見えると、通知イベントが発生します。デフォルトでは、これがデスクトップ通知になるのは Ghostty、Kitty、iTerm2 だけです。Windows Terminal、VS Code のターミナル、Warp などでは、設定しない限り目に見えることは何も起こりません。

最も簡単な解決策はターミナルのベルです。

~/.claude/settings.jsonコピー
{
"preferredNotifChannel": "terminal_bell"
}

ベルで何が起こるかはターミナル次第です。Windows Terminal では、bellStyle 設定に audible(デフォルト)、window、taskbar、all、none を指定できます。all にすると、Windows Terminal は音を鳴らし、タスクバーのアイコンを点滅させます。

  • iTerm2: Settings → Profiles → Terminal で「Notification Center Alerts」にチェックを入れ、Filter Alerts で「Send escape sequence-generated alerts」を有効にします。
  • tmux: ~/.tmux.conf に set -g allow-passthrough on を追加します。追加しないと、通知が外側のターミナルに届きません。
  • SSH 経由: デスクトップ通知はローカルマシンに戻ってくるので、リモートセッションからでも通知を受け取れます。

システム通知の機能リクエスト(#26581、高評価 34 件)は、まさにこの組み込みの通知を挙げて「対応済み」としてクローズされました。「待機中」と「完了」で別の合図を出してほしいというリクエスト(#94373)はまだオープンのままです。ここでフックの出番です。

2 つのイベント: Notification と Stop

  • Notification は Claude Code が通知を送るときに発火します。マッチャーは通知の種類です。重要なのは 2 つで、permission_prompt(Claude がツールの使用について承認を求めていて、確認が約 6 秒間待機している状態)と idle_prompt(Claude が約 60 秒前に応答を終え、それ以降あなたが何も入力していない状態)です。
  • Stop は Claude が応答を終えるたびに発火します。あなたが中断した場合は発火せず、API エラーの場合は代わりに StopFailure が発火します。

フックは組み込みの通知を置き換えるのではなく、並行して実行されるので、両方を使い続けられます。

Windows: 2 種類の音を使い分ける

Windows では、フックは Git Bash で実行され、Git Bash がインストールされていなければ PowerShell で実行されます。"shell": "powershell" を設定すれば推測の余地がなくなります。次の設定では、Claude が許可を必要とするときに高い音のビープを 2 回、完了したときに低い音のビープを鳴らします。

%USERPROFILE%\.claude\settings.jsonコピー
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{ "type": "command", "shell": "powershell",
"command": "[Console]::Beep(1320, 150); [Console]::Beep(1320, 150)" }
]
}
],
"Stop": [
{
"hooks": [
{ "type": "command", "shell": "powershell",
"command": "[Console]::Beep(660, 300)" }
]
}
]
}
}

Console.Beep は周波数(ヘルツ)と長さ(ミリ秒)を受け取り、ビープ音が終わるまで待機します。Anthropic のフックガイドには、System.Windows.Forms でメッセージボックスを開く Windows の例も載っています。ただし同ガイド自身の注記によると、これは通知ではなくダイアログで、ターミナルの裏に開くことがあります。

macOS と Linux

Anthropic のドキュメントでは、macOS で afplay を使っています。

~/.claude/settings.jsonコピー
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}
],
"Stop": [
{
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Pop.aiff" }]
}
]
}
}

目に見える通知が欲しい場合は、macOS なら osascript -e 'display notification "Claude needs you" with title "Claude Code"'、Linux なら notify-send "Claude Code" "Claude needs you" を使います。

ひと晩を無駄にしないための細かい注意点

  • Stop は頻繁に発火します。 タスク全体が終わったときだけでなく、Claude が応答を終えるたびに発火します。うるさすぎる場合は、代わりに idle_prompt の通知を使いましょう。約 1 分待ち、あなたが入力していない場合にだけ発火します。
  • 必要ならイベントの内容を読み取ります。 Notification の入力には message、title、notification_type が含まれるので、スクリプトで実際のリクエスト内容を表示できます。
  • エージェントビュー。 claude agents でバックグラウンドセッションを実行している場合、セッションが入力を必要としたとき、完了したとき、失敗したときに、同じ preferredNotifChannel で通知され、agent_needs_input または agent_completed の種類で Notification フックが発火します。
  • ターミナルのステータス。 OSC 7501 ステータスプロトコルを実装したターミナルでは、Claude Code の各セッションが作業中、待機中、完了のどれかを表示できます。Claude Code v2.1.295 以降は自動的にステータスを報告します。
  • Windows でフックが発火しない? Windows で Claude Code のフックが動かないを参照してください。原因はほぼ必ずシェルです。

どのセッションかを確認し、その場で応答する

音は何かが起きたことを教えてくれますが、3 つのターミナルのどれから来たのか、Claude が何を実行したいのかまではわかりません。Pet Island は、Claude Code の各セッションを画面上部の小さなアイランドに表示します。作業中、あなたを待っている、完了のいずれかです。許可リクエストはコマンドや差分とともに届き、その場で許可または拒否できます。質問とプランも同じように扱えます。詳しく見たいときは、ワンクリックで該当のターミナルに移動できます。

よくある質問

Claude Code に通知機能はありますか?

はい。あなたが離席している間に作業を終えたときや許可を待っているときに、通知を出します。Ghostty、Kitty、iTerm2 ではデフォルトでデスクトップ通知として表示されます。その他のターミナルでは preferredNotifChannel を "terminal_bell" に設定するか、Notification フックを追加します。

Claude Code の完了時に音を鳴らすには?

音を鳴らす Stop フックを追加します。たとえば macOS なら afplay、Windows なら PowerShell の [Console]::Beep を使います。

「許可が必要」と「完了」を区別するには?

一方の音には permission_prompt マッチャーを指定した Notification フックを、もう一方には Stop フックを使います。

Windows Terminal や VS Code で通知が届かないのはなぜですか?

Claude Code がデフォルトでデスクトップ通知を送るのは Ghostty、Kitty、iTerm2 だけだからです。preferredNotifChannel を "terminal_bell" に設定するか、フックを使ってください。

tmux の中でも通知は動作しますか?

はい。~/.tmux.conf に set -g allow-passthrough on を追加すれば動作します。

出典

このページの設定と動作はすべて、2026年10月26日 に以下のページと照らし合わせて確認しました。エージェントは変化が速いため、内容が一致しなくなった場合は公式ページの記述を優先してください。

あわせて読みたい

すべてのエージェントに、画面の上から応答。

Windows と Mac に対応 · 7 日間無料、その後 $8.99 の買い切り · 売上 1 件ごとに $1 を野良動物の餌に

Pet Island を無料で試す