フック(Hooks)

フックは、Claude Code のライフサイクルの特定のタイミングで自動的にシェルコマンドを実行する仕組みです。「ファイルを編集したら自動フォーマット」「権限確認が出たらデスクトップ通知」「セッション開始時にコンテキストを自動挿入」など、決定的(deterministic)な自動化を実現できます。Claude の判断に依存せず、必ず実行される点が AI への指示との違いです。

フックの動作フロー

イベント発生
matcher で判定
アクション実行
結果を返却
ホバーして各ステップの詳細を確認

フックの設定方法

settings.json の hooks セクションにイベントごとの設定を記述します。

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write modified-file.ts"
          }
        ]
      }
    ]
  }
}

フックタイプ

フックには4つのタイプがあります。ほとんどの場合は command タイプで十分です。

タイプ説明用途
commandシェルコマンドを実行フォーマッタ実行、通知送信など
promptシングルターンのLLM評価コード品質チェック
agentツール付きのマルチターン検証複雑な検証フロー
httpURLにイベントデータをPOST外部サービス連携

利用可能なイベント一覧

Claude Code のライフサイクル全体にわたって、さまざまなタイミングでフックを設定できます。

イベント発火タイミングmatcher 例
SessionStartセッション開始・再開時startup, resume, clear
UserPromptSubmitユーザーがプロンプトを送信した時なし
PreToolUseツール実行の直前Bash, Edit, Write
PostToolUseツールが正常に完了した後Edit, Write
PostToolUseFailureツールがエラーで失敗した後Bash
Notification通知が送信される時permission_prompt
StopClaude の応答が完了した時なし
ConfigChange設定ファイルが変更された時user_settings
SessionEndセッションが終了する時clear, logout

終了コードの意味

フックのコマンドが返す終了コードによって、その後の動作が変わります。

終了コード動作
0正常完了。アクション続行。標準出力が Claude のコンテキストに追加される
2ブロック。アクションを中止し、標準エラーが Claude にフィードバックされる
その他アクションは続行。エラーはログに記録されるのみ
公式フックガイド ↗