【効率化】Claude Code の通知音設定 - タスク完了を見逃さない
設定・環境構築約5分で読めます

この記事でわかること
- ターミナルのベル音で済ませる一番簡単な設定
- Notification hook で、通知の種類ごとに違う音を鳴らす方法
- macOS / WSL / Linux それぞれの音の鳴らし方と、鳴らないときの切り分け
Claude Code を日常的に使っていること。~/.claude/settings.json を編集できれば十分です。
ポイント
Claude Code でタスクが完了したときに音で通知する方法を解説します。長時間の処理中に画面を見続ける必要がなくなります。
はじめに
Claude Code でビルドやテストを実行している間、ずっと画面を見つめていませんか?通知音を設定すれば、タスク完了時に音で知らせてくれるので、他の作業をしながら待つことができます。
方法1: Terminal Bell(シンプル)
最もシンプルな方法です。通知チャンネルをターミナルベルにするだけで済みます。
claude config set --global preferredNotifChannel terminal_bell注意
設定方法はその後変わりました。現在の Claude Code には対話的な設定画面があり、
/config と打って Settings から選ぶのが確実です(/config key=value で直接指定することもできます)。上のコマンドが効かない場合はそちらを使ってください。設定が反映されたかは /status で確認できます。これで、タスク完了時にターミナルのベル音が鳴るようになります。動作確認は echo -e "\a" で行えます。
方法2: Hooks(カスタマイズ可能)
より柔軟な設定が可能な方法です。好きなサウンドファイルを指定したり、通知タイプごとに異なる音を設定できます。設定ファイルは ~/.claude/settings.json です。
基本設定(macOS)
{
"hooks": {
"Notification": [
{
"matcher": "idle_prompt",
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Glass.aiff"
}
]
}
]
}
}通知タイプ(matcher)の種類
| matcher | 発火するタイミング |
|---|---|
agent_completed |
エージェントが作業を終えた時 |
agent_needs_input |
エージェントが入力を必要としている時 |
idle_prompt |
長めの処理の後、入力待ちになった時 |
permission_prompt |
ツール実行の許可を求める時 |
auth_success |
認証成功時 |
elicitation_dialog |
MCP サーバーが入力を求めた時 |
elicitation_url_dialog |
MCP サーバーが URL 入力を求めた時 |
elicitation_complete |
入力のやりとりが完了した時 |
elicitation_response |
入力に応答があった時 |
Tips
この記事の目的、つまり「作業が終わったことを知りたい」なら、一番直接的なのは
agent_completed です。idle_prompt は「入力待ちになった」という別の条件なので、両方仕掛けておくと取りこぼしが減ります。複数の通知タイプに対応する設定
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{"type": "command", "command": "afplay /System/Library/Sounds/Ping.aiff"}
]
},
{
"matcher": "idle_prompt",
"hooks": [
{"type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff"}
]
}
]
}
}macOS で使えるシステムサウンド
/System/Library/Sounds/ にある標準サウンドファイルを使用できます。
Glass.aiff- クリアなガラス音(おすすめ)Ping.aiff- 短いピン音Submarine.aiff- 潜水艦のソナー音Blow.aiff- ポップな音
# 利用可能なサウンド一覧を確認
ls /System/Library/Sounds/
# サウンドを試聴
afplay /System/Library/Sounds/Glass.aiffプラットフォーム別の設定
Windows(WSL)
"command": "powershell.exe -c [System.Media.SystemSounds]::Beep.Play()"Linux
"command": "paplay /usr/share/sounds/freedesktop/stereo/complete.oga"VS Code での設定
VS Code のターミナルで Terminal Bell を使う場合は、設定画面で「terminal bell」と検索し、Terminal > Integrated: Enable Bell を有効化してください。
Tips
Tips
/hooks コマンドで対話的に設定することもできます。JSON を直接書くよりキー名を間違えにくいので、最初の 1 つはこちらで作るのが楽です。注意
hook の
command はフルパスで書くのが安全です。hook はあなたのシェルの設定(.zshrc など)を読まない環境で走ることがあり、alias や PATH を前提にしたコマンドはしばしば見つかりません。上の例の afplay は macOS の標準パスにあるのでそのままで動きます。トラブルシューティング
音が鳴らない場合の確認ポイント:
echo -e "\a"で確認(ターミナル側の問題か切り分け)- iTerm2: Preferences → Profiles → Terminal → 「Silence bell」のチェックを外す
- システムの音量がミュートになっていないか確認
まとめ
- シンプルに使うなら
terminal_bell設定がおすすめ - カスタマイズしたいなら Hooks で好きなサウンドを設定
- 通知タイプごとに音を分けられる
- プラットフォームに応じてコマンドを調整する
参考リンク
更新履歴
- Notification hook の matcher 一覧を現行の 9 種類に更新(agent_completed / agent_needs_input / elicitation 系 3 つを追加し、表に整理)。「作業完了を知る」目的なら agent_completed が直接的だという指針を追加。現在は /config から設定するのが確実であることを注記。参考リンクがテキストだけで URL がなかったのを公式ドキュメントへのリンクに差し替え。ファイルパス・コマンド・matcher 名をインラインコードに統一し、エスケープが見えていた箇所を修正。コードブロックの言語指定を plain text から json に修正。hook の command をフルパスで書くべき理由を追加。「この記事でわかること」「対象読者」を概要プロパティへ移動。OGP Description を内容に即したものに差し替え。


