ホーム › Claude Code › フック
概要インストールCLIリファレンス料金と制限Agent SDKスキルとプラグインGitHubウェブ、デスクトップ、IDEモデルエラーオープンソース?チュートリアル学生向けQA自動化Cursorとの比較Codex・OpenCodeとの比較サブエージェントフックMCPエコシステムVS CodeOpenRouterレート制限中国語ガイド
最終更新:2026年10月11日

Claude Codeのフック:エージェントの動作を決定論的に制御する

フックは、Claude Codeが処理ループの決まったタイミングで実行するシェルコマンドです。ツール呼び出しの前後、プロンプトの送信時、処理の終了時などに実行されます。モデルが従うとは限らないCLAUDE.mdの指示とは異なり、フックは必ず実行されます。これにより、確実に適用されるルールを作れます。

TLDR

  • 設定場所: .claude/settings.json (プロジェクト用)または ~/.claude/settings.json (ユーザー用)、または次を使用: /hooks.
  • イベント:PreToolUse、PostToolUse、UserPromptSubmit、Notification、Stop、SubagentStop、PreCompact、SessionStart。
  • フックは標準入力でJSON(ツール名、入力、セッション)を受け取ります。終了コード0は許可、終了コード2はブロックを意味し、標準エラー出力をClaudeに返します。
  • 主な用途:編集のたびに整形する、危険なコマンドをブロックする、終了前にテストを必須にする、デスクトップ通知を送る。

フックの構成

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "npx prettier --write \"$(jq -r .tool_input.file_path)\"" }
        ]
      }
    ]
  }
}

構成要素は、イベント、マッチャー(ツールイベントではツール名に適用する正規表現。省略するとすべてに一致)、および実行するコマンドです。コマンドは、イベントを記述したJSONオブジェクトを標準入力で受け取ります。ツールイベントでは、これに次が含まれます: tool_name と tool_input。上の例はこれを使って、直前に編集されたファイルを特定します。リポジトリで共有する場合は次に配置します: .claude/settings.json 。自分だけで使う場合は次に配置します: ~/.claude/settings.json 。または、次を実行して /hooks Claude Codeに書き込ませます。

イベント

  • PreToolUse — ツールの実行前。次の操作が可能な唯一のイベントです: ブロック:終了コード2で呼び出しをキャンセルし、Claudeは標準エラー出力をその理由として読み取ります。
  • PostToolUse — ツールの成功後。編集されたファイルに対してフォーマッター、リンター、型チェックを実行します。
  • UserPromptSubmit — プロンプトの送信時。コンテキストを追加したり、プロンプトを拒否したりできます。
  • Stop / SubagentStop — エージェント(またはサブエージェント)が終了しようとするとき。ここでの終了コード2は「まだ完了していない」を意味します。典型的な用途は、テストが失敗している間は終了を拒否することです。
  • PreCompact — 次の処理の前: /compact。会話の全記録から必要な情報を保存します。
  • SessionStart — セッションの開始時または再開時。環境を読み込み、リマインダーを表示します。
  • Notification — Claude Codeがユーザーの対応を必要とするとき(許可の確認、待機中)。デスクトップ通知やSlack通知に接続します。

危険なコマンドのブロック

#!/usr/bin/env bash
# .claude/hooks/guard.sh  -- PreToolUse, matcher: Bash
cmd=$(jq -r '.tool_input.command')
if echo "$cmd" | grep -Eq 'rm -rf|git push --force|DROP TABLE|--no-verify'; then
  echo "blocked by guard.sh: $cmd" >&2
  exit 2
fi
exit 0

終了コード2が動作を決める規約です。ツール呼び出しは実行されず、フックが標準エラー出力に書き出した内容がClaudeへの説明になります。そのため、Claudeは同じ操作を再試行せず、別の方法を選べます。それ以外のゼロ以外の終了コードはログに記録されますが、ブロックはしません。

「テストが通るまで終了しない」

#!/usr/bin/env bash
# Stop hook: refuse to finish while the suite is red
if ! npm test --silent >/tmp/claude-test.log 2>&1; then
  echo "Tests are failing; fix them before finishing:" >&2
  tail -n 40 /tmp/claude-test.log >&2
  exit 2
fi

ヘッドレス実行では、次の上限設定と組み合わせてください: --max-turns 。修正不可能な失敗によって無限ループに陥るのを防げます。

