このウィキの多くのページが、同じ動きを記述している。AI エージェントに従わせたいルールは、最初はそのコンテキスト内のテキストとして始まる。CLAUDE.md や AGENTS.md の 1 行、Markdown のルール文書、ツールの docstring、システムプロンプトなどである。そしてどの記述も、そのテキストが確実には守られないことに行き当たる。毎回必ず成り立たなければならないルールは、コンテキストから取り出され、それを実行するかどうかをモデルが決めることのない仕組みへと移される。フック、パーミッションルール、CI チェック、テスト、スクリプト、あるいはアプリケーションコード内のポリシーエンジンである。本ページは、この繰り返し現れる形、各ページがその理由として挙げるもの、どのルールを移しどのルールをそのまま残すのか、そして各ページが記録している限界を記述する。

その形と、それが現れる場所

このビューの背後には 21 のページがある。そのうち 15 ページは、それぞれ自身の出典からこの形を述べている。

  1. エージェント型コーディングのフック:決定論的な AI ガードレール: コンテキストウィンドウを通じて与えられるものはすべて「提案であって保証ではない」(“is a suggestion, not a guarantee”)。フックが決定論的な層として示されるのは、フックを実行するかどうかをモデルではなくランタイムが決めるからである。
  2. AI エージェントのガードレール:LLM が回避できないルール: docstring やシステムプロンプトに書かれたビジネスルールは、モデルが解釈し、呼び出しのたびに判断し直すコンテキストである。呼び出しをキャンセルするフレームワークレベルのフックが、その強制として示される。
  3. Claude Code フック完全ガイド - ツールライフサイクル全体にわたる決定論的な強制: 「システムプロンプトは依頼である。フックは保証である。」(“A system prompt is a request. A hook is a guarantee.”)
  4. Claude Code の舵取り:CLAUDE.md、スキル、フック、サブエージェントをいつ使うか: 「X のときは毎回、必ず Y をする」(“every time X, always do Y”)はフックに置くべきものであり、「これは決してするな」(“never do this”)は指示に任せる仕事ではない。フックとパーミッションが決定論的な強制手段として挙げられる。
  5. 良い CLAUDE.md の書き方: 「Claude はリンターではない」(“Claude is not a linter”)。その仕事は、ファイル内の指示ではなく、たとえば Stop フックから実行される決定論的なフォーマッターやリンターが担う。
  6. Skill Issue:コーディングエージェントのためのハーネスエンジニアリング: コーディングエージェントが指示を無視するのを 1 年間見てきた末に書かれたこの記事は、決定論的な制御フローの役割をフックに与える。その例のフックは、Claude が停止したときにフォーマッターと型チェックを実行し、失敗すると終了コード 2 を返す。こうしてハーネスがエージェントにエラーを修正させる。
  7. AIエージェント向けコーディングルールをArchUnitで機械的に検証する運用: エージェント向けに Markdown で書かれたコーディングルールは、構造として表現できる範囲で ArchUnit テストへとコンパイルされ、必須の CI ゲートとして実行される。
  8. 決定論的な品質ゲート: テストが通っていないままプルリクエストがマージされたことを受けて、テストはエージェント自身のワークフローの一ステップとしてではなく、SubagentStop フックと GitHub Action によって実行されるようになる。
  9. Agent Governance Toolkit: プロンプトレベルの安全性は「確率的なシステムへの丁寧なお願い」(“a polite request to a stochastic system”)と表現される。ポリシーは、すべてのツール呼び出し、メッセージ、委任を傍受する決定論的なアプリケーションコードの中で強制される。
  10. AgentSpec:安全で信頼性の高い LLM エージェントのためのカスタマイズ可能なランタイム強制: ドメイン固有言語であり、そのルールはエージェントの意思決定ループにフックする強制層によって評価される。論文はこれを、自然言語による制約を対話レベルで適用する NVIDIA の NeMo や、制約の解釈を LLM に頼る GuardAgent と対比している。AgentSpec は強制をモデルの外部に保つ。
  11. FIDES: Microsoft のアーキテクチャ決定記録(ADR)は、プロンプトインジェクションに対するプロンプトエンジニアリングによる防御を、非決定論的で回避可能だとして退け、呼び出しの実行前にポリシーをチェックするミドルウェアによって強制されるラベルを提案している。
  12. ソフトウェア 3.0 時代を迎えて: ブランチ命名規約のような決定論的なロジックはスクリプトに移すべきであり、そうすればモデルは毎回その規約を解釈してトークンを費やす代わりにスクリプトを実行する。
  13. セキュリティコンテキストファイル: すべてのセッションに読み込まれるセキュリティルールのファイルは、デプロイ前に通過しなければならない SAST、認証情報スキャン、インフラ検証と組み合わされ、「プロンプトの指示だけに頼ることはない」(“with no reliance on prompt instructions alone”)。
  14. オープンソースコミュニティの AI コントリビューションルールに対するコーディングエージェントの遵守状況の初見: オープンソースコミュニティが明文化している AI コントリビューションのルールをコーディングエージェントがどう扱うかを測定したうえで、著者らは、禁止ルールと人間の承認を求めるルールをエージェントの外で強制することを推奨する。マージをブロックする CI チェック、必須の人間によるレビュー、あるいは AI が作成したプルリクエストを閉じるボットである。
  15. Codex のカスタム Code Review ルール: AGENTS.md に書かれたリポジトリのルールは、テストやリンターを置き換えるものではなく補完するものと位置づけられる。決定論的かつ機械的なチェックはそうしたツールと CI に残り、テスト、ブランチ保護、必須の承認が引き続きハードな強制を担う。

