【徹底解説】Claude Code Hooks で実現する、AIとの決定論的なコラボレーション


【徹底解説】Claude Code Hooks で実現する、AIとの決定論的なコラボレーション

disler/claude-code-hooks-mastery

2026-02-08

単に AI に指示を出すだけでなく、「AI の行動を強制的に制御する」「特定の処理を自動化する」 という、決定論的なレイヤーを追加できるのが最大の魅力です。

AI は便利ですが、時として「自由すぎて」困ることがありますよね。Hooks を使うと、エンジニアとしての「譲れない一線」をシステム的に保証できます。

安全装置
rm -rf / のような危険なコマンドや、.env ファイルの編集を物理的にブロックする。

品質管理
コードを書かせた後、必ず Prettier や ESLint を走らせてフォーマットを整える。

状況把握
AI が作業を終えたら、Slack やデスクトップ通知で「終わったよ!」と報告させる。

文脈注入
セッション開始時に、最新の Git ログやドキュメントを自動で読み込ませる。

Hooks は、プロジェクトルートの .claude/settings.json(プロジェクト用)または ~/.claude/settings.json(自分専用)で設定します。

一番簡単な始め方は、Claude Code のターミナルで /hooks と入力することです。対話形式で設定ガイドが表示されます。

大きく分けて 「どのタイミングで(Event)」「どんな条件で(Matcher)」「何をするか(Handler)」 の 3 つを定義します。

具体的にどんな風に使えるか、今日から使える実践的な例を紹介します。

AI が誤って重要なファイルを消したり、本番環境にデプロイしたりするのを防ぎます。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "run_command",
        "hooks": [
          {
            "type": "command",
            "command": "python3 -c \"import sys, json; data = json.load(sys.stdin); cmd = data.get('tool_input', {}).get('command', ''); exit(2 if 'rm -rf' in cmd or 'deploy' in cmd else 0)\""
          }
        ]
      }
    ]
  }
}

ポイント
終了コード 2 を返すと、Claude はそのアクションを 実行できなくなります。まさに「鉄壁の守り」です。

AI のインデントが気に入らなくても、毎回「直して」と言う必要はありません。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "edit_file|write_file",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write $CLAUDE_PROJECT_DIR"
          }
        ]
      }
    ]
  }
}

重たいリファクタリングを任せている間、別の作業をしていても安心です。

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"タスクが完了しました!\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}
イベント名タイミング主な用途
UserPromptSubmitあなたがプロンプトを投げた直後文脈の追加、プロンプトのバリデーション
PreToolUseAI がツール(コマンド実行等)を使う直前危険な操作のブロック、権限チェック
PostToolUseツールの実行が終わった直後自動フォーマット、テストの自動実行
StopAI がすべての回答を終えた時完了通知、作業レポートの生成
SessionStart新しいセッションが始まった時環境変数の読み込み、Git 状況の把握

Hooks はまさに「エンジニアのこだわり」を自動化するツールです。まずは /hooks コマンドで、通知設定あたりから「自分専用の Claude」に育ててみてはいかがでしょうか?


disler/claude-code-hooks-mastery