「忘れずに確認して」と頼まなくていい? 道具の前・後・終了時に検査を割り込ませる【Hook】【PreToolUse / PostToolUse】【Stop】

「AIエージェントのループ&グラフエンジニアリング」第10回(第3章 いつ起動するか・最後の回)。AIに「閉会式の行を足して、settings.json の件数も 4 にして」と頼むと、頼んだとおり保護ファイルが書き換わり、頼んでいない改行ミスは残りました。「触らないで」「確認して」という注意書きは、読まれても毎回動く保証がありません。Hookは、エージェントの実行の節目(道具を使う前=PreToolUse、使った後=PostToolUse、終わる前=Stop)に置いた検査で、モデルが選ばなくても必ず動きます。外から届くWebhookとは合図の向きが逆であることを、校門のチェックゲートのたとえと対比表で整理し、終了コード(0は通す・2は止めて理由を渡す)と、イベントごとの効き方の違い、設定の置き場所(適用範囲)、HookはClaude Codeを動かす人の権限で動くという文書の警告を見ます。実演は、3つの割り込み点を持つ自作の小さなエージェント(考える役は言語モデル Codex 経由、道具と検査はこちらのプログラム)で、架空の文化祭お知らせページに改行ミスを仕込んで動かした記録です。同じ依頼(閉会式の行を足す+保護ファイル settings.json の件数を 4 に)を Hook なし(A)と Hook あり(B)で比べると、A では改行ミスが残り保護ファイルが書き換わり、B では PreToolUse が書き込みを止めました。別の条件(「ほかの行は触らないで」と頼んだ F)では、PostToolUse が改行ミスを指してモデルが直し、Stop が合格を確かめて終わりました。あわせて、検査が常に落ちる壊れたStop Hookを再現し、8回連続の上限で止まる記録と、解除(disableAllHooks・設定から外す・デバッグログ)の手順を「止める設計の表」にまとめます。