3 つのページは複数の出典からこの形をまとめたものであり、別個の事例を加えるのではなく証拠を再掲している。

  1. エージェントフック は、上記のいくつかのページから議論を集めている。このページが付け加えるのは、CLAUDE.md の指示は助言的であり、フックは決定論的だと 1 行で述べる Anthropic の Claude Code ドキュメントである。
  2. CLAUDE.md は、Claude Code の舵取り:CLAUDE.md、スキル、フック、サブエージェントをいつ使うか、良い CLAUDE.md の書き方、Claude Code のメモリに関するドキュメントに依拠している。このページがそのドキュメントから付け加えるのは、CLAUDE.md は強制される設定としてではなくコンテキストとして読み込まれること、そして毎回のコミット前のような決まった時点で実行されなければならない指示は、代わりにフックとして書くべきだということである。
  3. ニューロシンボリック検証 は、AI エージェントのガードレール:LLM が回避できないルール に現れるパターンに名前を与えたもので、その 1 本の記事から作られている。

残る 3 ページは、この形を述べてはいないが、それに関係している。

  1. ガイドとセンサー は、この形のための語彙を提供する。これはどのルールを移すかについての節で記述する。
  2. AI にチームのルールを守らせる方法 は一つの変形であり、後述の独立した節で記述する。これはチームのルールをセッションの冒頭からフックへと移すが、フックが届けるものは依然として、エージェントが従うことも無視することもできるテキストである。
  3. 構文だけでなく意図を判断するゼロトラスト AI エージェントを構築する は、決定論的な制御がどこで止まるかを記録している。これはモデルの外での強制についての節で記述する。

各ページの出典は種類がさまざまである。実務者のブログ、DEV Community 上の AWS の記事、自社製品についての Anthropic と OpenAI 自身のガイダンス、HumanLayer の記事、自分たちの実践についての 2 つのチームの記事(うち 1 つは Toss Bank のもの)、2 つのインフラプロジェクトについての 1 人のエンジニアの記事、Microsoft のリポジトリと Microsoft のアーキテクチャ決定記録、Google Cloud の記事、ICSE 2026 の論文、そして北京大学による実証研究である。そのうちのいくつかは Claude Code を中心としており、それらが記述するフックの慣習は、大部分がこのツールのものである。

各ページが指示を提案として扱う理由

