Claude Code の通知 Hooks 設定
複数の Claude Code セッションを並行実行しているとき、どのセッションが入力待ちかを把握するのは難しい。本記事では、Hooks 機能を使ってビープ音で通知することで、この問題を解決する方法を説明する。
設定ファイルの場所
~/.claude/settings.json
Windows の場合:
C:\Users\{ユーザー名}\.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)\""
}
]
}
]
}
}
各 Hook の説明
| Hook | タイミング | 音の特徴 |
|---|---|---|
PreToolUse | ツール実行前(TodoWrite のみ) | 低め 600Hz × 1回 |
PostToolUse | ツール実行後 | 中程度 800Hz × 1回 |
Stop | Claude の処理完了時 | 上昇音 1000→1200→1500Hz |
SubagentStop | サブエージェント完了時 | 1200Hz × 3回 |
Notification | 入力待ち通知 | 高め 2000Hz × 2回 |
重要:Notification Hook
Notification Hook が入力待ち通知の鍵。これを設定することで、Claude が入力を求めているときにビープ音が鳴る。
複数タブで Claude を並行実行しているとき、どのタブが入力待ちかすぐにわかるようになる。
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[console]::beep(2000, 150); [console]::beep(2000, 150)\""
}
]
}
]
beep コマンドの書式
[console]::beep(周波数Hz, 継続時間ms)
- 周波数:37〜32767 Hz(人間の可聴域は約20〜20000Hz)
- 継続時間:ミリ秒単位
音の使い分け例
| 用途 | 周波数 | 印象 |
|---|---|---|
| 注意喚起 | 2000Hz | 高くて目立つ |
| 完了通知 | 1000-1500Hz | 心地よい |
| 軽い通知 | 600-800Hz | 控えめ |
Windows Terminal との組み合わせ
Windows Terminal の「ベル通知スタイル」設定と組み合わせることもできるが、Claude Code が BEL 文字を出力しないため、Hooks を使う方が確実。
設定場所:Windows Terminal → 設定 → プロファイル → 詳細設定 → ベル通知スタイル
ベル通知スタイルの選択肢
- 音によるチャイム: ビープ音を鳴らす
- フラッシュ ウィンドウ: ウィンドウがフラッシュする
- フラッシュ タスク バー: タスクバーがフラッシュする
※ただしこれは BEL 文字が出力されたときのみ動作する。Claude Code は BEL を出力しないため、Hooks での通知が推奨される。
注意:beep 音だけではどのタブかわからない
[console]::beep() はシステム全体で音が鳴るため、どのタブが入力待ちかは区別できない。
音が鳴ったら各タブを確認する必要がある。これを解決するには ペイン分割 が有効。
Windows Terminal でのペイン分割(推奨)
複数の Claude を一画面で表示すれば、どれが入力待ちか一目でわかる。
ペイン分割のショートカット
| ショートカット | 動作 |
|---|---|
Alt+Shift+D | 現在のペインを自動分割 |
Alt+Shift+- | 水平分割(上下) |
Alt+Shift++ | 垂直分割(左右) |
Alt+矢印キー | ペイン間を移動 |
Ctrl+Shift+W | 現在のペインを閉じる |
運用例
- Windows Terminal を開く
Alt+Shift+Dで分割(2つ目のペイン)- さらに
Alt+Shift+Dで分割(3つ目) - 各ペインで
claudeを起動 - 音が鳴ったら、どのペインが入力待ちか一目でわかる
カスタムプロファイルの設定
Windows Terminal の settings.json に以下を追加すると、Claude 専用プロファイルを作成できる:
{
"profiles": {
"list": [
{
"name": "Claude 1",
"commandline": "cmd /c \"title Claude 1 && claude\"",
"bellStyle": ["window", "taskbar"]
},
{
"name": "Claude 2",
"commandline": "cmd /c \"title Claude 2 && claude\"",
"bellStyle": ["window", "taskbar"]
}
]
}
}
settings.json の場所:Ctrl+Shift+, で開く、または設定画面左下の「JSON ファイルを開く」
まとめ
| 方法 | 利点 | 欠点 |
|---|---|---|
| Hooks(推奨) | 確実に動作、細かくカスタマイズ可能 | 設定が必要 |
| Windows Terminal ベル | OS 標準機能 | Claude が BEL を出力しない |
結論:Hooks の Notification を設定するのが最も確実な方法。