Article

hooksとは何か【2026年】AIエージェント時代の必要性とClaude Code・Codexでの使い方

hooksとは何か【2026年】AIエージェント時代の必要性とClaude Code・Codexでの使い方
2026-06-21 AI駆動開発
監修者
ライトのアイコン
情報系学部出身。新卒でコンサル系SaaS開発部門→社内開発とSaaS開発を掛け持ち。GPT-3.5 Turbo時代からAIを活用し、ChatGPT/Gemini/Claude/GitHub Copilot/Cursorなどを使っています。

hooksとは何か【2026年】AIエージェント時代の必要性とClaude Code・Codexでの使い方

「hooks って、イベントにスクリプトを差し込む仕組みだよね」で理解を止めると、AI エージェントではだいたい足りません。実際には、どこで止めるのか、どこで自動化するのか、承認を誰が持つのかまで含めて設計に効いてきます。

特に Claude Code や Codex のように、ファイル編集、コマンド実行、承認要求まで自律的に進めるツールでは、hooks は便利機能というより運用ルールの差し込み口です。危険な Bash を止める、編集後に formatter を走らせる、終了前に未実行テストを確認する、といった制御を LLM 任せにしないために使います。

この記事では、まず hooks とは何かを整理し、そのうえで AIエージェント時代になぜ必要なのか、最後に Claude Code と Codex での具体的な使い方をまとめます。事実関係は 2026年6月21日時点の公式ドキュメントで確認しています。

hooksとは何か

先に結論を言うと、hooks は「処理の途中に自分のルールを差し込む仕組み」です。決まったイベントが起きたときに、ログを取る、入力を検査する、危険操作を止める、後続処理を追加する、といった処理を自動で走らせます。

一般的なソフトウェアの文脈でも意味は近く、Microsoft Learn では hook を、イベントやメッセージを途中で受け取り、必要なら変更や破棄までできる仕組みとして説明しています。AI エージェントに置き換えると、監視対象がキーボードやマウスではなく、プロンプト送信、ツール実行、承認要求、応答終了になるイメージです。

混同されやすいので、callback との違いだけ先に分けておきます。

用語役割
callback実際に呼ばれる関数や処理
hookcallback やスクリプトを差し込むための場所や仕組み

つまり、AI エージェントの PreToolUse や PostToolUse は hook point で、そこに登録する shell script や Python script が hook handler です。

図: hooks が差し込まれる場所
1. ユーザー入力
プロンプト送信、承認要求、ツール呼び出しのきっかけが入る。
▼
2. hook point
PreToolUse PermissionRequest PostToolUse Stop
▼
3. hook handler
危険操作を止める
承認を自動化する
formatter / test を走らせる
通知やログ送信を行う

AIエージェント時代になぜhooksが必要なのか

AI エージェント時代に hooks が必要なのは、モデルが「考える」だけでなく「動く」からです。コードを書く、ファイルを編集する、Bash を打つ、承認を取りに来る、といった一連の動作が入る以上、どこかで deterministic なガードレールを差し込まないと運用が不安定になります。

自分が hooks を重要だと感じる理由は、主に次の 4 つです。

必要になる場面hooks でやること
危険操作を止めたいrm -rf や本番 DB への接続を PreToolUse で deny する
承認フローを固定したい安全な操作だけ自動許可し、危険な操作だけ人間確認に寄せる
品質チェックを自動化したい編集後に formatter、lint、test を走らせる
監査や通知を残したい実行ログ送信、入力待ち通知、終了前チェックを入れる

ここが普通の補助 AI と違うところです。チャットで質問に答えるだけのツールなら、人間が最後に全部判断すれば済みます。ただ、Claude Code や Codex はリポジトリを読んで、そのまま編集や実行まで進みます。だから「賢いかどうか」より前に、「どこまで勝手に進んでよいか」を外から制御する仕組みが要ります。

実務で効くのは、LLM の判断を否定するためではなく、LLM の判断だけにしないために hooks を置くことです。運用ルールをコード化しておけば、セッションごとのムラを減らせます。

図: AIエージェント時代に hooks が必要な理由
AIエージェント
読む、書く、実行する、承認を取りに来る。
そのままだと起きること
危険コマンド、承認のばらつき、テスト漏れ、通知漏れ。
hooks で差し込むルール
deny、allow、post-check、notification を deterministic に固定する。
結果として、LLM の判断だけにしない運用 を作れます。便利機能というより、実務で事故率を下げる制御層です。

Claude Codeでの具体的な使い方

Claude Code の hooks は、エージェントのライフサイクル全体に広くルールを差し込みたいときに向いています。単に Bash を止めるだけでなく、通知、外部連携、停止判定、後処理まで 1 つの枠組みで持てるのが強みです。

2026年6月21日時点の公式 reference では、SessionStart、UserPromptSubmit、PreToolUse、PermissionRequest、PostToolUse、SubagentStart / SubagentStop、Stop に加えて、Notification、InstructionsLoaded、CwdChanged、FileChanged、WorktreeCreate / WorktreeRemove、Elicitation / ElicitationResult などもあります。運用ルールを外出しする場所がかなり多いです。

まず入れやすい使い方は次の 3 つです。

使い方どこで効くか例
危険コマンドのブロックPreToolUse破壊的な Bash、保護ファイルへの編集を deny
編集後の自動処理PostToolUseformatter、lint、通知を実行
入力待ちや終了前の確認Notification / Stop入力待ち通知、停止前の自己チェック

Claude Code が強いのは handler の種類です。command だけでなく、http、mcp_tool、prompt、agent まで使えます。なので「監査ログを外部 API に流す」「Stop 時だけ LLM に続行判定させる」「subagent に後検証させる」といった、少し太い運用も組めます。

