AIエージェントが手順書を83%無視する理由|MCP 2026-07-28移行とRust強制検問術
作成日:

AIエージェントが手順書を83%無視する理由|MCP 2026-07-28移行とRust強制検問術


論旨

AI エージェント(Claude Code や Antigravity 等)に業務や開発を任せる際、多くの現場が 「マニュアルや手順書を別ファイルで用意し、『作業前に必ずこのファイルを読んでください』と指示しているのに、AI がそれを読まずに自己流で暴走する」 という最大の障壁(ボトルネック)に直面しています。

2026 年 11 月 14 日に公開された自律型 AI 組織の約 3 か月間(2026 年 8 月 6 日〜11 月 13 日)にわたる一次運用計測では、外部ファイルとして手順書を指定しても AI が実際に手順書を読み出したのは 12 回中わずか 2 回(約 16.7%)に過ぎず、残りの 83.3%(10 回)は手順書を完全に無視して思い込みで実行した という衝撃的な事実が報告されました。さらに同時期、AI と外部ツールを繋ぐ標準規格である Model Context Protocol(MCP)も 『MCP 2026-07-28 仕様』 へと大型刷新され、従来の initialize ハンドシェイクと Mcp-Session-Id ヘッダーが完全廃止(ステートレスコア化) されるなど、エージェント制御の前提が大きく塗り替わっています。

結論からお伝えすると、AI エージェントの運用では「ファイルを読ませる」という性善説の設計を捨て、① Hooks 等でコンテキストへ直接貼る(自動注入)、② プログラム側のゲート(当ラボでは Pure Rust 製 gemini-gate)で違反時に 4 ミリ秒で強制停止させる、③ MCP 2026-07-28 仕様のステートレス設計・OAuth 2.1(RFC 9207)検証・物理セキュリティキーで通信と権限を決定論的に縛る という「ハードウェア&ソフトウェア強制ハーネス」への全面転換が不可欠です。
合わせて読みたい深まる関連情報
対象となる方
  • CLAUDE.md や GEMINI.md から外部の docs/ 手順書を参照させているのに、AI エージェントが毎回手順を飛ばして手戻りが発生している方

  • 『MCP 2026-07-28 仕様』 における Mcp-Session-Id 廃止(ステートレス化) や server/discover、ttlMs、MRTR、OAuth 2.1 必須化への具体的な移行手順を知りたい開発者の方

  • プロンプトでの「お願い」に頼らず、Hooks 自動注入と Rust 検問プログラムによって 無事故で自律エージェントを回す管理体制(ガバナンス) を構築したい方

衝撃の一次計測:AIは外部手順書を83.3%無視する

AI エージェントを本格的に開発へ導入したチームが必ずぶつかる壁があります。それは、プロジェクトのルートにある設定ファイル(CLAUDE.md や GEMINI.md)が長くなりすぎたため、詳細な手順を別ファイル(docs/manual.md 等)へ切り出し、「〇〇の作業をする時は、先に docs/manual.md を読んでから実行すること」とルールに記載した途端、AI がその手順書をまったく読まなくなる現象 です。

これまで多くの開発者が「自分のプロンプトの書き方が悪いのかな?」「『重要』『絶対遵守』と太字で強調すれば読んでくれるはずだ」と試行錯誤を繰り返してきました。しかし、それが単なる気のせいではなく、大規模言語モデル(LLM)の構造的な挙動であることを裏付ける貴重な一次運用データが公開されました。

3か月間の自律AI組織運用で判明した12回中2回の現実

2026 年 11 月 14 日に公開された Zenn の一次運用計測記事(Claude Codeの手順書は、指定しても読まれない——教訓を「読ませる」から「貼る」「止める」へ変えた3か月の記録) では、Claude Code を用いた自律型 AI エージェント組織を 2026 年 8 月 6 日から 11 月 13 日までの約 3 か月間 にわたって実運用した詳細な記録が分析されています。

この運用期間中の 2 日間の委任ログにおいて、外部ファイルとして配置した手順書のパスを明示し、作業前に参照するよう指示した計 12 回のケースを集計したところ、驚くべき数値が浮かび上がりました。

自律型AI組織(約3か月運用)における外部手順書の参照実測率
Zenn一次運用計測(約3か月運用中の2日間の委任記録:手順書指定12回中2回のみ参照)および当ラボの強制検問との比較
外部手順書を実際に読んだ割合【一次実測】12回中わずか2回のみ read ツール等で手順書を参照
16.7%(12回中2回)6回に1回しか読まない
外部手順書を無視して実行した割合【一次実測】12回中10回はファイルを開かずAIの思い込み(事前学習知識)で直行
83.3%(12回中10回)プロンプト指示の限界
コンテキスト自動注入+Rust物理検問【当ラボ実測】Hooksによる直接注入と gemini-gate(4ms)による違反時100%デプロイ遮断
100%(違反通過0件)決定論的強制
出典:Zenn (tottoko_hamu, 2026-11-14) の一次運用実測値および当ラボ(公開総数756記事)の検問稼働実績

この 2 日間の委任記録で AI エージェントに対して「手順書を読んでから作業せよ」と指示した 全 12 回の試行のうち、実際に AI がファイル読み込みツールを使って手順書を開いたのはわずか 2 回(約 16.7%) しかありませんでした。残りの 10 回(約 83.3%)は、手順書を 1 文字も開かないまま、「たぶんこうだろう」という思い込みで作業へ直行していた のです。

質問するおじさん

12 回指示して 2 回しか読まないなんて、人間の新入社員だったら大問題ですよ!「必ず読んでね」と書いてあるのに、どうして 8 割以上も無視してしまうんですか?

解説ナビゲーター

AI に悪気があるわけではなく、「ゴール(タスク完了)へ最短距離で進もうとする確率推論の性質」が原因なんです。AI にとって外部ファイルをわざわざ読みに行く行為は、回り道に見えてしまうんですね。

なぜLLMは「手順書を読んで」という指示をサボるのか

なぜこれほど高い確率で AI エージェントは外部の手順書を無視するのでしょうか。その理由は、LLM が持つ 「事前学習知識による過信」 と 「ツール呼び出しコストの回避バイアス」 の 2 点に集約されます。

