CC逆引きリファレンス

フックを設定したい

10. フック

コマンド / 機能

settings.json

設定ファイル

概要

フックは ~/.claude/settings.json(グローバル)または .claude/settings.json(プロジェクト)の hooks フィールドで定義します。イベントごとにフック配列を設定し、マッチャーで対象ツールを絞り込めます。

設定例

// ~/.claude/settings.json または .claude/settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo 'Bash実行前' >> ~/.claude/hooks.log"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write $CLAUDE_FILE_PATH"
          }
        ]
      }
    ],
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "notify-send 'Claude' '$CLAUDE_NOTIFICATION'"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo 'タスク完了' | tee -a ~/.claude/activity.log"
          }
        ]
      }
    ]
  }
}

こんな時に使う

  • Claude の動作をカスタマイズしたい時
  • 自動化ワークフローを構築したい時
  • ツール実行前後に処理を挟みたい時

使い方

  1. 1settings.json の hooks セクションにイベント名をキーとして追加
  2. 2各イベントに配列形式でフック定義を追加
  3. 3matcher でフックを適用するツールを指定(省略で全ツール対象)
  4. 4hooks 配列に type: 'command' と command を指定

Tips

  • フックはイベント発生順に同期的に実行される
  • フックの stdout 出力は Claude にフィードバックされる
  • 複数のフックを同じイベントに設定可能
  • プロジェクト設定はグローバル設定より優先される