フックとは
対象読者: AIの動作に自動的なチェックや制御を組み込みたい方、AIが実行する前後に安全確認を挟みたい方
前提知識: ハーネスエンジニアリング の基礎
フックとは、AIエージェントの実行における決められた節目(ツール呼び出しの前後、セッションの開始・終了など)で、自動的に処理を実行する仕組みです。AIの判断に任せきりにするのではなく、あらかじめ決めたルールを機械的に差し込むことができます。
なぜフックが必要か
AIエージェントは、プロンプトの指示に従って行動しますが、指示だけでは「必ず守られるルール」を保証できません。フックは、AIの判断を待たずに、決められたタイミングで確実に実行される処理です。ハーネスエンジニアリングで扱った「検証」「ログ」「人間の承認点」を、実行の仕組みとして具体化したものと言えます。
フックが発火する代表的なタイミング
| タイミング | 用途の例 |
|---|---|
| セッション開始時 | 必要なコンテキストやルールを自動的に読み込む |
| ツール呼び出しの直前 | 危険な操作かどうかを判定し、必要なら承認を求める |
| ツール呼び出しの直後 | 実行結果を検証・整形してログに記録する。失敗していればリトライか人間への通知かを判断する |
| 応答の直前 | AIが出力しようとしている内容を検査する |
| セッション終了時 | 作業内容を要約して長期メモリに保存する |
5つのタイミングそれぞれの詳細はフックの発火ポイントで解説します。
フックの具体例
フック: pre-tool-use(ツール実行の直前)
条件: 呼び出すツールが「ファイル削除」または「本番デプロイ」を含む
処理: 実行をいったん止め、人間の承認を求める
フック: post-tool-use(ツール実行の直後)
条件: すべてのツール呼び出し
処理: 実行したコマンドと結果をログファイルに記録するこのように、フックは「AIに毎回気をつけてもらう」のではなく、「仕組みとして必ず実行される」ルールを作ります。
設計で守るべき原則
1. 重要な節目だけに絞る
すべての処理に重いフックを挟むと、動作が過度に遅くなり、開発体験を損ないます。破壊的な操作、公開範囲の広い操作など、重要な節目に絞って設計します。
2. 検証とログを自動化する
人間の目視確認だけに頼ると、同じミスが繰り返されます。lint・テスト・差分確認など、機械的に検証できるものはフックに組み込みます。
3. 止める場所を明確にする
フックは「AIを止める場所」を設計する手段でもあります。取り消せない操作の前に承認フックを置くことで、AIの自律性と安全性のバランスを取ります。
このセクションのページ一覧
| ページ | 内容 |
|---|---|
| フックの発火ポイント | どのタイミングで何ができるか |
| フックの活用例 | 品質ゲート・安全確認・記録・前提の統一 |
| フック利用時の注意点 | 無限ループ・遅延・過剰なブロック |
まとめ
- フックは、決められたタイミングで自動的に処理を実行するトリガー
- ツール呼び出しの前後やセッションの開始・終了など、実行の節目に組み込む
- 検証・ログ記録・承認確認を、AIの判断任せにせず仕組みとして保証する
- 重要な節目に絞って設計しないと、動作が過度に遅くなる
クイズ