フックとCLAUDE.mdと権限の比較

CLAUDE.mdはモデルが読む助言です。 /permissions は、確認なしに実行してよい操作の一覧です。フックはそれらに関係なく実行されるコードです。CLAUDE.mdはスタイルとコンテキストに、権限は許可と確認の境界に、フックは毎回確実に実施すべき処理に使います。たとえば、整形、シークレットのスキャン、テストによる実行制御、監査ログです。これらは組み合わせて機能します。権限によって次の実行が許可されても、 Bash(git *) PreToolUseフックは引き続き次をブロックします: git push --force.

フックとゲートウェイ

フックはローカルで実行され、APIには一切アクセスしないため、Claude Codeの接続先を次にしても動作は変わりません: ANTHROPIC_BASE_URL=https://aiprimetech.io。便利な組み合わせの例として、次のフックがあります: Stop 。自分のログから次の形式の使用量を表示します: /cost。これにより、従量課金のクレジットを使うチームは、各セッションの終了時にその料金を確認できます。

まずは無料で試す

新規アカウントには $5分の無料APIクレジット を、コード CLAUDECODE で提供します。SonnetでClaude Codeを一晩試すのに十分な額です。その後は額面の7.69231倍のクレジットを利用できます。

export ANTHROPIC_BASE_URL=https://aiprimetech.io
export ANTHROPIC_API_KEY=your_key

コードCLAUDECODEでアカウントを作成

よくある質問

Claude Codeフックとは何ですか?

Claude Codeが処理ループ内のイベントに応じて自動実行するシェルコマンドです。ツール呼び出しの前後、プロンプトの送信時、終了時などに実行されます。CLAUDE.mdの指示とは異なり、動作は決定的です。

フックでコマンドをブロックするにはどうすればよいですか?

マッチャーをBashにしたPreToolUseフックで、標準入力のtool_input.commandを検査し、終了コード2で終了します。標準エラー出力のテキストは、その理由としてClaudeに表示されます。

フックはどこに配置しますか?

プロジェクト内の.claude/settings.json(共有用)または~/.claude/settings.json(個人用)のhooksキーの下に配置します。/hooksで対話的に編集できます。

ゲートウェイでClaude Codeを実行

同じモデルを環境変数の設定だけで利用できます。額面の7.69231倍のクレジット、または定額無制限プランを選べます。 新規アカウント:コードCLAUDECODEで$5分の無料APIクレジット。

APIキーを取得 無制限プランを見る

AI Prime Techは独立したAPIゲートウェイであり、Anthropicとの提携関係はなく、同社の推奨や支援も受けていません。「Claude」と「Claude Code」はAnthropicの商標です。ここで説明するClaude Codeの機能は、執筆時点のAnthropicの公開ドキュメントに基づいており、頻繁に変更されます。このページの料金とモデル一覧は、このゲートウェイの現在の設定から取得しています。

その他のClaude Codeガイド

Claude Code:完全ガイドClaude Codeのインストール方法Claude Code CLIドキュメント:コマンドとフラグClaude Codeの料金と制限を解説Claude Code SDKからClaude Agent SDKへClaude CodeのスキルとプラグインGitHubでのClaude Code:App、Action、@claudeClaude Codeにウェブインターフェースはある?ウェブ、デスクトップ、IDEを解説Claude Codeが使用するモデルと変更方法Claude Codeのエラーと修正方法Claude Codeはオープンソースですか?Claude Codeチュートリアル:初めての実践セッション学生向けClaude:Claude Code、API、教育向け提供で実際に得られるものQA自動化にClaude Codeを使う方法Claude CodeとCursorの比較:どちらをいつ使うか、そして両方を併用する方法Claude Code vs Codex vs OpenCode:ターミナルエージェントの比較Claude Codeのサブエージェント:仕組み、定義方法、エージェントチームClaude CodeのMCP:サーバー接続、スコープ、リモートMCPと実例Claude Codeのエコシステム:ルーター、フレームワーク、プラグインと、それらをまとめたリストVS Codeで使うClaude Code:拡張機能、ターミナル経由の利用、エラーClaude CodeでOpenRouterを使う方法(使わないほうがよい場合も)Claudeのレート制限エラー:「API error: rate limit reached」の意味と解決方法Claude Codeの使い方:インストールから日常的な利用まで