Claude Codeのhooksとは?設定・仕組みと定番レシピ4つ【2026年】

「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 許可ダイアログの表示時。定型承認の自動化(範囲は最小限に)
TeammateIdleTaskCompleted エージェントチームの品質ゲート(「テストが通るまで完了させない」)

終了コードの意味はこうです(公式)。

  • exit 0:異議なし、処理は通常どおり進む。一部イベントではstdoutの内容がClaudeの文脈に追加される
  • exit 2ブロック。stderrに書いた理由がClaudeへフィードバックされ、Claudeはそれを踏まえてやり方を変える
  • その他のコード:処理は進み、エラー通知だけ表示される

04 定番レシピ4つ(公式ガイドより)

レシピ 構成 効果
①入力待ち通知 Notificationイベント+OS通知コマンド ターミナルを見張らなくても、Claudeが承認待ちになったらデスクトップ通知が来る
②編集後の自動整形 PostToolUse+matcher Edit|Write+フォーマッター ファイル編集のたびにPrettier等が必ず走る。「たまに整形忘れ」が消える
③危険操作のブロック PreToolUse+判定スクリプト(exit 2) rm -rfdrop tableを含むコマンドを実行前に阻止し、理由をAIに伝える
④圧縮後の文脈復元 SessionStart+matcher compact 長時間セッションで文脈が要約された後、重要なルールを自動で再注入

③のスクリプトの中身は、公式の例でこれだけです——標準入力のJSONからコマンドを取り出し、危険な文字列が含まれていたらstderrに理由を書いてexit 2。シェルスクリプトが数行書ければ、AIの行動に「越えられない線」を引けます。

複数フックの合成ルール(公式):同じイベントに複数のフックがある場合、全部が実行された上で最も厳しい判定が採用されます(deny>ask>allow)。「ログは取りつつ、危険なら止める」のような併用が安全に組めます。

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 を作り——

#!/bin/bash
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ツールを呼んだり——チームの監査基盤やチャット通知への連携が組めます
  • エージェントチームの品質ゲートTeammateIdleTaskCompletedでexit 2を返すと、チームメイトに「まだ終わっていない」と差し戻せます。複数AIの並列作業でも品質基準を機械的に守らせる仕掛けです

07 CLAUDE.md・skills・hooksの使い分け

Q. そのルール、どこに置く?

判断の指針・作業の手順

CLAUDE.md/skillsコード規約・業務の型・背景知識はAIが解釈する指示書へ。柔軟だが強制力はない。
絶対に破られたくないルール

hooks危険コマンドの禁止・必須の整形/検証・完了条件のチェックは、必ず実行される仕組みへ。

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月時点)

📌 公式情報源

イベント名・仕様は更新されることがあります(エージェント型フックは実験的機能)。最新情報は公式ドキュメントをご確認ください(本記事は改定確認のたびに更新します)。

クリックできる目次