はじめに
Claude Codeを使っていると、タスクが終わったか・入力待ちになったかをターミナルを見ないとわからない問題があります。別の作業をしていると気づけず時間を無駄にしがちです。特に複数のClaude Codeセッションを同時に動かしている場合、どのセッションが待機状態になっているか把握するのが難しくなります。
Hooks機能 + BurntToastを使えば、入力待ちやタスク完了のタイミングでWindows通知を受け取れるようになります。ターミナルを確認しなくてもすぐに気づけます。
1. Claude CodeのHooks機能とは
特定のタイミングで任意のコマンドを実行できる仕組みです。今回使うイベントは2つです。
Notification:入力待ち・権限確認待ちのときStop:タスク完了のとき
設定は ~/.claude/settings.json に書きます。ホームディレクトリの設定なので、どのプロジェクトで作業していても有効なグローバル設定として扱われます。
2. なぜBurntToastを使うのか
WSLからWindows通知を出す方法をいくつか試しました。
msg.exe→ PowerShellでは動作するが、WSLからは動作しなかったSystem.Windows.Forms.NotifyIcon→ WSLから直接コマンド実行すると動くが、HooksのJSONに書くとうまく動作しなかった
そこで、BurntToastを試してみたところ問題なく動作しました。またアクションセンターに通知履歴が残るので、席を外していても後から確認できます。
3. BurntToastのインストール
PowerShellで1回だけ実行してください。
Install-Module -Name BurntToast -Force -Scope CurrentUser
インストール後、WSLから動作確認します。
powershell.exe -Command "New-BurntToastNotification -Text 'Claude Code', 'Test'"
右下にトースト通知が表示されれば成功です。
4. settings.jsonに設定を追加
~/.claude/settings.json に以下を追加します。
{
// ... 他の設定 ...
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"New-BurntToastNotification -Text 'Claude Code', '入力待ちです' -Sound 'Reminder'\""
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"New-BurntToastNotification -Text 'Claude Code', 'タスク完了!' -Sound 'Reminder'\""
}
]
}
]
},
// 本記事とは関係ないが、ステータスラインのカスタマイズもおすすめ
"statusLine": {
"type": "command",
"command": "bash /home/YOUR_USERNAME/.claude/statusline-command.sh"
},
// ... 他の設定 ...
}
サウンドの種類
-Sound オプションで通知音を変更できます。
| サウンド名 | 説明 |
|---|---|
| Default | 標準の通知音(短め) |
| SMS | SMS受信音(短め) |
| メール受信音(短め) | |
| Reminder | リマインダー音(完了感がある) |
| Alarm〜Alarm10 | 目覚まし系(長め) |
| Call〜Call10 | 着信音系(長め) |
Alarm 系や Call 系は音が長いので、Default や Reminder がおすすめです。
5. ちょっと注意
設定変更後はClaude Codeをターミナルごと再起動する
settings.jsonを変更しても、Claude Codeを再起動しないと反映されないことがあります。ターミナルを完全に閉じて、新しく起動し直してください。
おわりに
設定後は別の作業に集中しながらClaude Codeを走らせられるようになりました。複数セッションを同時に動かしている方にも特におすすめです。Claude CodeのHooksはファイル編集後の自動フォーマットなど他にも使い道があるので、ぜひ活用してみてください。