一般的な Git コマンドの操作、テストの実行、あるいは Markdown 記事の執筆といったタスクは、AI が事前学習の段階で何百万回もパターンを学習しています。そのため、ユーザーから「記事を修正してデプロイして」と指示された瞬間、AI の内部では 「やり方はすでに知っている(わざわざ read_file を 1 回挟まなくても直接コマンドや編集を実行できる)」 というトークン生成経路の確率が跳ね上がります。

🔍 AIエージェントが外部手順書を読み飛ばす3つの構造的原因
  1. 既知タスクに対するショートカット推論 : ビルドや記事執筆など、一般論として AI が「やり方を知っているつもりになれる作業」ほど、ローカル固有のルール(独自タグや禁止事項)が書かれた外部手順書を開く確率が急落します。

  2. コンテキスト距離の減衰(Lost in the Middle) : 会話のターンが進み、直近のエラー出力やコード差分が数万トークン積み上がると、システムプロンプトの片隅にある「〇〇の時は別ファイルを参照せよ」という間接的なポインタ指示の重み(Attention)が相対的に薄れます。

  3. 間接参照(2段階ホップ)の認知負荷 : 「ルール A を読む → そこに書いてあるファイルパス B を認識する → ツールを呼んでファイル B を開く → ファイル B の中身に従って作業する」という多段ホップは、確率モデルにとって途中で脱線しやすい最大の障壁(ボトルネック)となります。

つまり、「AI が手順書を読まない」のはプロンプトの言い回しが優しいからではなく、「AI 自身の判断で外部ファイルを読みに行かせる(Pull 型参照)」という設計そのものが、確率的言語モデルの特性と根本的に噛み合っていない ためです。

ブラックボックスを覗くAI整備士研究が示す確率推論の癖

「それなら、AI モデルの内部回路を直接修理して、手順書を必ず守るように改造できないのか?」と疑問に思う方もいるかもしれません。実はこの点について、2026 年 11 月に科学誌 Nature で極めて興味深い最新動向が報じられました。

Nature 誌の解説記事『This AI ‘mechanic’ can peer inside the black box of other neural networks』(doi:10.1038/d41586-026-03679-8) によると、これまで完全なブラックボックスとされてきた巨大ニューラルネットワークの内部構造を覗き込み、誤動作やハルシネーションを引き起こす特定の特徴量や回路を特定してピンポイントで修正する 「AI 整備士(AI mechanic / 機械論的解釈可能性)」 の研究が急速に進展しています。

🧬 Nature論文(doi:10.1038/d41586-026-03679-8)が示す「AI整備士」の現在地
  • 内部回路の特定と外科的修正 : 従来の「大量のデータを追加学習させて祈る」手法ではなく、車のエンジンを整備士が点検するように、ニューラルネットワーク内部のどのニューロン群が特定のバグやバイアスを発火させているかを特定し、局所的に調整する技術が実証され始めています。

  • 確率モデルゆえの非決定論的限界 : しかし同時に、数千億〜数兆パラメータ規模の商用 LLM において「ローカルプロジェクト固有の業務手順書を 100% の確率で自発的に開かせる」よう内部重みを完全制御することは、現時点では不可能です。

  • 外部ハーネスとの役割分担が必須 : したがって、モデル内部の解釈可能性研究(AI 整備士)が進む一方で、実務のシステム開発においては 「モデルは確率的に手順を飛ばす生き物である」という前提に立ち、モデルの外側(OS・CLI・フック・型検証)で決定論的な安全装置を組むこと が唯一の確実な解となります。


読ませる設計を捨てる:自動注入とRust物理検問の実装

Zenn の 3 か月運用記事 が導き出した結論は極めて明快です。83.3% の確率で無視される「手順書を読ませる設計」をきっぱりと捨て、① 必要な情報はコンテキストへ直接貼る(自動注入する)、② 守らせたいルールはプログラム側で強制停止させる(Hooks やゲートで遮断する) という 2 大原則へ転換したことで、手順無視による事故を根絶しています。

この結論は、当ラボが全 756記事 規模のサイト運用とシステム開発において実践してきたアーキテクチャと完全に一致します。

質問するおじさん

でも、「コンテキストへ直接貼る」といっても、ルールや手順書を全部最初から CLAUDE.md や GEMINI.md に詰め込んだら、今度は毎回何千行も読み込まれてトークン代や利用枠がパンクしてしまいませんか?

解説ナビゲーター

そこが一番の勘所です!最初から全部をベタ貼りするのではなく、「常時貼る最小コア」と「AI が特定の行動を起こした瞬間にだけ Hooks で自動注入するガイド」に分けることで、トークン節約と遵守率 100% を両立できるんです。

文脈へ直接貼る3層分離とHooks自動注入の仕組み

当ラボでは、ルール群と仕様書が合算で 1,347行 に達しています。これをそのまま単一ファイルとして放置すれば、コンテキストを圧迫するだけでなく、重要な指示が埋もれてしまいます。また、別ファイルに分けて「必要に応じて read_file で読んでね」と書いても、前述の通り 83.3% は無視されるか、前回の検証記事 で判明したように「検索と read_file の 2 往復で 14〜17 秒を浪費する」という問題が起きます。

そこで当ラボでは、ルールを 3 層に分離 した上で、AI のファイル編集や履歴状態を検知して次の推論直前に介入する ローカル Hooks(kb-search 内蔵の hook_bridge.rs)によるイベント駆動の自動注入(Push 型注入) を実装しています。

