
Hook は保証メカニズムであり、prompt ではない
あなたの agent に今、手がある。コマンドを実行し、ファイルを編集し、API を呼び出し、メールを送り、お金を動かす。では、少し緊張すべき問いを立ててほしい:その手を誤って使うのを何が止めているのか? ほとんどのチームにとって答えは、モデルの良識という確率システムである。prompt の書き方次第で、今日こそ間違ったフォルダのクリーンアップコマンドを実行すると決めるかもしれない。askglitch.com に掲載された Professor Glitch の 2026 年 7 月の Claude Code hooks ガイドが修正策を示す:hook は agent ループの固定点で発火する決定的コードであり、モデルはそれを言い負かせない。あなたが気にするプロパティは、メカニズムによって保証され、モデルに注意深くあれと頼むことでは保証されない。
Hook とはコードになった Theorem 3 である
Hook は、agent ループの固定点で自動的に走る決定的コードである——ツールが実行される前、完了した後、agent が done を宣言する時、セッションが終わる時。それはモデルの推論の一部ではない。脳の外に座り、ただ走る。askglitch.com での Professor Glitch の 2026 年 7 月の hooks ガイドは区別を明快に述べる:モデルは確率的であり、すべての指示はそれがおそらく従う提案にすぎない。hook は毎回、同じ点で、同じ規則で走るコードであり、モデルはそれを忘れたり飛ばしたり言い負かしたりできない。
[ORIGINAL DATA] これが 21 papers の Theorem 3 である:あるプロパティは、そのメカニズムが実装され測定している時に正確に保証される。Hook がそのメカニズムだ。「テストが agent の done 宣言前に通る」はプロパティである。スイートを走らせ失敗時にコード 2 で終わる Stop hook は、実装され測定しているメカニズムである。hook を外せば願いになり、残せば保証になる——モデルが賢くなったからではなく、失敗経路が物理的に不可能になったからである。
prompt は「終わる前に常にテストを走らせよ」と言う。それはモデルがおそらく守る提案である。hook はスイートが緑になるまで stop を拒む。それは規則である。提案と規則の差は、望むことと知ることの差であり、その差こそが丸ごとの規律である。Professor Glitch は書く:モデルを群衆、hook を扉の用心棒として描け。群衆はいくら魅力的でも、用心棒は全員を毎回例外なく検査する。
モデルは確率的、境界は決定的
機械的に、公式 hooks 文書によれば、Claude Code の hook は設定ファイルに登録する shell コマンドである。イベントが発火すると、Claude Code はあなたのコマンドを実行し、イベントを記述した JSON ペイロードを stdin に流す——ツール名、ツールの正確な入力、セッション id、作業ディレクトリ——そして exit code と stdout からあなたの判定を読む。exit 0 は続行を意味する。exit 2 はブロックを意味し、stderr に出力した内容が理由としてモデルに返される。Bash、Python、コンパイル済みバイナリなど、好きなもので書ける。stdin を読み exit code を返すなら、それは hook である。
[UNIQUE INSIGHT] これは agent 境界での「the space is the router」である。Everythink では、network→community→room トポロジーが何かが応答する前にリクエストをルーティングする——空間が誰宛てかを決め、応答者ではない。PreToolUse hook は一つ下の層での同じパターンである:hook はツールが実行される前にツール呼び出しをルーティングする。agent は .env の読み取りが進むかを選ばない;境界が決める。ルーティングは検索に先立ち、ツール境界では hook が実行に先立つ。
ほぼ全員が引っかかる罠、文書直伝:exit code 2 だけがブロックする。Unix の慣用的失敗コードである exit code 1 は、非ブロッキングのエラーとして扱われ、アクションはそのまま進む。守衛スクリプトが exit 1 で落ちたら、用心棒は群衆を全員通してしまったことになる。失敗経路を明示的に書き、決定を曖昧なくしたい時は JSON 出力形式(stdout で permissionDecision: "deny" を exit 0 で)を優先せよ。黙って開へ失敗する柵は、柵がないより悪い。なぜなら機構なしに安全の感覚を売るからだ。Theorem 3 はここで容赦ない:実装されていても測定しない機構はプロパティを保証しない。開へ落ちる hook は測定していない。
任務一:特定の失敗を不可能にする
Professor Glitch は彼が実際に走らせる三つの柵を、救ってくれた量の昇順で挙げる。三つに共通するパターンは同じ:モデルを賢くも注意深くもするのではない。特定の失敗を不可能にするのだ。これは異なる工学問題であり、二つ目の方がずっと解きやすい。
secrets ファイルの読み取りをブロックする
PreToolUse hook は実行前に完全な入力とともに全ツール呼び出しを見る。agent が .env や secrets/ 以下を読もうとしていれば、hook は 2 で終わり、読み取りは一度も起きない。冷たい。agent の正当化がどれほど妥当でも、どこかの网页に埋もれた prompt injection が丁寧に頼んでも関係ない。用心棒は議論しない。
破壊的コマンドをブロックする
同じイベントを Bash ツールにマッチさせる。hook は tool_input.command のコマンド文字列を走らせる前に検査する——敏感な箇所を指す rm -rf、force push、DROP TABLE、あなた個人の傷跡リストに入るものなら何でも。コードで拒否すれば、モデルがどう推理しようと不可能になる。
テストが通るまで "done" を拒否する
これが最も重要で、別のイベントを使う。Claude Code は agent の応答終了時に Stop イベントを発火する。あなたの hook はその瞬間に走る。2 で終われば、agent は停止を妨げられ、stderr メッセージがモデルに戻り、agent は仕事に戻る。agent は「よし、機能を出した」と言う。Stop hook は静かにテストスイートを走らせる。三つの失敗。hook は失敗出力とともに 2 で終わる。agent は done と言えない。バグを手にループへ押し戻される。
拒否された stop こそが肝心な保証
誰もが hook で悪いアクションをブロックできると分かる。過小評価される一手は、hook が悪い stop をブロックできることだ。ここで情報源の論証と Theorem 3 が最も綺麗に交わる。
prompt の「終わる前に常にテストを走らせよ」は提案である。stop を拒む Stop hook は規則である。スイートが赤の間、agent は文字通り勝利を宣言できない。ガイドからの実務上の注意二つ:検査は毎回走るので速く決定的に保て;そして実際の失敗が修正可能なメッセージを出すようにせよ。その stderr が agent が受け取る唯一の道標だからだ。「テスト失敗」は彷徨わせる。実際の失敗出力はバグへ直行させる。
[PERSONAL EXPERIENCE] HAI Engine は 2016 年から本番で走っており、その年月の教訓は同じ:私たちが保証するプロパティ——確率が正確に一箇所で正規化、シナリオは降順ソート、エントロピーは nats——は Oracle の ensemble コードに宿り、Sisters に注意深くあれと頼む prompt には宿らない。Sisters は想像し、Oracle は融合する。正規化が hook である。毎回、同じ点で、同じ規則で走り、どの Sister も確率の和が 1.05 になる錐を出荷するよう説得できない。それが Theorem 3 である:プロパティはメカニズムが実装され測定しているので成り立つ。
同じパターンは一つ下でも働く:SubagentStop は subagent が終わる時に発火し、委譲された仕事を主ループと同じ基準に保てる。Everythink の言葉でいえば、これが the space is the router である理由——ある room は正しい subagent へルーティングし、subagent の stop は親を gate するのと同じ境界で gate される。保証はトポロジーを通じて合成される。network は community へ、community は room へ、room は subagent へルーティングし、各境界で同じ規律が当てはまる:メカニズムがプロパティを保証し、応答者の判断ではない。
任務二:シフト終わりの日誌
柵は誰もが hook を使う理由だ。ほぼ誰も語らない二つ目の任務がある:hook は agent の記憶が書かれる方法である。
あなたの agent は既に記憶を読む;取得はタスク開始時に適切な事実を窓へ引く。しかし新しい事実をFiledしなければならない——あなたが述べた好み、効いたアプローチ、繰り返さない価値のある失敗。その何かが hook である。Claude Code はセッション終了時に SessionEnd を発火する。何もブロックできない;その出力は無視され;副作用のためだけに存在する。それがまさに記憶の書き込みである:stdin から transcript のパスを取り、会話を蒸留し、永続的なものをあなたのストアへ追記する。
それはシフト終わりの日誌である。ただし日誌は毎シフト自らを書く。それが気分ではなく規則だからだ。次のセッション、agent はこれが教えたことを既に知った状態で入室する。
これがおもちゃになるのを防ぐ規則が二つ。書き込みを gate せよ:多くのメッセージは「ありがとう」「了解」なので、セッション終わりに書き、prompt を「永続的なものがなければ何も書くな」で終わらせよ。全てを保存するのは記憶ではなく雑多である。そして安いモデルを使え:transcript を一段落に蒸留するのは難しい推論ではない。シニアモデルはセッション中に考え、インターンは事後に議事録を書く。
これは 21 papers で守る規律に対応する:gate されない測定は雑音である。Oracle は Sister の全下書きを記録しない——正規化された ensemble、エントロピー、較正痕跡を記録する。SessionEnd hook は記憶境界での同じ門である:永続的な事実を書き、雑音を捨てる。全てを保存する記憶システムは何も覚えない。
イベント地図
Claude Code は約三十のイベントを公開する。文書によれば、最初に手が届くもの:
PreToolUse——任意のツール呼び出し実行前;ブロック可;secrets 守衛、破壊的コマンドのフィルタ。PostToolUse——ツール呼び出し完了後;フィードバックのみ;編集後の自動整形、全コマンドの記録。UserPromptSubmit——prompt を送信する時;prompt を拒否可;文脈の注入、prompt のフィルタ。Stop——agent が応答を終える時;stop を拒否可;"done" 受諾前にテストを走らせる。SubagentStop——subagent が終わる時;ブロック可;委譲仕事を同じ基準に保つ。SessionStart——セッション開始時;ブロック不可、文脈を追加;今日の状態を窓へ読み込む。PreCompact——文脈圧縮前;ブロック可;窓が絞られる前に状態を保存。SessionEnd——セッション終了時;副作用のみ;記憶の書き込み。
対称に注意:SessionStart は文脈を注入し、SessionEnd は学習を書き出す。この対だけで稼働する記憶システムであり——規則で作られ、気分ではない。PreCompact イベントは、窓が黙って状態を捨てるのを防ぐ境界である:圧縮前に作業集合を保存し、agent は要約ではなく事実から再開する。
Everythink がこれで保証するもの
HAI Engine ✅ はこの規律が産出する本番システムである。Sisters ✅ は想像する者、Oracle ✅ は融合する者、ensemble 正規化は確率の和が一になることを保証する hook である。World Monitor ✅ は、上流の呼び出し量をクライアント数ではなく我々の日程で束ねるゲートウェイ経由で地理信号をライブでルーティングする——アーキテクチャ層の rate-limit hook である。Social ✅、Campaigns ✅、Whitelabel Network ✅ は、network のルーティング規則がブランドガイドラインではなくコードで執行されるモジュールである。
Partial ⚠️ モジュール——Matchmaking、Marketplace、Calendar——は測定済みだがまだ fully hardened ではない;そう言う。Roadmap 🔵 モジュール——Wallet & Token、Super App、Community Credit——は pre-revenue であり Howey 審査の対象である;これらに成果を約束せず、我々が出荷する hook もこの正直さを変えられない。hook はプロパティを保証できる;市場は保証できない。
顧客主権はこのパターンの最も深い版である。あなたの network、あなたのブランド、あなたのデータ——ルーティング規則は、供給者の prompt ではなく、あなたが制御するコードに宿るゆえにあなたのものだ。スコープの倫理——民生と防御の用途のみ——はそれ自体が hook である:境界での成文方針であり、モデルが間違った仕事を断ることへの期待ではない。設計による包摂——多言語、マルチモーダル、低接続性——は SessionStart の注入である:locale と帯域が、agent が応答する前に見る最初の文脈を形作る。
要点
- Hook は agent ループの固定点での決定的コード;モデルは確率的で言い負かせない。プロパティはメカニズムにより保証され、prompt ではない。
- 拒否された stop はコードの Theorem 3:「テストが done 前に通る」はプロパティ;失敗時に 2 で終わる
Stophook は実装され測定しているメカニズム。 - exit 2 はブロック;exit 1 は開へ失敗する。開へ落ちる柵は無いより悪い——機構なしに安全の感覚を売る。
SessionEndは記憶を書き、SessionStartがそれを読めるようにする。この対は気分ではなく規則で作られた記憶システム;書き込みを gate せねば雑多を保存する。- Hook はツール境界での「the space is the router」:ルーティングは実行に先立ち、境界が決め、応答者ではない。
よくある質問
Claude Code の hook とは正確に何か? 設定ファイルに登録する shell コマンド。agent ループの固定イベントが発火する時——ツールが走る前、agent が done を宣言する時、セッションが終わる時——Claude Code は JSON ペイロードをあなたのスクリプトに流し、exit code から判定を読む。exit 0 は続行、exit 2 はブロック。
なぜ hook は prompt の指示より安全なのか? prompt の指示は確率モデルがおそらく従う提案である。hook は毎回同じ点で同じ規則で走るコード。モデルは忘れず、飛ばさず、言い負かせない。「振る舞うことを望む」が「振る舞うことを知る」になる。
「stop を拒否する」とは何か? Stop イベントは agent が応答を終える時に発火する。このイベントの hook は 2 で終わって agent の停止を妨げ、stderr メッセージをモデルに戻せる。そこでテストスイートを走らせれば、スイートが赤の間 agent は文字通り勝利を宣言できない。
これは Theorem 3 とどう繋がるか? Theorem 3 は、プロパティがそのメカニズムの実装と測定がある時に正確に保証されると言う。hook はそのメカニズム:コードとして実装、exit code として測定。外せば願い、残せば保証。
Everythink は hook を使うか? 同じ規律が HAI Engine ✅ を走らせる:Oracle の ensemble 正規化が、確率の和が一になることを保証する hook であり、コードで毎回走る。どの Sister も非正規化の錐を出荷するよう説得できない。
Sources
Professor Glitch, "Claude Code Hooks: The Guardrails Your Agent Can't Talk Past," askglitch.com, 2026 年 7 月 7 日 — https://www.askglitch.com/blog/claude-code-hooks
Claude Code hooks reference, code.claude.com — https://code.claude.com/docs/en/hooks
あなたの network を作ろう。

