AIToday
大規模言語モデルAIコーディングAI安全性・アラインメントZenn AI/ML掲載日時: 2026年10月3日 22:00

Claude Codeのhooks、AI任せの整形を決定論的に

LINEで送る
Claude Codeのhooks、AI任せの整形を決定論的に

3つのポイント

  1. 何が起きたか

    Claude CodeのhooksはPostToolUse・PreToolUse・Stopの各イベントでユーザー定義コマンドを実行でき、編集後の自動フォーマットや危険コマンドのブロックを仕込める。

  2. なぜ重要か

    プロンプトで「編集後はprettierをかけて」と頼んでも守られたり守られなかったりするのに対し、hooksはAIの判断に依存せず必ず走るため、ルールを確実に担保できるとみられる。

  3. 注目点

    hooksはユーザー権限でシェルを実行するため、信頼できないリポジトリの.claude/settings.jsonは中身のレビューが必須となる。

誰に効くかClaude Codeを業務で使う開発チームのリードや、社内のAIコーディングツール導入を管理する情報システム担当者に直接関わる。チーム共有の設定ファイルをコミットする運用では、レビュー体制の有無が安全性を左右する。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

Claude Codeには、エージェントの動作の節目でユーザー定義のコマンドを実行するhooksという仕組みがある。プロンプトで「編集後は必ずprettierをかけて」と頼んでも守られたり守られなかったりするのに対し、hooksはAIの判断に依存せず、指定したイベントで必ずコマンドが走る点が本質的に異なる。

本記事はPostToolUseでの編集後の自動フォーマット、PreToolUseでの危険コマンドのブロック、Stopでの作業完了時のテスト実行という3点をハンズオンで構築している。フックのコマンドにはstdin経由でJSONが渡り、jqで必要なフィールドを取り出して処理する。PreToolUseでは終了コード0が許可、2がブロックで、stderrの内容がClaudeに返るため、エージェントは止められた理由を理解して別の手段を取ろうとする。単なる拒否ではなく理由つきのガードレールになるのがポイントだ。

導入の成否を分けるのはセキュリティレビューと軽量化とみられる。hooksはユーザーの権限でシェルを実行するため、信頼できないリポジトリの設定をそのまま使うのは避けるべきであり、チームで共有する設定と個人設定をファイル単位で分ける運用が求められる。またStopで重い処理を毎回回すと体験が悪くなるため、lintやtsc --noEmitなど軽いものから始めることが推奨されている。

よくある質問
hooksの設定はどこに書きますか?
プロジェクトで共有するなら<repo>/.claude/settings.jsonに、個人用なら<repo>/.claude/settings.local.jsonに書く。ユーザー全体に適用するなら~/.claude/settings.jsonに置く。
危険なコマンドはどうやってブロックしますか?
PreToolUseイベントで終了コード2を返すとブロックでき、stderrに書いた内容がClaudeにフィードバックされる。stdoutにJSONを出してブロックする方法もある。
hooksを導入するときの注意点は?
hooksはユーザーの権限でシェルを実行するため、信頼できないリポジトリの.claude/settings.jsonをそのまま使わず中身をレビューする必要がある。コマンドがハングするとセッションが待たされるため、タイムアウトや|| trueで早く返す設計が推奨される。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

関連記事

次の記事へKaran Joshi、Museの内部ファイルを抽出