🗂️ 手順書未読とコンテキスト肥大化を同時に防ぐ「ルール3層分離」の設計
  1. 第 1 層(常時直貼りコア:GEMINI.md 第 1〜4 章) : 記事の基本書式、ハルシネーション排除、完了定義など、すべてのターンで 100% 守らせる最小限の絶対原則だけをルートに配置し、セッション開始時に初期コンテキストへ自動注入します。

  2. 第 2 層(イベント駆動の自動注入:hook_bridge.rs による ephemeralMessage) : AI がファイルを新規作成・編集した際(PostToolUse でキュー記録)や、仕様書等を直接 read_file した履歴を検知した際、直後の推論開始前(PreInvocation)に即時書式エラー・連動修正候補・並列化や SQLite 直結の矯正ガイドだけをフックが自動生成し、1 ターン限定の一時メッセージとして AI の目の前の内部コンテキストへ直接差し込みます。

  3. 第 3 層(オンデマンド 1 コール抽出:docs/GEMINI_MANUAL.md × SQLite) : UI・CSS・データベース設計などの詳細な仕様(1,049 行)は SQLite の doc_sections テーブルへ格納し、AI が章節番号を指定した 1 ツールコール(約 2.31ms)で行番号付きの生行全文を直接返却します。

手順書運用の設計比較:任意参照(Pull型) vs 自動注入&物理検問(Push+Gate型)
従来設計 vs 強制ハーネス設計
無視率83.3%
従来の「手順書を読ませる」設計(Pull型)
  • AI の自主性に依存 :「作業前に docs/manual.md を読むこと」と書いても、12 回中 10 回(83.3%)は開かずに直行する

  • 読んだ場合も 2 往復の通信ロス :検索スニペット取得(約 3 秒)+AI 再推論と read_file(11〜14 秒)でトークンと時間を浪費

  • 違反が事後にしか分からない :デプロイ後やレビュー時に人間が目視でルール違反を発見し、手戻り修正が発生する

違反通過0件・4ms検問
自動注入+Rust物理検問設計(Push+Gate型)
  • 3 層分離と初期コンテキスト直貼り :絶対原則のみをコア(GEMINI.md)として初期コンテキストへ 100% 自動注入

  • Hooks による文脈ピンポイント自動注入 :ファイル編集や仕様書読込の直後(次の PreInvocation)に、書式違反や連鎖波及候補・矯正ガイドを ephemeralMessage で直接差し込む

  • Pure Rust gemini-gate による強制停止 :万が一 AI がルールを飛ばしても、約 4ms の機械検問が保存時・デプロイ時に物理遮断

83.3%無視される『ファイルを読ませるお願い』を廃止し、イベント連動注入とRust検問で決定論的に制御

具体的には、AI に「ファイルを開け」と命じるのではなく、AI が記事ファイルを write_file や edit_file した直後に PostToolUse フックが対象パスをキューへ記録し、続く次の思考開始時(PreInvocation)に Rust 製フック(hook_bridge.rs)が発火します。そして、その記事に関連する「数値連動記事のリスト(SQLite impact 抽出結果)」や「書式エラーの指摘」「GEMINI.md への仕様保存リマインド」を、AI 内部専用の一時注入ステップ(injectSteps の ephemeralMessage)として次の推論コンテキスト末尾へ直接貼り付ける のです。

次の思考が始まる直前にプロンプト末尾へ直接差し込まれたテキストは、AI が無視しようとしても物理的に視界(直近の Attention 領域)に入るため、読み飛ばしが起きません。

違反時に強制停止させるPure Rust検問所の威力

自動注入に加えてもう一つの柱となるのが、「ルール違反があればプログラム側で処理を強制停止させる」 仕組みです。

当ラボでは、記事の書式ルール、見出しの文字数上限(H2 は 30 文字以内、H3 は 28 文字以内)、目次先頭の番号禁止、太字記号 ** 外側の半角スペース、内部リンク切れ、孤立記事(被リンク 0 件)の防止、画像サイズ整合などを検査する Pure Rust 製の単一バイナリ検問所 gemini-gate を自作して常駐させています。

AIの思い込み暴走を100%阻止する3段階の決定論的防衛ライン
GATE 1
1手目の事前カルテ自動注入

kb-search prep 1 コールで推奨 priority・既存タグ・逆リンク空き枠・章節仕様を一括でコンテキストへ直接貼る。

GATE 2
ファイル保存時の即時Hooks検問

編集直後に hook_bridge.rs が gemini-gate と SQLite impact を自動実行し、違反箇所と連動修正候補を即座に突き返す。

GATE 3
本番転送時の物理ハードロック

npm run 本番環境転送 実行時に差分監査が走り、違反が 1 件でも残っていればビルドと SFTP 転送を物理的に強制停止する。

プロンプトのお願いに頼らず、事前カルテ注入・保存時4msフック・デプロイ前ハードゲートの3段階で制御

どれだけ精巧なプロンプトを書いても、AI が見出しを 32 文字にしてしまったり、日本語と ** の間に半角スペースを入れ忘れたりする確率はゼロにはなりません。しかし、「違反が 1 件でもあれば exit code 1 でデプロイコマンド自体が物理的に止まる」 という Rust プログラムを門番として置いておけば、AI は通過するために必ずエラー出力を読んで自己修正します。

手順書の手探り参照をゼロにするSQLite 1コール直結

さらに、1,049 行ある詳細仕様書(docs/GEMINI_MANUAL.md)やプロジェクト内のコード構造についても、AI にファイルを直接 read_file で探させる運用を廃止しました。CLAUDE.md肥大化とTODO迷子を根絶したSQLite階層ナビの検証記事 および 仕様書1コール化とCarbon並列監査の実測記事 で詳しく解説した通り、SQLite の doc_sections テーブルから約 2.31ms・1 ツールコールで該当章節の生行全文を引き当てる仕組みを整備しています。

万が一、親エージェントが古い習慣で仕様書ファイル(docs/GEMINI_MANUAL.md や GEMINI_AXIOMS.md 等)を直接 read_file してしまった場合でも、直後の PreInvocation フックが会話ログからそれを検知して「次回からは kb-search manual で 1 コール取得せよ」と事後矯正メッセージを自動注入するため、同じ会話内で無駄な丸読みを繰り返す連鎖を防ぐことができます。


MCP 2026-07-28仕様の9大変更と移行の勘所

AI エージェントの「内部ルール遵守」を自動注入と Rust 検問で固めたら、次に直面するのが 「AI エージェントと外部ツール(MCP サーバー)との通信プロトコル」 の大転換です。

