Claude Code 通知フック設定
本記事では、複数のClaude Codeセッションを並行実行する際に、どのタブが入力待ちかを音で判別できるようにする設定を説明する。
設定ファイル
~/.claude/settings.json (Windows: C:\Users\<username>\.claude\settings.json)
完全な設定例
{
"model": "opus",
"hooks": {
"PreToolUse": [
{
"matcher": "TodoWrite",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[console]::beep(600, 100)\""
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[console]::beep(1000, 500); [console]::beep(1200, 500); [console]::beep(1500, 500)\""
}
]
}
],
"PostToolUse": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[console]::beep(800, 200)\""
}
]
}
],
"SubagentStop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[console]::beep(1200, 100); [console]::beep(1200, 100); [console]::beep(1200, 100)\""
}
]
}
],
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[console]::beep(2000, 150); [console]::beep(2000, 150)\""
}
]
}
]
}
}
各フックの説明
| フック | タイミング | 音の特徴 |
|---|---|---|
PreToolUse (TodoWrite) | Todoリスト更新前 | 低め1回 (600Hz) |
PostToolUse | ツール実行後 | 中音1回 (800Hz) |
SubagentStop | サブエージェント完了 | 中高音3連 (1200Hz) |
Stop | Claude応答完了 | 上昇3音 (1000→1200→1500Hz) |
Notification | 入力待ち通知 | 高音2連 (2000Hz) |
重要: Notification フック
Notification フックは Claude Codeが入力待ちになったとき に発火する。複数タブでClaudeを並行実行している場合、この通知音でどのタブが入力を待っているか判別できる。
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[console]::beep(2000, 150); [console]::beep(2000, 150)\""
}
]
}
]
Windows Terminal との併用
Windows Terminalの「ベル通知スタイル」設定と組み合わせると、タスクバーのフラッシュも利用可能:
- Windows Terminal設定 (
Ctrl+,) - プロファイル → 既定値 → 詳細設定
- 「ベル通知スタイル」で以下を有効化:
- 音によるチャイム
- フラッシュウィンドウ
- フラッシュタスクバー
ただし、Claude Code自体はBEL文字を出力しないため、hooksでの通知設定が必要。