ただし、広く使えるぶん、何でも hooks に寄せると責務が散ります。特に prompt hook や agent hook は便利ですが、再現性より判断力を優先する仕組みです。中核のルールは、まず command hook で固める方が崩れにくいです。

Codexでの具体的な使い方

Codex の hooks は、現時点では「広い拡張基盤」というより、「CLI の重要な実行点に deterministic な検査を入れる仕組み」として使うのが自然です。2026年6月21日時点の公式 docs では、実行される handler は type: "command" のみで、prompt と agent は parse されるが skip、async: true も parse されるが未サポートと明記されています。

つまり Codex では、まず次のような使い方から考えるのがよいです。

使い方どこで効くか例
Bash や編集内容の検査PreToolUse危険コマンド、禁止パス、秘密情報の扱いを止める
承認フローの固定PermissionRequest安全な読み取りだけ allow、危険操作は deny か人間確認
実行結果の追加チェックPostToolUse / StopBash 出力のレビュー、未実行テストの検出

実務で特に効くのは PermissionRequest です。承認ルールを hook 側に寄せると、「読み取りだけなら自動許可」「特定ディレクトリ配下での破壊操作は deny」といった設計を固定できます。LLM がその場で良さそうに見える判断をしても、最後はルールで止められます。

Codex は non-managed の command hook をそのまま走らせず、定義を review / trust したものだけ実行します。ここはかなり Codex らしい設計で、拡張性よりもガードレールを優先しています。雑に増やすより、少数の明確な hooks を置く方が相性がよいです。

Claude CodeとCodexの違いは「広く拡張するか、堅く止めるか」です

どちらにも hooks はありますが、同じ感覚で設計するとズレます。大づかみに言うと、Claude Code は「広く拡張する hooks」、Codex は「堅く制御する hooks」です。

観点Claude CodeCodex
基本の立ち位置エージェントのライフサイクル全体を広く拡張するCLI の重要な実行点にガードレールを入れる
実行できる handlercommand / http / mcp_tool / prompt / agent現時点で実行されるのは command のみ
event の広さセッション、通知、worktree、Elicitation まで広いSessionStart、PreToolUse、PermissionRequest、PostToolUse、Stop など主要点中心
asynccommand hook で利用可未サポート
向いている設計通知、外部連携、停止判定、後処理までまとめたい承認、禁止操作、定型チェックを固くしたい

どちらを選ぶか迷ったら、「どこまで広く運用を外出ししたいか」で考えると整理しやすいです。通知や外部 API 連携まで含めて組みたいなら Claude Code、まず事故を減らして承認と検査を固定したいなら Codex が向きます。

図: Claude Code と Codex の使い分け
Claude Code が向く
広く拡張したい
通知、外部 API 連携、停止判定、後処理までまとめて hooks に寄せたい場面。
Codex が向く
堅く止めたい
承認、禁止操作、定型チェックを deterministic に固定して事故を減らしたい場面。

導入前に見ておきたい落とし穴

hooks は便利ですが、入れた瞬間に運用コストも増えます。最初に見ておきたいのは次の 3 点です。

async の有無で設計が変わる

Claude Code は command hook の async 実行に対応していますが、非同期 hook は即時ブロックには使えません。Codex はそもそも async が未対応です。「あとで通知する処理」と「今ここで止める処理」は分けて設計する必要があります。

hooks を増やすほど、どこで止まったか分かりにくくなる

PreToolUse、PostToolUse、Stop に似たような検査を積み増すと、止まった理由の追跡が難しくなります。最初は「危険操作を止める」「整形を走らせる」「終了前に未実行テストだけ見る」くらいに絞る方が安定します。

仕様差分は必ず公式 docs で見直す

hook 系は変化が早いので、記事や社内ルールに書く前にその日の docs で差分確認した方が安全です。今回の比較でも、Codex は hooks 自体は有効でも handler 実行範囲がかなり限定的ですし、Claude Code 側は event も hook type も広がっています。

まとめ

hooks は、AI エージェントが「考えるだけでなく動く」時代に、運用ルールを deterministic に差し込むための仕組みです。Claude Code は広く拡張しやすく、Codex は堅く制御しやすい、という違いがあります。

まず試すなら、1 本だけ PreToolUse か PermissionRequest を入れて、何を止めるかを明確にするところから始めるのが安全です。そこが固まってから、通知、整形、テスト、監査ログに広げる方が運用も崩れません。

参考リンク

  • OpenAI Developers: Codex Hooks
  • OpenAI Developers: Config basics
  • Claude Code Docs: Hooks reference
  • Claude Code Docs: Automate actions with hooks
  • Microsoft Learn: Hooks Overview

この記事は役に立ちましたか?

皆様のフィードバックが、より良いコンテンツ制作の励みになります。

よくある質問

  • Codex でも Claude Code のように LLM 判定 hook を使えますか

    2026年6月21日時点では難しいです。Codex の公式 docs では prompt と agent は parse されるものの skip され、実行されるのは command のみです。

  • Claude Code の async hook は危険コマンドのブロックに使えますか

    向きません。非同期 hook は処理を待たずに本体が先へ進むので、ブロックや deny のような即時判定には同期 hook を使う必要があります。

  • 最初に入れる hooks は何がよいですか

    1 本目は PreToolUse か PermissionRequest で十分です。破壊的コマンドの deny、秘密情報を含む入力の警告、編集後の formatter 実行あたりが、効果と運用負荷のバランスを取りやすいです。

最新記事