「Claude Codeのhooks(フック)って何?」「CLAUDE.mdに書いても守られないルールがある」「編集のたびに必ずフォーマッターを走らせたい」——hooksは、そんな「AIへのお願い」を「必ず実行される仕組み」に変える機能です。この記事では、Claude Codeを実業務の基盤として運用し、品質チェックの強制ゲートを組み込んでいるAI×ノーコードの導入支援会社(支援実績150社以上)が、公式ドキュメントの一次情報で仕組みと定番レシピを解説します(2026年7月時点)。

hooksとは、Claude Codeの動作の節目(ツール実行の前後・応答の完了・セッション開始など)で自動実行されるシェルコマンドです。AIが「やるかどうか選ぶ」のではなく、決めた処理が必ず走る——この決定論的な強制力が本質です。
設定はsettings.jsonに書くだけ。終了コード2で処理をブロックし、その理由がAIへフィードバックされるので、「危険なコマンドを止めて理由を伝え、やり方を変えさせる」ところまで自動化できます。
01 hooks早見表
| 何ができる | 節目ごとの自動処理の強制(整形・通知・ログ・危険操作のブロック・文脈の注入) |
|---|---|
| 設定場所 | settings.json(個人=~/.claude//プロジェクト=.claude/)のhooksブロック |
| 確認方法 | /hooksコマンドで設定済みフックを一覧表示 |
| 制御方法 | exit 0=続行/exit 2=ブロック(stderrの内容がAIへの指導として渡る) |
| 種類 | シェルコマンド型が基本。HTTP/MCPツール/プロンプト型・エージェント型(AI判断)も |
| CLAUDE.mdとの違い | CLAUDE.md=お願い(AIが解釈)/hooks=強制(必ず実行) |
02 hooksとは?——「お願い」を「仕組み」に変える
hooksとは、Claude Codeのライフサイクル上の特定のタイミングで実行される、ユーザー定義のシェルコマンドです。公式の言葉を借りれば「LLMが実行を選ぶことに頼るのではなく、特定の動作が必ず起きることを保証する」ための仕組み(deterministic control)です。
ここがCLAUDE.md(指示書)との決定的な違いです。CLAUDE.mdに「編集後は必ずフォーマッターをかけて」と書いても、それはAIが読んで解釈する“お願い”であり、まれに抜けます。hooksに書けば、編集イベントのたびにコマンドが機械的に走る——抜けようがありません。ルールの重要度に応じて、この2つを使い分けるのが設計の基本です。
代表 西澤💡 当社の運用ルールはシンプルで、「AIに2回説明したことはCLAUDE.mdへ、2回破られたルールはhooksへ」。人間のチームでも、口頭注意で直らないことはチェックリストや承認フローという“仕組み”にしますよね。AIのマネジメントもまったく同じです。
03 仕組み——イベント・matcher・終了コード
hooksは3つの要素で動きます:①どのタイミングで(イベント)②何に対して(matcher=対象の絞り込み)③何をするか(コマンド)。イベント発生時、対象の情報(実行しようとしているコマンド等)がJSONでスクリプトに渡され、スクリプトの終了コードで次の動作が決まります。
| 主要イベント | 発火タイミング・用途 |
|---|---|
PreToolUse |
ツール実行の直前。危険な操作のブロックができる唯一無二の関所 |
PostToolUse |
ツール実行の直後。編集後の自動フォーマット・検証の定番 |
Notification |
Claudeが入力待ちになったとき。デスクトップ通知の定番 |
Stop |
応答の完了時。完了チェック・後処理 |
UserPromptSubmit |
あなたの指示の送信時(AIが処理する前)。文脈の自動注入 |
SessionStart |
セッション開始・再開時。圧縮(コンパクション)後の文脈復元にも使える |
PermissionRequest |
許可ダイアログの表示時。定型承認の自動化(範囲は最小限に) |
TeammateIdle/TaskCompleted |
エージェントチームの品質ゲート(「テストが通るまで完了させない」) |
終了コードの意味はこうです(公式)。
- exit 0:異議なし、処理は通常どおり進む。一部イベントではstdoutの内容がClaudeの文脈に追加される
- exit 2:ブロック。stderrに書いた理由がClaudeへフィードバックされ、Claudeはそれを踏まえてやり方を変える
- その他のコード:処理は進み、エラー通知だけ表示される
04 定番レシピ4つ(公式ガイドより)
| レシピ | 構成 | 効果 |
|---|---|---|
| ①入力待ち通知 | Notificationイベント+OS通知コマンド |
ターミナルを見張らなくても、Claudeが承認待ちになったらデスクトップ通知が来る |
| ②編集後の自動整形 | PostToolUse+matcher Edit|Write+フォーマッター |
ファイル編集のたびにPrettier等が必ず走る。「たまに整形忘れ」が消える |
| ③危険操作のブロック | PreToolUse+判定スクリプト(exit 2) |
rm -rfやdrop tableを含むコマンドを実行前に阻止し、理由をAIに伝える |
| ④圧縮後の文脈復元 | SessionStart+matcher compact |
長時間セッションで文脈が要約された後、重要なルールを自動で再注入 |
③のスクリプトの中身は、公式の例でこれだけです——標準入力のJSONからコマンドを取り出し、危険な文字列が含まれていたらstderrに理由を書いてexit 2。シェルスクリプトが数行書ければ、AIの行動に「越えられない線」を引けます。

05 最初のフックを10分で——コピペで完成する2つの実例
概念より手を動かす方が早いので、そのまま貼って動く完成形を置いておきます。
実例①:Claudeが入力待ちになったらMacに通知(Notification)
~/.claude/settings.json に以下を追加します(既にhooksがある場合は中身をマージ)。
“hooks”: {
“Notification”: [
{
“matcher”: “”,
“hooks”: [
{ “type”: “command”,
“command”: “osascript -e ‘display notification \”Claudeが入力を待っています\” with title \”Claude Code\”‘” }
]
}
]
}
}
保存したら/hooksで登録を確認。以後、ターミナルを見張らなくても承認待ちが通知で分かります(Windows/Linuxは通知コマンドを各OSのものに置き換え)。
実例②:危険なコマンドを実行前にブロック(PreToolUse+exit 2)
判定スクリプト .claude/hooks/block-danger.sh を作り——
COMMAND=$(cat | jq -r ‘.tool_input.command’)
if echo “$COMMAND” | grep -qE “rm -rf|drop table”; then
echo “危険なコマンドのためブロックしました。安全な代替手段を提案してください” >&2
exit 2
fi
exit 0
——settings.jsonのPreToolUse(matcher: “Bash”)からこのスクリプトを呼べば完成。stderrの日本語メッセージがそのままClaudeへの指導になり、Claudeは代替案を出し直します。禁止語はチームのルールに合わせて増やしてください。
発火しないときのチェック3点
- 置き場所:個人全体なら
~/.claude/settings.json、このプロジェクトだけなら.claude/settings.json——意図と合っているか - matcher:対象ツール名(Edit・Write・Bash等)と一致しているか。空文字は「全部に発火」
- 確認コマンド:
/hooksで一覧に出ているか。出ていなければJSONの構文エラーを疑う
06 応用——「AIがAIを検査する」フックまで
- プロンプト型・エージェント型フック:判定条件が「機械的なルール」で書けない場合(例:この変更は設計方針に沿っているか?)、AIモデル自身に判定させるフックも公式に用意されています(エージェント型は実験的機能)
- HTTP型・MCPツール型:イベントデータを外部システムへPOSTしたり、接続済みのMCPツールを呼んだり——チームの監査基盤やチャット通知への連携が組めます
- エージェントチームの品質ゲート:
TeammateIdle/TaskCompletedでexit 2を返すと、チームメイトに「まだ終わっていない」と差し戻せます。複数AIの並列作業でも品質基準を機械的に守らせる仕掛けです
07 CLAUDE.md・skills・hooksの使い分け
Q. そのルール、どこに置く?
08 よくある質問(FAQ)
hooksは何のための機能ですか?
Claude Codeの動作の節目(ツール実行前後・応答完了など)で、決めたシェルコマンドを必ず実行させる機能です。AIの判断に頼らず「必ず起きる」を保証する、ルールの強制装置です(公式ドキュメント・2026年7月時点)。
CLAUDE.mdに書くのと何が違いますか?
CLAUDE.mdはAIが読んで解釈する「指示書」で、まれに守られないことがあります。hooksは指定イベントで機械的にコマンドが走る「仕組み」で、抜けがありません。指針はCLAUDE.md、絶対のルールはhooksが使い分けの基本です。
プログラミングができないと使えませんか?
基本は数行のシェルコマンドです。公式ガイドに通知・自動整形・危険コマンドブロックなどのコピペ可能な例が揃っており、そもそもClaude自身に「このルールをhooksにして」と作らせることもできます。
exit 2とは何ですか?
フックのスクリプトが終了コード2で終わると、その操作はブロックされ、stderrに書いた理由がClaudeにフィードバックされます。Claudeは理由を踏まえてやり方を修正します。exit 0は「異議なし・続行」です。
フックはどこに設定しますか?
個人全体なら~/.claude/settings.json、プロジェクト単位なら.claude/settings.jsonのhooksブロックに書きます。/hooksコマンドで設定済みの一覧を確認できます。
どんなフックから始めるのがおすすめですか?
効果を体感しやすいのは①入力待ちのデスクトップ通知(Notification)②編集後の自動フォーマット(PostToolUse)です。運用が本格化したら③危険コマンドのブロック(PreToolUse+exit 2)で守りを固めるのが定石です。
代表 西澤hooksは地味な機能に見えて、AI活用が「個人の上手さ」から「組織の仕組み」に変わる分水嶺だと思っています。当社のメディア運用がAI 8割・人 2割で安定しているのは、AIが優秀だからだけではなく、品質チェックや禁止事項が“お願い”ではなく“ゲート”として組み込まれているから。人間の組織づくりで「ルールは仕組みに落とす」のが鉄則であるように、AIチームのマネジメントも最後は仕組みの設計です。破られて困るルールが1つでもあるなら、hooksを覚える価値があります。
「AIが守る仕組み」の設計、実運用のプロが伴走します
CLAUDE.md・skills・hooksの設計から、品質ゲート・権限設計・チーム運用まで。Claude Codeを実業務で運用するAI×ノーコードの導入支援会社が無料で相談に乗ります(支援実績150社以上)。
Claude Codeの基本・料金はClaude Codeの料金と使える環境、Claudeの全体像はClaudeとは?完全ガイドをご覧ください。
09 出典・参考(公式・2026年7月時点)
📌 公式情報源
- Claude Code公式ドキュメント:Automate actions with hooks(定義・イベント・レシピ・合成ルールの全記載元)
- Claude Code公式ドキュメント:Hooks reference(全イベントのスキーマ・exit code仕様)
イベント名・仕様は更新されることがあります(エージェント型フックは実験的機能)。最新情報は公式ドキュメントをご確認ください(本記事は改定確認のたびに更新します)。


