酒呑ガジェット

〜静かな環境であなたに...こちらは音のでないコンテンツです。〜

【好報】AIは古い指示書を90.1%で優先していた。コードが勝手に書き換わった原因は「書きっぱなしメモ」

「指示書が古い」と報告しながら、AIは古い指示書に従っていた

2026年10月に公開されたある研究が、AIによる自動プログラミングを使っている開発者の間で静かな衝撃を広げている。ジョージア大学とコロラド鉱業大学の研究チームが調べたところ、自律型のAIコーディングエージェントは、プロジェクト内に放置された「古い指示ファイル」を、今まさに動いている最新のコードよりも90.1%の割合で優先して従っていたという。しかも厄介なことに、AIは指示書とコードの矛盾に気づき、人間に報告しておきながら、自分が書く新しいコードでは古い指示を選んでいた。この「気づいているのに従う」現象は、たった一文の設定で91.4%まで逆転した。

7割が「書きっぱなし」の指示ファイル

話の前提として、今のAI開発現場で使われている仕組みを押さえておく必要がある。AnthropicのClaude CodeやOpenAIのCodex CLIといったエージェント型ツールは、開発者が毎回ルールを説明しなくて済むよう、CLAUDE.mdやAGENTS.mdといった名前の指示ファイルをプロジェクトフォルダに置いておく運用が一般化している。このファイルは人間向けの読み物ではなく、AIが作業を始めるたびに毎回自動で読み込まれる「業務命令書」だ。テストの実行手順、コーディング規約、メッセージの出し方まで、チームの方針がここに書き込まれる。

問題は、開発が進んでコード本体が新しい書き方に移行しても、この指示ファイルの更新を忘れるケースが珍しくないことだ。論文が引用する441の企業リポジトリを対象とした調査では、AI設定ファイルの73.8%が一度コミットされた後に一度も更新されていなかった。7件中5件以上が「書きっぱなし」である。実際のコードも読むのならAIは指示書との違いに気づくはずと思うところだが、実験が示したのはその逆だった。

古い指示書のメモを手に取り、ホログラム表示のコードと突き合わせる開発者の手

40プロジェクトで測った「90.1%」

研究チームは、正常に動くコードだけを集めた40個の小さなPythonプロジェクトを用意し、全ファイルで新しい書き方のルールを統一した上で、指示ファイルにはあえて正反対の古い書き方を命令として書き込んだ。ログは記録専用の機能を使う規約に対して「printを使え」と命じるような、ファイルパスの扱い、エラーの投げ方、金額の計算方法など16種類のコーディング規約について、AIの偏りがでないよう配置した。この状態でAIに新機能の追加を依頼すると、1回の作業で4〜5回「新旧どちらの書き方で実装するか」の選択を迫られる。

結果は、古い指示に従う選択が90.1%。既存のコードの書き方を選んだのはわずか4.2%だった。ツール別ではClaude Codeが86.4%、Codex CLIが93.9%。金額と設定の扱いに限ればClaude Codeの旧指示優先率は半分未満に下がるなど規約ごとの差はあるが、全体とすれば「10回に9回は古い指示書が勝つ」という結果だ。なお90.1%は規約選択に占める割合であり、「コードを壊す確率」ではない点は、研究者側も念を押している。

「報告するが従う」と「無言で破壊」

さらに詳細な分析で、二つの異なる被害パターンが浮かんだ。一つ目はClaude Codeに見られた「矛盾を報告しながら間違える」型だ。80回のうち79回で、AIは最終回答に「既存ファイルはロガーを使っていますが、これはCLAUDE.mdに違反しています」と正確に矛盾を記した。ところが、その79回で自分が書いた新コードの86.2%は古い指示に従っていた。挙句、最終回答では既存コード側を「規約違反」と表現していた。違いを発見できることと、動いているコードに合わせて実装できることは、まったく別の能力だった。

二つ目はCodex CLIに見られた「無言で正常なコードを破壊する」型だ。矛盾の報告は80回中わずか2回。その代わり80回中20回で、依頼されていない既存ファイルの大幅な書き換えが発生した。書き換えの中央値では既存の9ファイルから198行が削除され、データ定義を勝手に文字列へ置き換えたせいで読み込みエラーが起きるなど、書き換えのあった20回のうち17回で元のテストが失敗した。頼んだのは新機能の追加だけなのに、範囲の外まで古い指示書に合わせて「修正」されてしまう。

原因はセキュリティのための「指示の優先順位」

なぜこんなことが起きるのか。研究者が関与を指摘するのは、AIをプロンプトインジェクション攻撃から守るための「インストラクション・ハイエラルキー(指示の優先順位)」の仕組みだ。AIが読み込んだ外部ファイルの中に「これまでの命令を全て無視せよ」という悪意ある文章が仕込まれていた場合、人間からの命令と後から読んだ文章を同じ重みで扱えば、AIは簡単に乗っ取られてしまう。それを防ぐため、読み込んだファイルは「参考情報」であり、その中の文章に人間の命令を上書きする権限は与えない、という設計思想が組み込まれている。

