コンテンツにスキップ

Claude Code 完全ガイド

Claude Code Hooks革命:開発ワークフロー自動化の新次元【2026年最新】

🆕 2026年2月 Update: Hooks機能の最新状況

  • Claude Code v2.0+: Hooksは14種のイベントタイプに拡張。prompt型・agent型ハンドラーに加え、非同期フック・JSON構造化出力にも対応
  • Agent Teams連携: TeammateIdleTaskCompleted フックでエージェントチームの品質ゲートを設定可能に
  • /hooks インタラクティブCLI: Hooks設定をCLI上で対話的に管理可能に
  • 最新の包括的ガイドはClaude Code Hooks完全ガイド(2026年2月版)をご覧ください

はじめに

Claude Code Hooksは、AI支援開発に決定論的な制御をもたらす画期的な機能です。従来のAI開発支援では「一貫性の欠如」「手動作業の残存」が課題でしたが、Hooksによってこれらを完全に自動化できるようになりました。

重要なのは、HooksはAIが判断して実行するのではなく、ユーザーが定義したルールに基づいて確実に実行されるという点です。本記事では、Claude Code Hooksの全14イベント・3種類のハンドラータイプを活用した実践的な開発ワークフロー自動化を解説します。

この記事のポイント

  • 決定論的な自動化フロー

    ユーザー定義のルールに基づき、コミット前の品質チェック、テスト実行、デプロイチェックを確実に自動化

  • インテリジェントなコード整形

    ファイル変更時に自動でPrettier、Black、Ruffを実行し、コード品質を維持

  • セキュリティ強化

    本番環境ファイルへの不正アクセス防止やシークレット検出を事前チェックで実現

  • 開発効率の大幅向上

    手動の反復作業を排除し、開発者が本質的なロジック開発に集中できる環境を構築

🎯 Claude Code Hooks:次世代開発自動化の核心

Hooksとは何か?

Claude Code Hooksは、Claude Codeのライフサイクル特定ポイントで自動実行されるユーザー定義のシェルコマンドまたはLLMプロンプトです。

決定論的制御 - Hooksの最大の特長

HooksはAI(LLM)が状況判断して実行するものではありません。ユーザーが事前に定義したルールに基づいて毎回確実に、決定論的に実行されます。これにより、AIの判断のばらつきに依存せず、一貫した品質管理が保証されます。

設定はJSON形式で、~/.claude/settings.json(ユーザー設定)または.claude/settings.json(プロジェクト設定)に記述します。

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

全14種類のイベントタイプ

Claude Code Hooksは以下の14種類のイベントをサポートしています。それぞれが開発ライフサイクルの異なるポイントに対応します。

セッション管理

イベントタイミング用途
SessionStartセッション開始時環境セットアップ、依存関係チェック
SessionEndセッション終了時クリーンアップ、ログ記録

ユーザー入力

イベントタイミング用途
UserPromptSubmitユーザープロンプト送信時入力バリデーション、コンテキスト付加

ツール実行ライフサイクル

イベントタイミング用途
PreToolUseツール実行前ファイル保護、操作ブロック
PermissionRequest権限要求時アクセス制御の強化
PostToolUseツール実行後(成功時)フォーマット、テスト、品質チェック
PostToolUseFailureツール実行失敗時エラーハンドリング、通知

エージェント管理

イベントタイミング用途
SubagentStartサブエージェント開始時サブエージェントの設定
SubagentStopサブエージェント終了時結果の処理
TeammateIdleチームメイトアイドル時リソース管理

タスク完了・通知

イベントタイミング用途
Stop応答停止時後処理の実行
TaskCompletedタスク完了時完了通知、レポート生成
Notification通知発生時Slack通知、メール送信

メモリ管理

イベントタイミング用途
PreCompactコンテキスト圧縮前重要情報の保存

3種類のフックハンドラータイプ

各フックには3種類のハンドラータイプがあり、用途に応じて使い分けます。

1. command - シェルコマンド実行

最もシンプルなタイプです。シェルコマンドを直接実行します。

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

2. prompt - シングルターンLLM評価

