Claude Codeのフック(Hooks)特定のタイミングで確実に処理を実行する仕組み
フックは、Claude Codeの動作の特定のタイミング(ツール実行の前後など)で、決めたコマンドを自動実行する仕組みです。指示では保証できない処理を確実に実行する用途、設定の考え方、使用例、安全上の注意を整理します。
公的機関・公式資料などの一次情報と照合して作成しています。このサイトについて
Claude Codeのフックとは
フック(Hooks)は、Claude Codeの動作の特定のタイミング(たとえば、ファイルを編集した後、コマンドを実行する前など)に、あらかじめ決めたコマンドを、自動的に実行する仕組みです。CLAUDE.mdに「編集後は、必ず整形すること」と書いても、Claudeが守る保証はありません。一方、フックは、プログラムとして確実に実行されるため、「必ずやってほしい処理」を、仕組みとして担保できます(CLAUDE.mdの書き方、権限設定とパーミッションモード)。
対応するタイミング(イベント)・設定の書式・入出力の仕様は、更新されることがあります。最新の仕様は、公式ドキュメントで確認してください。
指示とフックの違い
| 項目 | CLAUDE.mdなどの指示 | フック |
|---|---|---|
| 性質 | 「お願い」。守られない場合がある | 「プログラム」。条件が合えば必ず実行される |
| 向く用途 | 方針・好み・背景の共有 | 整形、検査、記録、禁止操作のブロックなど |
| 実行主体 | Claudeの判断 | Claude Codeの仕組み(Claudeの判断を介さない) |
主なタイミング(イベントの例)
| タイミング | 内容 |
|---|---|
| ツール実行の前 | 実行を、許可・拒否・内容の確認ができる |
| ツール実行の後 | 実行結果に対して、整形・検査などを行える |
| ユーザーの入力時 | 入力に、情報を追加したり、検査したりできる |
| 応答の完了時 | 作業終了時の通知・検査など |
| 通知の発生時 | 許可待ちなどの通知に、反応できる |
| セッションの開始・終了時 | 準備や後片付け |
公式のイベント名では、たとえばツール実行の前がPreToolUse、後がPostToolUse、入力時がUserPromptSubmit、応答の完了時がStop、通知がNotification、セッションの開始・終了がSessionStart・SessionEndです(2026年10月時点)。ほかにも、サブエージェントの開始・終了や、会話の圧縮の前後などのイベントがあります。利用できるイベントの種類は、更新されます。公式のリファレンスで確認してください。
設定の考え方
フックは、設定ファイル(settings.jsonなど。settings.jsonの設定項目)に書きます。基本の要素は次のとおりです。
| 要素 | 内容 |
|---|---|
| イベント | どのタイミングで動かすか |
| 対象の条件(マッチャー) | どのツール・操作のときに動かすか(例:ファイル編集のときだけ) |
| 実行するコマンド | 実際に走らせる処理(シェルコマンドやスクリプト。HTTPへの送信やモデルによる判定など、コマンド以外の種類も用意されている) |
/hooksコマンドでは、設定済みのフックと、その設定元(ユーザー設定・プロジェクト設定・プラグインなど)を一覧で確認できます(現在は閲覧用で、追加・編集は設定ファイルで行います。スラッシュコマンド)。書式は、必ず公式の最新の例に従ってください。
使用例
| 用途 | 内容 |
|---|---|
| 自動整形 | ファイルを編集するたびに、フォーマッタを実行する |
| 自動テスト・検査 | 編集後に、静的解析や単体テストを実行する |
| 禁止操作のブロック | 特定のファイル(本番設定など)の編集や、危険なコマンドを、実行前に拒否する |
| 記録(ログ) | 実行されたコマンドを、ファイルに記録する |
| 通知 | 作業が終わったとき、許可待ちのときに、通知を出す |
| 文脈の追加 | セッション開始時に、最新の情報(例:直近の変更)を渡す |
実行前のフックによる制御
ツール実行前のフックでは、その操作を許可するか、ブロックするかを、プログラムで判断できます。たとえば、「.envファイルの編集を拒否する」「rm -rfを含むコマンドを拒否する」といったルールを、確実に適用できます。
終了コードや出力の形式で、結果をClaude Codeに伝えます。たとえば、コマンド型のフックでは、終了コード2がブロック(その操作を止める)の意味になります(ブロックできるイベントの場合)。イベントごとの扱いなど、具体的な仕様は、公式で確認してください。
作るときのコツ
| コツ | 内容 |
|---|---|
| 小さく始める | 1つのフックで、動作を確認してから、増やす |
| 軽い処理に | 毎回動くため、重い処理は、作業を遅くする |
| 失敗時の挙動を決める | エラーのとき、作業を止めるか、続けるか |
| ログを残す | 動作を確認・調査できるように |
| 条件を絞る | 必要なツール・ファイルだけに、適用する |
| 試して確認 | 安全な環境で、意図どおり動くかを確認する |
安全上の注意
フックは、あなたの環境で、任意のコマンドを自動実行する仕組みです。慎重な扱いが必要です。
| 注意点 | 内容 |
|---|---|
| 他人の設定に注意 | 出所不明の設定ファイル(フック)は、中身を確認する。悪意のあるコマンドが、実行されうる(安全に使うための設定) |
| 権限 | フックは、あなたのユーザー権限で動く |
| 入力の扱い | 受け取るデータを、そのままシェルに渡さない(コマンドの混入を防ぐ) |
| 機密情報 | ログや出力に、秘密情報を含めない |
| 破壊的な処理 | 削除・上書きなどを、自動実行しない |
| 共有設定 | チームで共有する設定は、レビューしてから反映する |
Claude Codeのフックの具体例
「ファイルを編集するたびに、整形ツールを実行する」フックを設定すると、指示を毎回書かなくても、コードの書式が、常に揃います。また、「migrations/の編集を拒否する」フックを設定すれば、CLAUDE.mdに書くより、確実に守られます。
Claude CodeのフックのFAQ(よくある質問)
Q. フックは、どこに設定しますか?
A. 設定ファイル(~/.claude/settings.json、.claude/settings.json、.claude/settings.local.jsonなど)です。ユーザー用、プロジェクト用などの階層があり、プラグインや、スキル・サブエージェントの定義の中に書く方法もあります。詳細は、公式で確認してください。
Q. フックが動かないときは?
A. 設定の書式、条件(マッチャー)、コマンドのパス、実行権限を確認し、ログで調べてください(困ったときの対処とデバッグ)。
Q. スクリプトの言語は?
A. シェルから実行できるものであれば、言語は問いません。
筆者の見解(Claude Codeのフック)
フックは、「お願い」を「仕組み」に変える道具だと感じます。AIの判断に任せたくない部分(書式、禁止事項、記録)を、確実に自動化できるのが強みです。一方、強力なぶん、設定ミスや悪用のリスクもあるため、小さく始めて、中身を理解した設定だけを使うことが大切です。
Claude Codeのフックの関連項目
- 権限設定とパーミッションモード
- settings.jsonの設定項目
- CLAUDE.mdの書き方
- 安全に使うための設定
出典(一次情報)
本記事は一般的な情報の提供を目的としています。AIのサービス・機能・料金・仕様は頻繁に更新されるため、最新の内容は各社の公式ドキュメントでご確認ください。「筆者の見解」は一つの考え方です。