Anthropic が提唱し、現在では Claude Code、Antigravity、VS Code、Cursor などあらゆる AI エージェントの標準プラグイン規格となった Model Context Protocol(MCP)は、『MCP 2026-07-28 仕様』 においてアーキテクチャの根幹を覆す大型刷新が行われました。

Zenn の解説記事(MCP 2026-07-28 仕様入門、既存サーバーの移行点は主要変更9項目) および Model Context Protocol 公式仕様書 に基づき、開発者が必ず押さえておくべき 主要変更 9 項目 を体系的に整理します。

質問するおじさん

MCP サーバーなら去年作ったものがそのまま動いていますよ。今回の『2026-07-28 仕様』って、単なるマイナーアップデートではないんですか?

解説ナビゲーター

いいえ、今回はこれまでの常識がひっくり返るレベルの破壊的変更(Breaking Changes)が含まれています!特に一番大きいのが、これまで接続時に必須だった initialize ハンドシェイクと Mcp-Session-Id ヘッダーの完全廃止(ステートレスコア化) です。

ハンドシェイクとMcp-Session-Id廃止の衝撃

旧仕様(2024-11-05 や 2025 年前半の Streamable HTTP 仕様など)では、クライアントと MCP サーバーが接続する際、最初に initialize リクエストと notifications/initialized 通知をやり取りして状態の交渉を行い、サーバー側が発行した Mcp-Session-Id HTTP ヘッダー を使ってセッション状態を維持する「ステートフル(状態保持)前提」の設計になっていました。

しかし、このステートフル設計は、クラウド上で MCP サーバーを複数台にオートスケールさせたり、サーバーレス環境(AWS Lambda や Cloudflare Workers 等)やロードバランサーの背後に配置したりする際に、「同じセッション ID のリクエストを同じサーバーインスタンスへ振り分け続けなければならない(Sticky Session 問題)」 という最大の障壁(ボトルネック)を生んでいました。

そこで『MCP 2026-07-28 仕様』では、以下の抜本的な変更が断行されました。

⚡ 変更項目①:ステートレスコア化(initialize & Mcp-Session-Id の完全廃止)
  • initialize / notifications/initialized ハンドシェイクの廃止 : ツールを呼び出す前に毎回 1.5 往復の初期化ハンドシェイクを行う手順が廃止され、クライアントは 1 手目から直接 tools/call や tools/list 等の JSON-RPC リクエストを送信できるようになりました。

  • Mcp-Session-Id HTTP ヘッダーの完全廃止 : HTTP トランスポート層でセッション ID を持ち回るヘッダー仕様が削除され、コアプロトコルが完全な ステートレス(状態非保持) となりました。

  • _meta フィールドへの文脈移行 : プロトコルバージョンやクライアント情報、トレース用のコンテキストなど、リクエストに付随させるメタデータはすべて JSON-RPC ペイロード内の _meta フィールド に格納してリクエスト単位で自己完結させる方式へ統一されました。

  • ロードバランサー背後での自由な水平スケール : どのワーカーインスタンスがリクエストを受け取っても即座に処理できるため、インフラの強靱性(レジリエンス)とスループットが劇的に向上します。

旧仕様と『MCP 2026-07-28 仕様』における通信フローの違いを比較すると、どれほど無駄な往復が削ぎ落とされたかが一目瞭然です。

MCP通信アーキテクチャの比較:旧ステートフル仕様 vs 2026-07-28 ステートレス仕様
旧仕様 vs 2026-07-28仕様
Mcp-Session-Id必須
旧MCP仕様(ステートフル・セッション維持型)
  • 初期化の往復が必須 :通信開始時に initialize と notifications/initialized のハンドシェイクが必須でレイテンシが発生

  • セッション状態のメモリ保持 :サーバー側が Mcp-Session-Id ごとに接続状態を保持する必要があり、再起動で切断エラーが多発

  • スケールアウトが困難 :ロードバランサーでスティッキーセッションを設定しないと別ノードへ飛んだ際にエラーになる

1手目から即時実行
MCP 2026-07-28仕様(ステートレスコア型)
  • ハンドシェイク完全廃止 :事前交渉なしでいきなり tools/call 等を実行でき、コールドスタート時の応答が高速化

  • _meta による自己完結 :Mcp-Session-Id を全廃し、必要なメタ情報は _meta フィールドへ格納してリクエスト単体で完結

  • 状態持ち回りは MRTR で処理 :複数往復が必要な場合のみ requestState 不透明ハンドルをクライアント側が持ち回る

接続確立のハンドシェイクとセッション固定(Sticky Session)を撤廃し、クラウドネイティブな水平スケールを実現

事前探索とヘッダールーティングとキャッシュの導入

「でも、initialize ハンドシェイクがなくなったら、クライアントはどうやってサーバーが対応している機能(ケーパビリティ)を事前に知るのか?」「毎回 tools/list を叩いたら通信量が増えるのでは?」という疑問が当然湧いてきます。

これを鮮やかに解決するのが、変更項目②〜④の 「server/discover 新設」「HTTP ヘッダー高速ルーティング」「ttlMs キャッシュ」 の 3 点セットです。

🚀 変更項目②〜④:探索・ルーティング・キャッシュの高速化3大機構
  1. 変更項目②:事前ケーパビリティ確認 server/discover の新設 : 従来のステートフルな initialize に代わり、サーバーの対応機能やプロトコルバージョン、拡張機能の有無をステートレスに問い合わせる専用の server/discover メソッドが新設されました。また、静的なメタデータ(/.well-known/mcp.json 等の Server Card)と組み合わせることで、接続確立なしでサーバー仕様を即座に把握できます。

  2. 変更項目③:HTTP ヘッダー Mcp-Method / Mcp-Name による高速ルーティング : HTTP リクエスト送信時、JSON-RPC のメソッド名(例:Mcp-Method: tools/call)および対象のツール・リソース名(例:Mcp-Name: search_database)を HTTP ヘッダーに明記することが標準化されました。これにより、API ゲートウェイやリバースプロキシ(Envoy や Cloudflare 等)が 巨大な JSON ボディをわざわざパース(構文解析)しなくても、ヘッダーを見るだけで数マイクロ秒で適切なバックエンドや権限制御へルーティング・遮断 できるようになります。

  3. 変更項目④:tools/list 等への ttlMs キャッシュ有効期限の導入 : ステートレス化に伴ってクライアントが毎回 tools/list や resources/list を再取得する無駄を防ぐため、一覧取得レスポンスに ttlMs(Time-To-Live ミリ秒) フィールドが導入されました。クライアントは指定された ttlMs の期間内であればローカルキャッシュのツール定義を再利用できるため、不要なネットワーク往復とトークン消費を大幅に削減できます。