LLMに対してプロンプトを送信し、{ok: true/false, reason: "..."} の形式で判定結果を返すタイプです。コードレビューやポリシーチェックに適しています。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "prompt",
            "prompt": "Review the proposed changes. Reject if they modify production database connection strings or contain hardcoded credentials."
          }
        ]
      }
    ]
  }
}

3. agent - マルチターンサブエージェント

Read、Grep、Globなどのツールアクセスを持つサブエージェントを起動するタイプです。より複雑な分析や複数ファイルにまたがるチェックに使用します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "agent",
            "prompt": "Check if the edited files follow the project's coding conventions by reading .editorconfig and comparing with the changes. Report any violations."
          }
        ]
      }
    ]
  }
}

🔧 実践的Hooks設定例

1. Python開発環境の完全自動化

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "ruff check --fix $CLAUDE_FILE_PATHS && black $CLAUDE_FILE_PATHS && isort $CLAUDE_FILE_PATHS"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "bandit -r $CLAUDE_FILE_PATHS -ll -q"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "pytest --tb=short -q && coverage report --show-missing"
          }
        ]
      }
    ]
  }
}

2. TypeScript/React プロジェクト設定

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "prettier --write $CLAUDE_FILE_PATHS && eslint --fix $CLAUDE_FILE_PATHS && tsc --noEmit"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "npm run test -- --passWithNoTests"
          }
        ]
      }
    ]
  }
}

3. セキュリティ強化設定

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "git secrets --scan $CLAUDE_FILE_PATHS || (echo 'Secret detected! Blocking operation.' && exit 1)"
          },
          {
            "type": "prompt",
            "prompt": "Review the proposed file changes. Reject if they contain API keys, tokens, passwords, or any hardcoded credentials. Also reject changes to production configuration files."
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo 'Security hooks active. All file modifications will be scanned for secrets.'"
          }
        ]
      }
    ]
  }
}

🔒 セキュリティに関する重要事項

フックの実行権限

フック実行時の権限に注意

フックはユーザーのフル権限で実行されます。つまり、フックに設定されたコマンドは、ターミナルで直接実行した場合と同じ権限を持ちます。信頼できるコマンドのみを設定してください。

フックスナップショット

セキュリティ対策として、フックの設定はセッション開始時にスナップショットとしてキャプチャされます。これにより、セッション中にフック設定が変更されても、その変更は現在のセッションには反映されません。悪意のあるコードがセッション中にフック設定を改ざんすることを防止します。

エンタープライズ管理

組織でClaude Codeを運用する場合、allowManagedHooksOnly 設定を使用して、ユーザー定義・プロジェクト定義・プラグイン定義のフックをブロックし、管理者が承認したフック(managedフック)とSDKフックのみを許可できます。

{
  "allowManagedHooksOnly": true
}

これにより、組織全体で統一されたセキュリティポリシーとコード品質基準を強制できます。

🤖 CI/CDパイプラインとの統合

Claude Code Hooksを活用した開発フロー

Claude Code HooksはローカルのAI開発環境を強化し、既存のCI/CDパイプラインと組み合わせることで効果を最大化できます。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "prompt",
            "prompt": "Check if the changes follow the project's contribution guidelines. Verify that appropriate tests exist for new functionality."
          }
        ]
      }
    ],
    "TaskCompleted": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "npm run lint && npm run test && echo 'All checks passed - ready for CI/CD pipeline'"
          }
        ]
      }
    ]
  }
}

実際の開発フロー例

graph TD
    A[開発者がClaude Codeで実装] --> B[SessionStart: 環境チェック]
    B --> C[PreToolUse: ファイル保護・セキュリティ]
    C --> D[ツール実行: コード生成・編集]
    D --> E[PostToolUse: フォーマット・リント]
    E --> F[Stop: テスト実行]
    F --> G[TaskCompleted: 完了通知]
    G --> H[git push → CI/CDパイプライン]
    H --> I[PR作成・レビュー・マージ]

📊 Hooksによる開発改善効果

定性的な改善効果

Claude Code Hooksの導入により、以下のような改善が期待できます。