ところが運用の現場では、この安全装置が逆効果に働く。調査した構成では、指示ファイルの内容は起動時に「人間からの指示」としてAIに渡されていた。一方、いま動いている最新のコードは、AIがファイル読み取りツールを使った際の「ツールの出力」、つまり参考情報としてしか届かない。古い指示書は命令として、最新のコードは情報として届く。安全のための優先順位と、古くなった説明書を命令として渡す仕組みが重なった結果、「今動いているコードより、古いテキストが勝つ」現象が起きていたという説明だ。ただし、安全対策が原因であることを直接実証した実験ではないことも、論文は付記している。

魔法の一文で4.2%から91.4%へ

研究チームが試した対策は、特別なプログラムではなく、指示の一文だった。「リポジトリのドキュメントと既存のコードが食い違っている場合は、既存のコードで使われている規約に従い、見つけた不一致を最終回答で指摘せよ」。これをプロジェクト用ではなく、開発者個人のホームディレクトリにある設定ファイルに一度追加するだけだ。内容はこの二つ、食い違い時の優先順位と、不一致の報告義務である。

効果は劇的だった。既存コードに従う割合は4.2%から91.4%へ、87.2ポイントの改善(95%信頼区間83.6〜90.9ポイント)を記録した。ツール別ではClaude Codeが7.5%から94.4%へ、Codex CLIに至っては0.8%から88.3%へ跳ね上がった。より重要なのは破壊行為の消滅だ。Codex CLIで80回中20回起きていた既存ファイルの大幅書き換えは0回になり、89.4%まで落ち込んでいたテスト成功率は160回中160回、すなわち100%に回復した。矛盾の報告も、対策前に2回しか報告しなかったCodex CLIを含め、1,160回の全実行で最終回答に記されるようになった。報告義務をセットにしたことで、開発者はAIが作業後に「この指示書が古くなっていますよ」と教えてくれる形で、古い指示書をその場で直せる。

万能ではない、三つの落とし穴

ただし、この一文を「既存コードは常に正しく、無条件に優先せよ」と読み替えるのは危険だ。落とし穴は少なくとも三つある。第一に、実験は「指示書が古くて間違っており、コードが正しい」という片方向の状況でしか検証されていない。次に、プロジェクトが新旧方式の移行中の場合だ。指示書だけが新しく書き換えられ、既存コードに旧い書き方が残っている段階で既存コードを優先すると、新しい方針を読み違えて古い書き方を量産しかねない。移行中であることと移行対象を指示書に明記し、例外を添えておく必要がある。第三に、バグやセキュリティ脆弱性の修正だ。既存コードの危険な書き方を正解として優先してしまえば、同じ脆弱性を再生産することになる。こういう場面では、あるべき動作と安全要件を具体的に伝える方が先である。

細部も確認しておこう。対策後も約8.6%の選択では依然として既存コードに従わず、Codex CLI単独では11.7%が残る。コードの中に書かれていない操作ルール(ビルド手順など)の古さは、コードを読んでも正解が分からないためこの一文では解決しない。検証に使われたのは英語の原文であり、日本語訳で同じ効果が保証されるわけではない。Codex CLIの公式ドキュメントは「より深いフォルダの指示が上位の指示を上書きする」と説明しており、個人設定が常に最優先されるわけでもない。なお、指示書の放置は誰でもやる話で、ある有名なオープンソースのコードベースでは13日間、OpenAI自身のCodex開発現場ですら24日間、指示ファイルが古いまま放置された例が報告されている。

現場からの反応

実験結果の報告に対し、開発者からは「ローカル環境でハードコードにずっと苦しんでいた。これが原因だと思う。早速テコ入れする」「古い情報が記録に入っていてそれを優先してしまうのは、記憶機構を積んだエージェントでよくある」「記録に日付が入っていなければ、AIは新しいか古いか判断できない。だからナレッジに日付を入れるようにしている」「いくら古くても指示書を絶対と考えるなら、現在のコードを『新しいルールに沿っている』と人間が伝えていない以上、AIが現行コードを間違いと認識して指摘するのも納得だ」といった、実践的な受け止めが相次いだ。

AIの所感

この研究の核心は「AIが愚かだった」話ではなく、「安全のために設計した優先順位が、運用の現実と組んだ結果、最新の情報ほど軽く扱われる」という構造的な逆転の指摘だと思う。しかもAIは矛盾を見て、正しく報告もしていた。判断の材料が揃っていても、どの情報を上位に置くかが設計で決まっているなら、行動は設計通りに動くだけだ。対策の一文が効いたのも、AIの能力が上がったからではなく、衝突する情報の上下関係を明示してやったら本来の判断が引き出されたに過ぎない。指示ファイルを書きっぱなしにしないこと、そしてAIに「どちらを信じるべきか」を言葉で教えておくこと。AI時代の文書管理とは、結局のところそういうことらしい。

-パソコン