Claude Code Hooks活用|品質チェックを自動化する方法
Claude Code Hooksとは——「お願い」ではなく「強制」する仕組み
Claude Codeに指示を出すとき、CLAUDE.mdに書いたルールは「お願い」です。約80%の精度で従いますが、100%ではありません。私自身、CLAUDE.mdに「robots.txtを変更しない」と書いていたのに、AIが独断で変更し本番環境にデプロイされたインシデントを経験しています。
この「お願いでは防げないリスク」を解決するのがHooksです。Hooksはツールの実行前後にスクリプトを確実に実行する仕組みで、CLAUDE.mdが「方針」ならHooksは「法律」にあたります。

Hooksの3つのタイプ
Hooksには実行タイミングが異なる3つのタイプがあります。
PreToolUse — ツール実行前のガード
Claude Codeがファイル編集やコマンド実行などのツールを使おうとした直前に発火します。スクリプトの終了コードが非ゼロなら、そのツール実行をブロックできます。
「特定のファイルを絶対に編集させない」「本番ブランチへの直接pushを防ぐ」など、やってはいけないことを確実に止める用途に最適です。
PostToolUse — ツール実行後の自動処理
ツール実行が完了した直後に発火します。「ファイルを編集したらフォーマッターを自動実行」「コミット後にテストを自動実行」など、品質チェックの自動化に使います。
Notification — 通知・外部連携
Claude Codeがユーザーに確認を求めるタイミングや、タスク完了時に発火します。Slackやメールへの通知、ログの記録など、外部システムとの連携に使います。
Hooksの設定方法
Hooksは.claude/settings.jsonに記述します。特別なプラグインやインストールは不要で、シェルスクリプトを指定するだけです。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit",
"command": "bash .claude/hooks/check-protected-files.sh"
}
],
"PostToolUse": [
{
"matcher": "Write",
"command": "bash .claude/hooks/run-lint.sh"
}
]
}
}matcherでどのツール(Edit、Write、Bash等)に対して発火するかを指定し、commandで実行するスクリプトを記述します。matcherには正規表現も使えるため、柔軟な条件指定が可能です。
実務で効果が大きかったHooksの活用例
1. robots.txt変更をブロックする(インシデントからの教訓)
私が実際に経験したインシデントです。クライアントのWebサイト制作中、完成前なので検索エンジンにインデックスされないようrobots.txtを設定していました。ところがAIが独断でインデックスを許可する設定に変更し、そのままGitHubにプッシュ。Vercelの自動デプロイが走り、未完成のサイトが検索結果に載ってしまいました。
以降、重要な設定ファイルの変更はPreToolUseフックで強制的にブロックしています。CLAUDE.mdに書くだけでは防げなかった問題が、Hooksなら確実に防げます。
2. 記事・提案資料の品質チェックを自動化する
ブログ記事や提案資料など、公に公開する成果物をClaude Codeで作成するとき、PostToolUseフックで品質チェックを自動実行しています。
具体的には、成果物の生成が完了したタイミングで以下を自動チェックします。
- クライアント特定情報の漏洩: 社名・URL・個人名・具体的な金額が含まれていないか
- 表記ルールの遵守: 一人称・敬体・禁止表現のチェック
- 事実確認: 数字やデータの引用元が明記されているか
人間が毎回チェックリストを目視確認する手間を省きつつ、品質を一定水準に保てます。
3. Permissions(deny設定)との組み合わせ
Hooksだけでなく、settings.jsonのPermissions設定も併用しています。Permissionsはファイルパスやコマンド単位で「許可(allow)」「拒否(deny)」を設定でき、deny設定はHooks以上に厳格です。
私の運用では、プロジェクトの機密性に応じてPermissionsの厳しさを変えています。クライアントのシステム開発など機密性が高い案件ではdenyを厳しく設定し、自社のコンテンツ制作など機密性が低い案件では緩めにする——この使い分けが実務では重要です。

CLAUDE.mdとHooksの使い分け
CLAUDE.mdとHooksはどちらも「Claude Codeにルールを伝える手段」ですが、性質が異なります。
- CLAUDE.md(方針): コーディング規約、文体、ディレクトリ構成の説明など。「こう書いてほしい」というガイドライン。違反しても致命的ではないもの
- Hooks(法律): ファイル保護、セキュリティチェック、品質基準の強制など。「絶対に守らせたい」ルール。違反すると実害が出るもの
- Permissions(憲法): 特定ファイルの編集禁止、特定コマンドの実行禁止など。最も厳格な制御。Hooksよりさらに強い
迷ったときの判断基準はシンプルです。「AIが無視したら困るか?」——困らないならCLAUDE.md、困るならHooksかPermissions。この使い分けを意識するだけで、Claude Codeの運用リスクは大幅に下がります。

まとめ:Hooksは「AIを信頼しつつ検証する」仕組み
Claude Code Hooksは、AIの自律性を活かしながら重要なルールだけは確実に守らせる仕組みです。
- PreToolUseで「やってはいけないこと」をブロック
- PostToolUseで品質チェックを自動化
- Notificationで外部通知・ログ記録
- CLAUDE.md(方針)→ Hooks(法律)→ Permissions(憲法)の3段階で使い分ける
「AIを信頼するが、検証はする」——Trust but Verifyの原則を仕組みとして実装するのがHooksの本質です。
CLAUDE.mdの設定方法と階層構造については、こちらの記事で詳しく解説しています。
Claude Codeのセキュリティ全般(SOC2認証・データ保護)についてはこちらをご覧ください。
Claude Code全体の使い方を知りたい方はこちらの記事がおすすめです。
御社の業務に合わせたClaude Code導入支援
「AIツールを導入したが、現場で使われない」を終わらせる。
業務課題のヒアリングから設計、ハンズオン実践、運用定着まで一貫して支援します。