品質面の改善

  • コードスタイルの完全統一: 全てのファイル変更に対してフォーマッタが自動実行されるため、スタイルの不一致が根絶される
  • セキュリティリスクの早期発見: シークレットの混入やプロダクション設定の誤変更をツール実行前にブロック
  • テストの確実な実行: コード変更の度にテストが自動実行されるため、テスト忘れが発生しない

効率面の改善

  • 手動の反復作業の排除: フォーマット実行、リント確認、テスト実行などの手動ステップが不要に
  • フィードバックループの短縮: コード変更と同時に品質チェックが行われるため、問題の発見と修正が迅速化
  • CI/CDでの手戻り削減: ローカルで事前チェックが行われるため、CIパイプラインでの失敗が大幅に減少

🛠️ クイックスタートガイド

Step 1: Claude Code Hooks設定

ユーザー設定ファイル(~/.claude/settings.json)に以下のように記述します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "prettier --write $CLAUDE_FILE_PATHS || black $CLAUDE_FILE_PATHS"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "npm test || pytest -x"
          }
        ]
      }
    ]
  }
}

プロジェクト固有の設定が必要な場合は、プロジェクトルートの .claude/settings.json に記述します。

Step 2: 設定の検証

# Claude Codeで簡単なファイル編集
claude "Create a simple Python function to calculate fibonacci"

# Hooksが自動実行されることを確認
# → PostToolUse: フォーマット適用
# → Stop: テスト実行

Step 3: プロジェクト全体への展開

// .claude/settings.json (プロジェクトルート)
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo 'Project hooks loaded. Python formatting and testing enabled.'"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "ruff check --fix $CLAUDE_FILE_PATHS && black $CLAUDE_FILE_PATHS"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "git secrets --scan $CLAUDE_FILE_PATHS 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

🎯 高度な活用パターン

1. マルチ環境対応Hooks

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "ENV=$(git branch --show-current); case $ENV in main) npm run test:all && npm run security:audit;; staging) npm run test:integration;; *) npm run test:unit;; esac"
          }
        ]
      }
    ]
  }
}

2. promptハンドラーを活用したコードレビュー

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "prompt",
            "prompt": "Review the code changes for: 1) Potential performance issues 2) Missing error handling 3) Violation of SOLID principles. Approve only if all checks pass."
          }
        ]
      }
    ]
  }
}

3. agentハンドラーを活用したプロジェクト整合性チェック

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "agent",
            "prompt": "Read the project's CONTRIBUTING.md and check if the recent changes follow the documented conventions. Also verify that any new public functions have corresponding test files."
          }
        ]
      }
    ]
  }
}

🔮 今後の展望

Hooksエコシステムの発展

Claude Code Hooksは、開発ワークフロー自動化の基盤として今後さらに発展していくことが期待されます。

  • イベントタイプの拡充: 現在の14種類から、より細かな開発ライフサイクルへの対応
  • ハンドラータイプの進化: agentタイプの能力拡張による、より高度な自動分析
  • エンタープライズ機能の強化: 組織横断的なフック管理とポリシー適用

まとめ

Claude Code Hooksは、AI支援開発に決定論的な制御レイヤーを追加する画期的な機能です。

  • 決定論的実行: AIの判断に依存せず、ユーザー定義のルールが毎回確実に実行される
  • 14種類のイベント: セッション管理からタスク完了まで、開発ライフサイクル全体をカバー
  • 3種類のハンドラー: command(シェルコマンド)、prompt(LLM評価)、agent(サブエージェント)を用途に応じて使い分け
  • セキュリティ重視: スナップショット機構とエンタープライズ管理による安全な運用
  • 品質の標準化: フォーマット、テスト、セキュリティチェックの完全自動化

HooksをCI/CDパイプラインと組み合わせることで、ローカル開発からデプロイまで一貫した品質管理が実現できます。

導入のポイント

まずはPostToolUseでフォーマッタの自動実行から始め、段階的にPreToolUseでのセキュリティチェック、promptハンドラーでのコードレビューへと拡張していくことを推奨します。

関連記事