特に 変更項目③の Mcp-Method / Mcp-Name ヘッダー は、企業や大規模環境での管理体制(ガバナンス)において絶大な威力を発揮します。たとえば「読み取り系の search_database は高速なリードレプリカ群へ流し、破壊的変更を行う delete_record は WAF(Web Application Firewall)やゲートウェイ層で特定の認可トークンがない限り JSON パース前に即時ブロックする」といった制御が、既存の HTTP インフラのままで実現できるからです。

状態持ち回りMRTRと非同期TasksとUI拡張

続いて、ステートレスコアの上で「複数ターンのやり取り」や「長時間の重い処理」「リッチな画面表示」をどう実現するかという、変更項目⑤・⑥を見ていきましょう。

🔄 変更項目⑤・⑥:MRTR(状態持ち回り)と拡張機能フレームワーク(Tasks / MCP Apps)
  • 変更項目⑤:マルチラウンドトリップリクエスト(MRTR:requestState 不透明ハンドル) : 1 回のツール呼び出しの中で、サーバー側からクライアントへ追加の確認を求めたり複数ステップの対話を行ったりする場合、サーバー側でセッションを記憶するのではなく、暗号化・署名された不透明な状態データ requestState(Opaque Handle) をレスポンスに含めてクライアントへ返します。クライアントが次のリクエストでその requestState をそのまま送り返すことで、サーバー側を完全ステートレスに保ったまま複数往復のステートマシンを実現 します。

  • 変更項目⑥:拡張機能フレームワーク(Tasks 非同期処理 / MCP Apps インタラクティブ UI) : コア仕様を極限までスリム化する一方、数分〜数十分かかる重いジョブ(大規模ビルドや深層リサーチ等)をバックグラウンド実行・ポーリング・進捗通知する Tasks 拡張 と、チャット画面内にインタラクティブな HTML ウィジェットやダッシュボードを描画する MCP Apps 拡張 が公式の拡張フレームワークとして体系化されました。

実際に『MCP 2026-07-28 仕様』で HTTP ヘッダー(Mcp-Method / Mcp-Name)と _meta フィールド、および MRTR の requestState ハンドルを用いて通信する際の具体的な HTTP リクエスト・レスポンス構造を示すと、以下のようになります。

POST /mcp HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
Mcp-Method: tools/call
Mcp-Name: deploy_production

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "tools/call",
  "params": {
    "name": "deploy_production",
    "arguments": {
      "target": "production-cluster-a"
    },
    "requestState": "eyJzdGVwIjoyLCJhdXRoX2NoZWNrIjoicGFzc2VkIn0.sig_hmac256",
    "_meta": {
      "protocolVersion": "2026-07-28",
      "clientInfo": { "name": "antigravity-agent", "version": "2.4.0" },
      "traceparent": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"
    }
  }
}

このように、Mcp-Session-Id ヘッダーが完全に消え、HTTP ヘッダーの Mcp-Method と Mcp-Name だけでゲートウェイが対象ツールを即座に識別でき、複数往復の文脈も requestState と _meta にすべてカプセル化されていることが分かります。

質問するおじさん

なるほど!サーバー側のメモリに状態を溜め込むのではなく、requestState という「引換券(不透明ハンドル)」をクライアント側に持たせて往復させるから、サーバーが途中で再起動しても別サーバーに切り替わっても処理が途切れないんですね!

解説ナビゲーター

その通りです!Web 開発における JWT(JSON Web Token)やステートレス継続と同じ思想ですね。これならクラウド上で何百台にスケールさせてもセッション消失事故が起きません。

コア3機能の非推奨化とJSON Schema完全移行

そして、既存の MCP サーバー実装者がコード修正を迫られるのが、変更項目⑧・⑨の 「コア 3 機能の Deprecated(非推奨)化」 と 「JSON Schema 2020-12 への完全移行」 です(変更項目⑦のセキュリティ・OAuth 2.1 については次章で詳しく掘り下げます)。

