CC逆引きリファレンス

通知フックを設定したい

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 に通知を送りたい時
  • 離席中に進捗を把握したい時
  • 長時間タスクの完了を知りたい時
  • バックグラウンドエージェントが入力待ちになったら気づきたい時

使い方

  1. 1Notification イベントにフック定義を追加
  2. 2$CLAUDE_NOTIFICATION 環境変数で通知メッセージを取得
  3. 3Linux: notify-send、macOS: osascript で通知
  4. 4外部サービス連携には curl でWebhookを叩く
  5. 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 以降、バックグラウンドエージェントの状態変化を検知できる