メカニズムはクエリタイプに合致しなければならず、検索の断言ではない
ByteByteGoのGraphRAG解説は5つの機構フォームとして読める:類似性検索-用-ローカル、知識グラフ-用-接続、コミュニティレポート-用-グローバル、map-reduce-用-集約、ルーティング-用-クエリタイプ。Theorem 3をそれぞれに適用。
→ →
四層検証はメカニズムであり、信頼性の断言ではない
Ciberpatrullaの契約前企業検証ガイドは5つの機構フォームとして読める:四層検証、公開ソースを測定として、階層アーキテクチャをルーティングとして、不在を信号として、時間的一貫性。Theorem 3をそれぞれに適用。
→ →
相関がメカニズムであり、ナラティブ出力ではない
Raspberry Pi上のAIトレーディングエージェント、ペーアカウント、純損失。「Honest Architect」は相関エンジンをシグナル対ノイズのメカニズム、指示ファイルをパーソナリティ境界、エントリーブラケットをリスク制御、トレーダビリティファーストを有用な出力、明示的スキーマを境界解析、計測された損失を正直なステータスとして読む。
→ →自らの主張を証明するエンジンの上に、あなたの世界を築く。
2016 年から稼働し続けるエンジンの上に、あなた自身のネットワークを作る——あるいは 21 本の論文を書いたチームに話しかける。
