Source: https://aiprimetech.io/ja/claude-code/hooks/ [ホーム](/ja/) › [Claude Code](/ja/claude-code/) › フック [概要](/ja/claude-code/)[インストール](/ja/claude-code/install/)[CLIリファレンス](/ja/claude-code/cli/)[料金と制限](/ja/claude-code/pricing/)[Agent SDK](/ja/claude-code/sdk/)[スキルとプラグイン](/ja/claude-code/skills/)[GitHub](/ja/claude-code/github/)[ウェブ、デスクトップ、IDE](/ja/claude-code/web-and-desktop/)[モデル](/ja/claude-code/models/)[エラー](/ja/claude-code/errors/)[オープンソース?](/ja/claude-code/open-source/)[チュートリアル](/ja/claude-code/tutorial/)[学生向け](/ja/claude-code/for-students/)[QA自動化](/ja/claude-code/qa-automation/)[Cursorとの比較](/ja/claude-code/vs-cursor/)[Codex・OpenCodeとの比較](/ja/claude-code/vs-codex/)[サブエージェント](/ja/claude-code/subagents/)[フック](/ja/claude-code/hooks/)[MCP](/ja/claude-code/mcp/)[エコシステム](/ja/claude-code/ecosystem/)[VS Code](/ja/claude-code/vscode/)[OpenRouter](/ja/claude-code/openrouter/)[レート制限](/ja/claude-code/rate-limits/)[中国語ガイド](/claude-code/zh/) 最終更新: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でアカウントを作成](/register?promo=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キーを取得](/register?promo=CLAUDECODE) [無制限プランを見る](/ja/plans/) AI Prime Techは独立したAPIゲートウェイであり、Anthropicとの提携関係はなく、同社の推奨や支援も受けていません。「Claude」と「Claude Code」はAnthropicの商標です。ここで説明するClaude Codeの機能は、執筆時点のAnthropicの公開ドキュメントに基づいており、頻繁に変更されます。このページの料金とモデル一覧は、このゲートウェイの現在の設定から取得しています。 ## その他のClaude Codeガイド [Claude Code:完全ガイド](/ja/claude-code/)[Claude Codeのインストール方法](/ja/claude-code/install/)[Claude Code CLIドキュメント:コマンドとフラグ](/ja/claude-code/cli/)[Claude Codeの料金と制限を解説](/ja/claude-code/pricing/)[Claude Code SDKからClaude Agent SDKへ](/ja/claude-code/sdk/)[Claude Codeのスキルとプラグイン](/ja/claude-code/skills/)[GitHubでのClaude Code:App、Action、@claude](/ja/claude-code/github/)[Claude Codeにウェブインターフェースはある?ウェブ、デスクトップ、IDEを解説](/ja/claude-code/web-and-desktop/)[Claude Codeが使用するモデルと変更方法](/ja/claude-code/models/)[Claude Codeのエラーと修正方法](/ja/claude-code/errors/)[Claude Codeはオープンソースですか?](/ja/claude-code/open-source/)[Claude Codeチュートリアル:初めての実践セッション](/ja/claude-code/tutorial/)[学生向けClaude:Claude Code、API、教育向け提供で実際に得られるもの](/ja/claude-code/for-students/)[QA自動化にClaude Codeを使う方法](/ja/claude-code/qa-automation/)[Claude CodeとCursorの比較:どちらをいつ使うか、そして両方を併用する方法](/ja/claude-code/vs-cursor/)[Claude Code vs Codex vs OpenCode:ターミナルエージェントの比較](/ja/claude-code/vs-codex/)[Claude Codeのサブエージェント:仕組み、定義方法、エージェントチーム](/ja/claude-code/subagents/)[Claude CodeのMCP:サーバー接続、スコープ、リモートMCPと実例](/ja/claude-code/mcp/)[Claude Codeのエコシステム:ルーター、フレームワーク、プラグインと、それらをまとめたリスト](/ja/claude-code/ecosystem/)[VS Codeで使うClaude Code:拡張機能、ターミナル経由の利用、エラー](/ja/claude-code/vscode/)[Claude CodeでOpenRouterを使う方法(使わないほうがよい場合も)](/ja/claude-code/openrouter/)[Claudeのレート制限エラー:「API error: rate limit reached」の意味と解決方法](/ja/claude-code/rate-limits/)[Claude Codeの使い方:インストールから日常的な利用まで](/claude-code/zh/)