各ページは、コンテキスト内の指示には拘束力がないという点で一致している。その理由として挙げるものは異なる。

  • 指示の届けられ方。 CLAUDE.md は、CLAUDE.md の内容はシステムプロンプトの後にユーザーメッセージとして届けられるため、とりわけ曖昧な指示や互いに矛盾する指示については厳密な遵守が保証されない、と説明する Claude Code のドキュメントを記録している。良い CLAUDE.md の書き方 は、このファイルが「関連するかもしれないし、しないかもしれない」と告げるシステムリマインダーとともに注入されるため、Claude は現在のタスクに無関係だと判断した内容を無視する、と報告している。
  • セッション中の劣化。 エージェント型コーディングのフック:決定論的な AI ガードレール は、CLAUDE.md の規約、スキル、プロンプトがモデルの注意を奪い合うため、セッションが長くなるにつれて遵守率が下がる傾向があると述べる。AI にチームのルールを守らせる方法 は、エージェントがルートの指示ファイルにあるルールをセッションの序盤には守り、後半には守らなくなったと報告し、これを Lost in the Middle に帰している。
  • 指示が多すぎる。 良い CLAUDE.md の書き方 は、モデルが一貫して従える指示の数には限りがあり、指示を増やすとそのすべてにわたって指示追従が悪化すると論じる。Claude Code の舵取り:CLAUDE.md、スキル、フック、サブエージェントをいつ使うか は、持ち主のいない、膨らみ続ける CLAUDE.md は、重要な指示への遵守を薄めると述べる。
  • モデルは呼び出しのたびにルールを解釈し直す。 AI エージェントのガードレール:LLM が回避できないルール は具体例を示す。支払いを先に確認しなければならないと書かれた docstring を読んだエージェントが、それでも予約を確定し、成功を報告したのである。ソフトウェア 3.0 時代を迎えて は同じ論点のコスト面の版を示す。規約を解釈するたびにトークンが費やされる。
  • エージェントがルールを読みもしない。 オープンソースコミュニティの AI コントリビューションルールに対するコーディングエージェントの遵守状況の初見 では、アンカーなし・支援なしの 347 回の実行のうち、リポジトリのポリシーファイルが開かれたのは 12 回であり、支援なしでの違反 248 件のうち 242 件は、そのファイルが一度も開かれないまま起きた。
  • 読まれても抵抗されるルールがある。 同じ研究は、AGENTS.md に禁止事項をそのまま引用しても、4 つのエージェントのうち 3 つでは拒否率が 0% のままで、4 つ目も 10% に上がっただけであり、違反を名指しするフィードバックを 1 回与えても拒否率は最大 23% までしか上がらなかったことを見出した。著者らはこのパターンを、エージェントは自分の作業を広げる指示には従うが、作業を取り消す指示には抵抗する、とまとめている。
  • 圧力、曖昧さ、インジェクション。 Claude Code の舵取り:CLAUDE.md、スキル、フック、サブエージェントをいつ使うか は、プロンプトで与えたルールが守られなくなる状況として、圧力、長いセッション、曖昧な状況、そしてモデルが読むファイルに仕込まれたプロンプトインジェクションを挙げる。Agent Governance Toolkit は、モデル層の防御が確率的なままであることの証拠として、プロンプトインジェクションに関するガイダンスと適応型攻撃の結果を挙げる。FIDES はプロンプトエンジニアリングによる防御を回避可能だとして退け、セキュリティコンテキストファイル は、プロンプトは上書きされ、誤解され、無視されうると述べる。
  • レビュアーへの負荷。 AIエージェント向けコーディングルールをArchUnitで機械的に検証する運用 は別の論点を示す。エージェントはコードを素早く生成するので、違反も同じ速さでやってくる。そして目視での確認では、レビュアーの負荷が際限なく増えていく。この記事の主張は、実行可能なルールによって検証が生成に追いつけるようになる、というものである。決定論的な品質ゲート も同様に、レビュアーがテストが通ったことを手作業で確認する必要がなくなったと報告している。

ルールの移し先

各ページを通じて、移し先は、ワークフローのどの時点でルールが成り立たなければならないかによって異なる。

移し先によって、ルールを誰が持つかも異なる。エージェント型コーディングのフック:決定論的な AI ガードレール は、フックの配置をそのスコープとして扱う。個人的なセーフティネットにはユーザー設定、チームの標準にはプロジェクトの設定、組織のガードレールには管理ポリシー設定である。構文だけでなく意図を判断するゼロトラスト AI エージェントを構築する は、チェックをプラットフォームで強制すると、その所有権がエージェント開発者とは別の、プラットフォーム管理者やセキュリティ管理者に移ると論じる。

移すルールと残すルール

すべてのルールを移すページは一つもない。いくつかのページは明示的に線を引いており、その線を引く場所はそれぞれ異なる。

ガイドとセンサー は、これらの線に合う語彙を与える。これはハーネスの制御を、エージェントが行動する前に誘導するガイドと、事後に観測するセンサーとに分け、それぞれを計算的なもの(決定論的:テスト、リンター、型チェッカー)と推論的なもの(AI レビュー、LLM-as-a-Judge)とに分ける。AGENTS.md の規約は推論的ガイドの例であり、ArchUnit テストを実行するフックは計算的センサーの例である。その説明では両方が必要だとされる。フィードバックだけでは同じ間違いを繰り返し続けるエージェントになり、フィードフォワードだけではルールを書き込みはしても、それが機能したかどうかを知ることのないエージェントになる。セキュリティコンテキストファイル も同じ用語を使う。このファイルは推論的ガイドであり、エージェントが従い損ねたものは、決定論的なチェックとデプロイのゲートがやはり捕捉しなければならない。

