Claude Code Hooksとは?設定方法・活用例・できることを徹底解説

Claude Code の Hooks(フック) を使えば、AIコーディングアシスタントの動作を「確実に」自動化できます。本記事では、Hooksの基本概念から設定方法、実践的な活用例まで、日本語でわかりやすく解説します。

テックジム東京本校では、情報科目の受験対策指導やAI駆動開発コースもご用意しております。

Claude Code Hooksとは?

Claude Code Hooks は、Claude Code のライフサイクルの特定タイミングで、ユーザーが定義したシェルコマンドやスクリプトを自動実行する仕組みです。

Anthropic が提供するターミナルベースの AI コーディングツール「Claude Code」は、コードの作成・編集・実行を自律的に行えますが、Hooks を使うことでその動作に確定的なルールを組み込むことができます。

「AIに頼むのではなく、必ず実行させる」—— それが Hooks の本質です。


なぜHooksが重要なのか

従来の AI コーディングアシスタントは、ユーザーがプロンプトで「コードをフォーマットして」「テストを実行して」と指示しても、モデルが忘れたり省略したりすることがありました。

Hooks はこの問題を根本的に解決します。

比較項目 プロンプト指示 Hooks
実行の確実性 確率的(モデル次第) 確定的(必ず実行)
設定の場所 チャットの都度 設定ファイルに一度だけ
チーム共有 難しい .claude/settings.json で共有可能
外部ツール連携 限定的 CLI・HTTP・エージェント等すべて対応

Hooksの構成要素

すべてのフック設定は、以下の 3つの要素 で構成されます。

1. Event(イベント)

フックが発火するライフサイクルのタイミングです。SessionStartPreToolUsePostToolUse などがあります。

2. Matcher(マッチャー)

フックを特定の条件に絞り込むオプションのフィルターです。正規表現で対象ツールや操作の種類を指定できます。

3. Action(アクション)

条件が一致したときに実際に実行される処理です。シェルコマンド、HTTPリクエスト、プロンプト評価など複数の種類があります。


イベントの種類一覧

Claude Code は 2026年時点で 21種類のライフサイクルイベント をサポートしています。主なものを以下に示します。

イベント名 発火タイミング 主な用途
SessionStart セッション開始時(起動・再開・クリア) 開発コンテキストの注入、環境変数の設定
PreToolUse Claudeがツールを実行する直前 危険なコマンドのブロック、バリデーション
PostToolUse ツール実行完了後 自動フォーマット、テスト実行、ログ記録
UserPromptSubmit ユーザーがプロンプトを送信したとき プロンプトの前処理、追加コンテキストの付与
Notification Claude が通知を送るとき デスクトップ通知、Slack 通知
Stop Claude が応答を完了したとき 自動コミット、セッションログの保存
SubagentStart サブエージェント起動時 DB接続のセットアップ、環境準備

ハンドラーの種類

Hooks には 4種類のハンドラー があり、用途に応じて使い分けられます。

command(コマンド)

最も基本的なハンドラー。シェルコマンドやスクリプトを実行します。

{
  "hooks": [
    {
      "event": "PostToolUse",
      "matcher": "Edit|Write",
      "action": {
        "type": "command",
        "command": "prettier --write $CLAUDE_FILE_PATHS"
      }
    }
  ]
}

http(HTTP)

イベントの JSON データを HTTP POST リクエストとして外部エンドポイントに送信します。外部サービスやウェブフックとの連携に適しています。

prompt(プロンプト)

軽量な Claude モデルにプロンプトを送り、yes/no の判定をさせます。自然言語によるバリデーションが可能です。

agent(エージェント)

Read・Grep・Glob などのツールを使えるサブエージェントを起動し、より複雑な条件を検証してから判定を返します。


設定方法

設定ファイルの場所

フックは以下の2か所に設定できます。

  • 個人設定~/.claude/settings.json(すべてのプロジェクトに適用)
  • プロジェクト設定.claude/settings.json(チームで共有可能)

基本的な設定例

{
  "hooks": [
    {
      "event": "PostToolUse",
      "matcher": "Edit|Write",
      "action": {
        "type": "command",
        "command": "eslint --fix $CLAUDE_FILE_PATHS"
      }
    }
  ]
}

フックの確認方法

Claude Code 内で /hooks と入力すると、設定済みフックを一覧表示するインタラクティブなブラウザが開きます。各フックのイベント・マッチャー・ハンドラーの詳細を確認できます(読み取り専用)。


実践的な活用例

例1:コード編集後に自動フォーマット

Python ファイルを編集するたびに blackruff を自動実行します。

{
  "hooks": [
    {
      "event": "PostToolUse",
      "matcher": "Edit|Write",
      "action": {
        "type": "command",
        "command": "ruff check --fix $CLAUDE_FILE_PATHS && black $CLAUDE_FILE_PATHS"
      }
    }
  ]
}

例2:危険なコマンドをブロック