⚠️ 変更項目⑧・⑨:Roots / Sampling / Logging の非推奨化と JSON Schema 2020-12 移行
  • 変更項目⑧:Roots / Sampling / Logging のコアからの Deprecated 化(12 か月猶予) : これまでコア仕様に含まれていたクライアント側のディレクトリ境界通知(Roots)、サーバーからクライアント側 LLM を逆呼び出しする機能(Sampling)、およびプロトコル独自のログ送信(Logging)の 3 機能が、コア仕様から非推奨(Deprecated)となり、廃止まで 12 か月の移行猶予期間 に入りました。これらは標準的な OpenTelemetry によるログ基盤や、MRTR・拡張機能フレームワークへと役割が整理されます。

  • 変更項目⑨:JSON Schema 2020-12 への完全移行 : ツールの入力パラメータ定義(inputSchema)等で使用される JSON Schema のバージョンが、従来の Draft-07 等との混在状態を脱し、JSON Schema 2020-12(https://json-schema.org/draft/2020-12/schema)へ完全統一 されました。prefixItems や新形式の定義ブロック($defs キーワード)の厳格な検証が行われるため、古い Draft-07 固有の記法(配列型の items タプル指定や旧 definitions 記法等)を残している MCP サーバーはスキーマ検証エラーとなります。

ここで、『MCP 2026-07-28 仕様』の主要変更 9 項目と、開発者が取るべき具体的な移行アクションを一覧表にまとめます。

項番 『MCP 2026-07-28 仕様』の変更項目 旧仕様での挙動・課題 新仕様(2026-07-28)での仕様と移行対応
① ステートレスコア化 initialize 往復と Mcp-Session-Id ヘッダーによる状態維持が必須 ハンドシェイクと Mcp-Session-Id を完全廃止。文脈は _meta へ格納し 1 手目から即時実行
② server/discover 新設 initialize 応答でしかサーバーの対応機能を確認できない ステートレスな server/discover メソッドと Server Card で事前ケーパビリティを高速取得
③ HTTP ヘッダールーティング ゲートウェイが JSON ボディをパースしないとメソッドが判別不能 Mcp-Method / Mcp-Name ヘッダー付与により、ボディ非パースで超高速ルーティング・認可遮断
④ ttlMs キャッシュ導入 ステートレス化すると毎回 tools/list の再取得が必要になる レスポンスに ttlMs を付与し、有効期限内はクライアント側でツール一覧をローカルキャッシュ
⑤ MRTR(状態持ち回り) 複数往復の対話状態をサーバー側メモリで保持(スケール障害の元) サーバーが requestState(不透明ハンドル) を返し、クライアントが次回リクエストで送り返す
⑥ 拡張機能フレームワーク 長時間処理や UI 描画を無理やり標準ツール呼び出しに詰め込む 非同期ジョブ用の Tasks とインタラクティブ画面用の MCP Apps を公式拡張として分離
⑦ OAuth 2.1 / RFC 9207 / CIMD 独自 API キー環境変数渡しや甘い認可検証によるトークン奪取リスク OAuth 2.1 / OIDC 準拠、RFC 9207 iss 検証必須化、CIMD によるクライアント識別強化
⑧ コア 3 機能の Deprecated 化 Roots / Sampling / Logging がコア仕様を複雑化させていた コアから 非推奨化(12 か月猶予)。拡張機能や OpenTelemetry 等の標準基盤へ段階的に移行
⑨ JSON Schema 2020-12 移行 Draft-07 と 2020-12 が混在しバリデータごとに挙動が不一致 JSON Schema 2020-12 へ完全統一(旧 definitions 等を 2020-12 準拠へ書き換え必須)

OAuth 2.1必須化と物理セキュリティキーによる防衛

9 つの変更項目の中で、セキュリティとアカウント保護の観点から絶対に軽視できないのが 変更項目⑦「OAuth 2.1 / OIDC・RFC 9207 iss 検証必須化・CIMD 認可強化」 です。

AI エージェントがローカルのファイルを読むだけでなく、MCP を通じてクラウドのデータベース、GitHub リポジトリ、本番サーバー、さらには ChatGPT Wallet や Google Wallet×Gemini のような決済・資産管理基盤 にまで直接アクセスするようになった結果、MCP サーバーの認証・認可を狙った攻撃リスクが急増しています。

RFC 9207の発行者検証とCIMDによる認可強化

『MCP 2026-07-28 仕様』では、リモート MCP サーバーにおける認可の枠組み(スキーム)として OAuth 2.1 および OpenID Connect(OIDC) の厳格な実装が求められ、特に以下の 2 つの標準仕様への対応が強化されました。

🛡️ 変更項目⑦:OAuth 2.1 / RFC 9207 `iss` 検証必須化 / CIMD の技術要点
  1. IETF RFC 9207(OAuth 2.0 Authorization Server Issuer Identification) による iss パラメータ検証の必須化 : 複数の MCP サーバーや複数の認可サーバー(IdP)を接続する環境において、悪意ある MCP サーバーが認可レスポンスをすり替えて別の正規サーバー向けの認可コードを盗み出す 「Mix-Up 攻撃(認可サーバー混同攻撃)」 を防ぐため、認可レスポンスに含まれる iss(Issuer:発行者識別子)パラメータをクライアント側で厳密に照合することが必須化されました。

  2. CIMD(Client ID Metadata Document)による動的なクライアント信頼確立 : 多様な AI エージェント(デスクトップアプリ、CLI、Web IDE)が事前の手動クライアント登録なしに安全に OAuth 認可を行えるよう、client_id 自体を HTTPS のメタデータドキュメント URL とし、そこに公開鍵(JWKS)や許可されたリダイレクト URI を記載して検証する CIMD の仕組みが整備されました。

  3. PKCE(Proof Key for Code Exchange)の全面強制とスコープ最小化 : 認可コード横取り攻撃を防ぐ PKCE(S256)が全フローで必須となり、MCP サーバーが要求できる権限スコープも最小権限の原則(Least Privilege)に基づいて厳密に分離されます。

権限昇格と暴走を防ぐ親アカウントのFIDO2物理ロック

ここで、第 1 章で確認した 「AI エージェントは 83.3% の確率で手順書を無視する」 という事実と、この 「MCP の OAuth 2.1 認可」 を掛け合わせて考えてみてください。

もし、AI エージェントが動いている PC やブラウザ上で、Google アカウント、GitHub アカウント、AWS / Cloudflare、あるいは OAuth 認可サーバー(IdP)の親セッションが「パスワードだけ」や「SMS 認証」「スマホアプリのワンタップ承認」で無防備にログインされたままになっていたらどうなるでしょうか。

質問するおじさん

あっ……!もし AI エージェントが悪意あるプロンプトインジェクションを踏んだり、手順書を無視して暴走したりしたときに、ブラウザや CLI 経由で勝手に OAuth の「許可(Authorize)」ボタンを押されたり、強い権限のトークンを発行されたりしたら一発でアウトじゃないですか!

解説ナビゲーター

まさにそこが最大の急所なんです。AI がソフトウェア上でどれだけ賢く動いても、「人間の指で物理的なハードウェアキーに触れない限り、絶対に親アカウントの認可や特権昇格が通らない」 という物理的な絶縁壁(エアギャップ)を作っておく必要があります。

Claude Codeの通信遮断と7つの情報送信経路の検証記事 でも解説した通り、AI エージェントに高い自律性を与える環境では、ソフトウェア上の設定やプロンプトの「お願い」だけで特権を守ることはできません。

MCP の OAuth 2.1 認可元となる Google / GitHub / Microsoft アカウントや、本番インフラの SSH 鍵・特権セッションには、必ず FIDO2 / WebAuthn 対応の物理セキュリティキー(YubiKey) を設定し、「人間が物理的に金属端子へタッチしない限り、新規の強い OAuth スコープ認可や管理者ログインは 100% 拒否される」構成にしておくことが最も確実な防衛策となります。

Yubico YubiKey 5C NFC(USB-C / NFC対応 FIDO2物理セキュリティキー)

Yubico YubiKey 5C NFC(USB-C / NFC対応 FIDO2物理セキュリティキー)

特に USB Type-C と NFC の両方に対応した『YubiKey 5C NFC』であれば、Mac や Windows での開発時はポートへ挿したまま「タッチ操作のみ」で FIDO2 認証や SSH 鍵署名(ed25519-sk)を完結させ、スマホ側でのアカウント保護も 1 本で統一できるため、自律型 AI エージェントを運用する開発者の必須装備として強く推奨します。


既存MCPサーバーとAI環境を移行する実践チェックリスト

ここまでの一次計測データと『MCP 2026-07-28 仕様』の全体像を踏まえ、既存の AI エージェント開発環境(CLAUDE.md / GEMINI.md)および自作・社内 MCP サーバーを最新アーキテクチャへアップデートするための実践手順をまとめます。

段階的マイグレーションの5ステップと互換性テスト

移行作業で手戻りを起こさないためには、以下の 5 ステップの順序で進めるのが最も安全です。

手順書自動注入&MCP 2026-07-28仕様への5段階移行ロードマップ
STEP 1
外部手順書の『読んでね』指示を全廃し3層分離+Hooks注入へ置換

CLAUDE.md / GEMINI.md 内の「作業前に docs/xxx.md を読むこと」という間接参照を洗い出し、常時守らせるコア原則は初期コンテキストへ直貼りし、特定作業時の手順は PreToolUse / PostToolUse フック(ephemeralMessage)または 1 コール CLI で直接コンテキストへ注入する。

STEP 2
保存時・デプロイ時の決定論的ゲート(Rust / Linter)を設置

文字数制限、禁止語句、リンク切れ、スキーマ違反など「100% 守らせたい規則」をプロンプトからプログラム(Rust バイナリや Pre-commit / デプロイゲート)へ移し、違反時は exit 1 で物理的に処理を止める。

STEP 3
MCPサーバーのステートレス化と server/discover・ttlMs 実装

サーバー側の initialize セッション管理と Mcp-Session-Id ヘッダー依存を撤去し、_meta フィールド受け取り、server/discover エンドポイント、および tools/list への ttlMs 付与を実装する。複数往復が必要な処理のみ MRTR(requestState)へ切り替える。

STEP 4
JSON Schema 2020-12 統一と Deprecated 3機能の分離

全ツールの inputSchema を JSON Schema 2020-12 準拠へ更新し、非推奨化された Roots / Sampling / Logging に依存している箇所を 12 か月の猶予期間内に拡張機能(Tasks / MCP Apps)や標準ログ基盤へ移行する。

STEP 5
Mcp-Method ヘッダー検証・OAuth 2.1 (RFC 9207) 必須化・物理キー保護

クライアント・ゲートウェイ間で Mcp-Method / Mcp-Name ヘッダーによる高速ルーティングを有効化し、OAuth 2.1 の iss 検証(RFC 9207)と CIMD を適用した上で、親アカウントを YubiKey(FIDO2)で物理ロックする。

プロンプト依存の排除(STEP 1〜2)とMCPプロトコル刷新(STEP 3〜5)を段階的に完遂する手順

特に STEP 3 のステートレス化においては、既存の MCP サーバーコード内でグローバル変数やインメモリ Map に sessionId をキーとして状態を保存している箇所がないかを重点的に grep 検索してください。ここが残っていると、複数ワーカーで稼働させた瞬間に状態不整合バグが発生します。

手戻りコストとトークン浪費を防ぐ定量効果の比較

では、「手順書を別ファイルで置いて AI に読ませる+旧ステートフル MCP」という従来運用から、「自動注入+Rust 物理検問+MCP 2026-07-28 ステートレス仕様」へ移行すると、日々の開発効率とトークン消費はどれほど改善するのでしょうか。

Zenn の一次計測データ(手順書無視率 83.3%)と当ラボの実測値(gemini-gate 検問 4ms、SQLite 1 コール抽出 2.31ms)、および 1 日あたり 10 回の定型タスク・デプロイを回した場合のモデルケース試算(推論)を比較します。

📊 従来運用 vs 最新強制ハーネス&MCP 2026-07-28運用の定量比較(実測+推論試算)
  • 外部手順書の遵守率(一次実測 vs 当ラボ実測) : 従来の「ファイルを読ませる指示」では遵守率が 16.7%(12 回中 2 回) に留まり 83.3% が無視 されますが、Hooks 自動注入と Rust 検問ゲートを組み合わせた当ラボの方式では、違反状態でのデプロイ通過は 0件(遵守強制率 100%) となります。

  • 手順違反による手戻り修正時間の削減効果(推論) : 推論ですが、AI が手順書を無視して誤った書式や古い仕様でコードを書き上げた場合、人間の目視指摘と AI の再修正・再ビルドに 1 回あたり平均 約 10〜15 分(往復トークンで 約 5 万〜15 万トークン)の手戻りが発生します。12 回のタスクで 10 回(83.3%)無視される環境では累計 約 100〜150 分 が手戻りで消えますが、保存時 4 ミリ秒の Rust 検問と事前自動注入を導入すれば、この手戻り時間を 実質数秒〜数分(95% 以上削減:推論) に圧縮できます。

  • MCP 接続・ツール一覧取得の通信オーバーヘッド削減(推論) : 推論ですが、ステートレスコア化による initialize ハンドシェイクの廃止と ttlMs による tools/list キャッシュ、および Mcp-Method ヘッダーによるボディ非パースルーティングを組み合わせることで、高頻度な短命ツール呼び出しにおける通信往復回数とゲートウェイ処理遅延を 約 30〜50% 削減 することが可能です。

これを数式モデルとして整理すると、1 タスクあたりの総消費トークン TtotalT_{\text{total}} は、初期コンテキストとツール往復の基本消費 TbaseT_{\text{base}} に加え、手順書未読確率 Pignore=0.833P_{\text{ignore}} = 0.833 によって発生する手戻り再実行コスト TretryT_{\text{retry}} の期待値の和として表されます。

E[Ttotal]=Tbase+Pignore×TretryE[T_{\text{total}}] = T_{\text{base}} + P_{\text{ignore}} \times T_{\text{retry}}

従来の運用では Pignore=0.833P_{\text{ignore}} = 0.833 という極めて高い確率で手戻り TretryT_{\text{retry}}(全体やり直し)が乗算されるため、初期プロンプトを少し削ったところで全体のトークン消費は激しいままです。これに対し、自動注入で Pignore→0P_{\text{ignore}} \to 0 に近づけ、万が一の際もローカル 4 ミリ秒の Rust 検問(API トークン消費ゼロ)で即座にブロックする設計こそが、最も合理的なトークン節約術となります。


まとめ:性善説のプロンプトから決定論的ハーネスへ

本記事で検証・解説した「AI が手順書を読まない問題の解決策」と「MCP 2026-07-28 仕様への移行ポイント」を最後に振り返ります。

📝 本記事の要点まとめ(チェックリスト)
  • AI は外部手順書を 83.3% 無視する(一次計測の事実) : Claude Code による約 3 か月間の自律 AI 組織運用において、外部手順書を配置・指定しても実際に読まれたのは 12 回中わずか 2 回(16.7%) でした。「ファイルを読ませる」設計自体を捨てる必要があります。

  • 解決策は「直接貼る(自動注入)」+「プログラムで強制停止させる」 : ルールを 3 層分離し、必要な手順や関連情報は Hooks(ephemeralMessage)や SQLite 1 コール抽出(2.31ms)で コンテキストへ直接貼り付け、書式や整合性の違反は Pure Rust 検問所(gemini-gate:約 4ms)で物理的に停止 させることで無事故運用が実現します。

  • 『MCP 2026-07-28 仕様』で initialize と Mcp-Session-Id が完全廃止 : コアが完全ステートレス化され、メタデータは _meta へ移行しました。事前確認は server/discover、高速ルーティングは Mcp-Method / Mcp-Name ヘッダー、一覧キャッシュは ttlMs、状態持ち回りは MRTR(requestState)で処理します。

  • 非同期 Tasks・MCP Apps の拡張化とコア 3 機能の Deprecated 化 : 重い処理や UI は拡張フレームワークへ切り出され、Roots / Sampling / Logging は非推奨(12 か月猶予)となり、スキーマは JSON Schema 2020-12 へ完全統一されました。

  • OAuth 2.1(RFC 9207 iss 検証・CIMD)と物理セキュリティキーの併用 : MCP の認可強化に加え、AI エージェントが稼働する環境の親アカウントは YubiKey 等の FIDO2 物理キー でハードウェアロックし、意図しない権限昇格を物理的に遮断してください。

AI エージェント開発の成否を分けるのは、プロンプトで「お願い」を重ねる文章力ではなく、「AI がサボれない自動注入パイプライン」と「違反をミリ秒単位で弾く決定論的プログラム」、そして「ステートレスで堅牢な MCP 2026-07-28 通信基盤」というエンジニアリングの枠組み(スキーム)を組めるかどうか にかかっています。

最後に、読者の皆さまがご自身のプロジェクト環境(Claude Code / Antigravity / VS Code 等)や既存 MCP サーバーを、本記事の「手順書自動注入+強制検問+MCP 2026-07-28 準拠」へ一括診断・改修するためのコピペ用プロンプトをご用意しました。

※複雑な設定ファイルやプロトコル仕様の誤判定を防ぐため、必ず『Gemini 4 Carbon』や『Gemini 4 Argon』、『Claude Opus / Sonnet』等の最上位推論モデルを選択した上で、以下のプロンプトを貼り付けて実行してください。

📋 コピペ用:自環境の『手順書未読対策&MCP 2026-07-28移行』を最上位AIに診断・設計させるプロンプト
あなたは私の熟練した開発パートナー兼アーキテクトです。
まず以下の技術検証記事URL(またはその設計原則)を踏まえ、当プロジェクトの現在のルールファイル(CLAUDE.md / GEMINI.md / docs等)、Hooks設定、およびMCPサーバー実装を調査してください。

【参照記事】
https://lab.chihouzakki.com/blog/review/ai-agent-ignores-manual-83pct-mcp-20260728-migration-guide/

【診断・実装してほしい3つの課題】
1. 外部手順書の「任意参照(Pull型)」の排除:
   CLAUDE.md や GEMINI.md の中で「作業前に docs/〇〇.md を読むこと」のようにAIの自主的なファイル読み込みに頼っている箇所(83.3%の確率で無視される原因)をすべて洗い出してください。その上で、①常時必須のコア原則、②Hooks(PreToolUse / PostToolUse等)で作業時に自動注入するガイド、③プログラム側(Linter / Rust / スクリプト)で違反時に exit 1 で強制停止させるゲート、の3つへ再設計する計画を立ててください。
2. MCP 2026-07-28 仕様への移行チェック(MCPサーバーコードがある場合):
   - 廃止された `initialize` / `notifications/initialized` ハンドシェイクや `Mcp-Session-Id` ヘッダーへの依存が残っていないか(ステートレスコア化& `_meta` 移行)
   - `server/discover`、`Mcp-Method` / `Mcp-Name` ヘッダー、`tools/list` の `ttlMs` キャッシュ、複数往復時の MRTR(`requestState`)への対応方針
   - Deprecated化された `Roots` / `Sampling` / `Logging` の有無と、`JSON Schema 2020-12` への完全準拠
   - OAuth 2.1 / RFC 9207(`iss` 検証必須化)/ CIMD のセキュリティ要件
3. いきなりファイルを書き換えず、まず現状の課題リストと段階的な実装計画(Implementation Plan)を日本語で提示し、私の合意を得てから改修に着手してください。

「AI がマニュアルを読んでくれない!」と嘆く日々を終わらせ、自動注入と強制ゲートでストレスのない自律開発環境をぜひ構築してみてください!

ぐっすり眠る猫