いくつかのページは、強制と並んで指示にも役割を残している。エージェント型コーディングのフック:決定論的な AI ガードレール は、より良い指示は役に立ち、コンテキスト内のドメイン知識は依然として影響が大きいと述べる。Claude Code フック完全ガイド - ツールライフサイクル全体にわたる決定論的な強制 は、CLAUDE.md、パーミッション、フックに同じ要件を共同で担わせる。

各ページが記録する限界

各ページは、この移行そのものについて次の限界を記録している。

モデルの外は、常に決定論的とは限らない

各ページはたいてい、2 つの性質を一つのものとして扱っている。ルールがモデル自身の判断の外で評価されること、そしてその評価が決定論的であることである。いくつかのページは、前者の性質を持ちながら後者を持たない仕組みを記録している。

これらの場合、ルールは自然言語に戻るが、それを読むのは、そのルールが統制する行動の主体であるエージェントではなく、呼び出しを止めることのできる別個のチェックである。

変形:ルールを強制するのではなく届けるフック

AI にチームのルールを守らせる方法 は同じ観察から出発する。ルートの指示ファイルにあるルールは、セッションが長くなるにつれて守られなくなる。そして同じ仕組みである エージェントフック に手を伸ばすが、その使い方が異なる。このプラグイン pfmls-stylepack は、ファイルが書き込まれた直後の時点と、エージェントが終了しようとする時点にフックする。それぞれの時点で、該当する規約ルールをいくつか、それが適用されるコードの隣にテキストとして注入する。何もブロックはせず、ループ終了時のテキストは自らを、ハードな失敗ではなくレビューを促すリマインダーだと述べている。このページは、自らの問題を、ルールをいつ、いくつ提示するかの問題として捉えている。ここで移されるのは、ルールがコンテキストに入る場所であって、それが守られるかどうかを誰が決めるかではない。

このページは、上で挙げた限界のうち 2 つに突き当たっている。そのフックがファイル名パターンと正規表現でルールを選ぶのは、モデルベースの関連性チェックでは 1 リクエストあたり約 10 秒が加わったからである。またこのページは、緩い条件でトリガーされるルールが 21 のセッションで発火したにもかかわらず、一度もコードの変更につながらなかったと報告し、誤ったフィードバックはエージェントにルールを軽視することを教えてしまうと論じている。

証拠の強さ

証拠の大半は、1 つのチームまたは 1 人の著者による記述である。AI エージェントのガードレール:LLM が回避できないルール は、2 つの無効なケースと 1 つの有効なケースからなる、目的に合わせて作った例で結果を報告しており、それを独立した証拠ではなく具体的な例示だと述べている。決定論的な品質ゲート は、2 つのプロジェクトについての 1 人のエンジニアの報告である。AIエージェント向けコーディングルールをArchUnitで機械的に検証する運用 は導入前後の測定値を報告しておらず、AI にチームのルールを守らせる方法 の数値はそのチーム自身のログに由来する。Claude Code の舵取り:CLAUDE.md、スキル、フック、サブエージェントをいつ使うか は自社製品についての Anthropic のガイダンスであり、Codex のカスタム Code Review ルール にある 98% 対 58.3% という数値は、レビューを導くルールについての OpenAI の社内評価であって、プロンプトから外に移されたルールについてのものではない。FIDES はステータスが proposed(提案中)のアーキテクチャ決定記録であり、ガイドとセンサー は 1 人の著者によるメンタルモデルである。

測定を報告しているページは 2 つあり、それぞれがこのパターンの一部しか扱っていない。オープンソースコミュニティの AI コントリビューションルールに対するコーディングエージェントの遵守状況の初見 が測定しているのは前提のほうである。すなわち、4 組のエージェントとモデルの組み合わせが、単純なイシューにおいて、リポジトリのファイルに置かれた AI コントリビューションのルールにどれだけ従うかである。この研究は、自らが推奨する CI チェック、レビュー、ボットについては測定していない。AgentSpec:安全で信頼性の高い LLM エージェントのためのカスタマイズ可能なランタイム強制 が測定しているのはランタイムでの強制である。リスクのあるコード実行を 90% 超のケースで阻止したこと、身体性を持つエージェントの危険なタスクを 0% に減らした一方で、安全なタスクの完了率が 58.62% から 54.26% に下がったこと、そしてテストした運転シナリオで 100% の遵守を達成したことを報告している。これらの結果は、チームのコーディングルールではなく、コード、身体性、運転の各エージェントに対する安全上の制約に関するものである。

これをパターンたらしめているのは、同じ形が別々に書かれた出典にわたって繰り返し現れる頻度であり(エージェントフック、CLAUDE.md、ニューロシンボリック検証 は、それぞれ他のページからまとめられたものなので例外である)、ルールを移すことが一般に機能するという測定された証拠ではない。