rm -rf などの危険な操作を PreToolUse で検知してブロックします。

#!/bin/bash
# hooks/validate-bash.sh
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // ""')

if echo "$COMMAND" | grep -qE 'rm\s+-rf|sudo rm'; then
  echo "危険なコマンドが検出されました: $COMMAND" >&2
  exit 2  # ブロック
fi

exit 0  # 許可

例3:セッション終了後に自動コミット

Stop イベントを使い、作業完了後に変更を自動的に git コミットします。

{
  "hooks": [
    {
      "event": "Stop",
      "action": {
        "type": "command",
        "command": "git add -A && git commit -m 'auto: Claude Code session $(date +%Y%m%d-%H%M%S)'"
      }
    }
  ]
}

例4:デスクトップ通知

Claude の作業完了時にデスクトップ通知を送ります(macOS の場合)。

{
  "hooks": [
    {
      "event": "Stop",
      "action": {
        "type": "command",
        "command": "osascript -e 'display notification \"Claude Code が作業を完了しました\" with title \"Claude Code\"'"
      }
    }
  ]
}

例5:テストの自動実行(非同期)

時間のかかるテストスイートはバックグラウンドで非同期実行できます。

{
  "hooks": [
    {
      "event": "PostToolUse",
      "matcher": "Write",
      "action": {
        "type": "command",
        "command": "npm test -- --findRelatedTests $CLAUDE_FILE_PATHS",
        "run_in_background": true
      }
    }
  ]
}

終了コードとエラー制御

フックのシェルコマンドは 終了コード(exit code) によって Claude Code の動作を制御できます。

終了コード 意味 動作
0 成功 処理を続行。stdout の JSON 出力を解析
2 ブロックエラー 処理を中断。stderr の内容が Claude へのエラーメッセージとして渡される
その他 非ブロックエラー エラーをログに残しつつ処理は続行

PreToolUse で exit 2 を返すとツール呼び出しがブロックされ、UserPromptSubmit で exit 2 を返すとプロンプト自体が拒否されます。


セキュリティ上の注意点

Hooks は強力な機能ですが、いくつかの重要な注意事項があります。

⚠️ フルパーミッションで実行される フックはサンドボックスなしで、あなたのユーザー権限で実行されます。設定ミスはファイルの削除や機密情報の漏洩につながる可能性があります。

⚠️ スクリプトは小さく・明確に保つ フックは「やること一つ」に絞り、副作用を最小限にしましょう。

⚠️ 本番コードとして扱う フックスクリプトはプロジェクトのコードと同様にバージョン管理し、チームでレビューしましょう。

🔒 エンタープライズ向け設定 組織管理者は allowManagedHooksOnly 設定を使うことで、承認済みのフックのみを許可し、開発者が独自のフックを追加できないよう制限できます。


よくある質問(FAQ)

Q. Hooks は Claude.ai でも使えますか? A. いいえ。Hooks は CLI ツール「Claude Code」専用の機能です。Claude.ai(ウェブ版・アプリ版)には対応していません。

Q. フックが動かない場合はどうすれば? A. claude --debug オプションで起動すると詳細なログが確認できます。また、/hooks コマンドで設定が正しく読み込まれているか確認してください。

Q. チームで同じフックを使うには? A. プロジェクトルートの .claude/settings.json に設定を記述し、git で共有するのが最善の方法です。

Q. 非同期(バックグラウンド)実行はできますか? A. はい。"run_in_background": true を設定することで、テストスイートのような重い処理を非同期で実行できます。

Q. HTTP エンドポイントに通知を送れますか? A. type: "http" ハンドラーを使えば、Slack・Discord・任意のウェブフックに POST リクエストを送ることができます。


まとめ

Claude Code Hooks は、AI コーディングアシスタントを「便利なアシスタント」から「確実に動く自動化パートナー」へと昇格させる機能です。

  • 21種類のイベントでライフサイクルのあらゆる場面をカバー
  • 4種類のハンドラー(command・http・prompt・agent)で柔軟な自動化
  • 確定的な実行により、AIの”うっかり”をゼロに
  • チーム共有で全員が同じ品質基準を維持

まずは PostToolUse で自動フォーマットを設定するだけでも、日々の開発体験が大きく向上します。ぜひ試してみてください。


参考リンク


最終更新:2026年4月

    ゼロから始めるClaudeCode講座のご案内

    テックジム東京本校では「ClaudeCode」の体験講座を開催。
    「その日のうちに動かす」 をゴールに、環境構築から実践まで。
    毎週土曜日15時。参加は無料です。対面・ハンズオンだから初心者でも安心。

    らくらくPython塾 – 読むだけでマスター

    共通テスト「情報I」対策解説講座

    実践で学ぶPython速習講座

    テックジム東京本校

    格安のプログラミングスクールといえば「テックジム」。
    講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
    対面型でより早くスキル獲得、月額2万円のプログラミングスクールです。
    情報科目の受験対策指導やAI駆動開発コースもご用意しております。