通知フックを設定したい
11. フックコマンド / 機能
Notification通知イベント
概要
Claude がユーザーへの通知を送る時に呼び出されます。環境変数 $CLAUDE_NOTIFICATION で通知内容を取得し、外部サービスへ転送できます。v2.1.198 以降は、バックグラウンドエージェントが入力待ちになった agent_needs_input と、完了した agent_completed のイベント種別も受け取れるようになりました。
設定例
// settings.json
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "notify-send 'Claude Code' \"$CLAUDE_NOTIFICATION\""
}
]
}
]
}
}
// Slack に通知するスクリプト例(./scripts/notify-slack.sh)
#!/bin/bash
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\": \"Claude: $CLAUDE_NOTIFICATION\"}" \
"$SLACK_WEBHOOK_URL"
// macOS の通知センターを使う例
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"$CLAUDE_NOTIFICATION\" with title \"Claude Code\"'"
}
]
}
]
}
}
// バックグラウンドエージェントの入力待ち/完了だけ拾う例
#!/bin/bash
# CLAUDE_HOOK_DATA の type フィールドで判定
event_type=$(echo "$CLAUDE_HOOK_DATA" | jq -r '.type // empty')
case "$event_type" in
agent_needs_input)
notify-send 'Claude Code' 'バックグラウンドエージェントが入力待ちです'
;;
agent_completed)
notify-send 'Claude Code' 'バックグラウンドエージェントが完了しました'
;;
esacこんな時に使う
- Claude からの通知をカスタマイズしたい時
- Slack や Discord に通知を送りたい時
- 離席中に進捗を把握したい時
- 長時間タスクの完了を知りたい時
- バックグラウンドエージェントが入力待ちになったら気づきたい時
使い方
- 1Notification イベントにフック定義を追加
- 2$CLAUDE_NOTIFICATION 環境変数で通知メッセージを取得
- 3Linux: notify-send、macOS: osascript で通知
- 4外部サービス連携には curl でWebhookを叩く
- 5CLAUDE_HOOK_DATA の type で agent_needs_input / agent_completed を判別
Tips
- Notification は matcher を使わない(通知全般に適用)
- Slack Webhook URL は環境変数で設定するのが安全
- 通知頻度が高い場合は rate limiting を検討
- 重要な通知だけ転送したい場合は grep でフィルタ
- agent_needs_input / agent_completed は v2.1.198 以降、バックグラウンドエージェントの状態変化を検知できる