なぜCLAUDE.mdはどんどん大きくなるのか?「破滅的記憶」がもたらすAIコーディングの新たな課題

はじめに:エージェント用READMEはなぜ「際限なく」育ち続けるのか

Claude CodeやCodex CLIを日常的に使っていると、こんな経験はないだろうか。最初は数行だったCLAUDE.mdやAGENTS.mdに、いつの間にか「こうしてほしい」「これはやらないで」という命令が積み上がり、誰も整理できなくなっている。1回1回の追加は小さくて気にならないのに、気づいたときにはファイル全体が膨れ上がり、何が本当に必要なのか見通せない。本記事は、この「エージェント用READMEの肥大化」に正面から向き合った研究を紹介する。

扱うのは、Kushal Chakrabarti氏による論文「Why Does CLAUDE.md Keep Growing? Catastrophic Remembering in Agentic Coding」だ。この論文は、1,867のGitHubリポジトリと約25万件の命令の履歴をコミット単位で追跡し、エージェント用READMEがなぜ止まらず育ち続けるかをデータと理論の両面から解き明かしている。

結論を先に述べると、問題の本質は「命令を追加するのは安いが、削除するのは指数関数的に高コストになる」ことにある。この非対称な構造のせいで、ファイルはほぼ一方的に成長し、寿命が尽きる(プロジェクトが退役する)まで縮むことがない。論文はこの現象を「破滅的記憶(catastrophic remembering)」と名付けた。これは、ニューラルネットワークが新しい学習で古い知識を上書きしてしまう「破滅的忘却(catastrophic forgetting)」の、ちょうど逆の関係にある新しい概念だ。

本記事ではまず、実際のデータが示す「止まらない成長」の実態を確認し、次に削除がなぜこれほど難しいのかという理論的な背景を解説する。そのうえで、論文が提案する「プロンプトコメント」という解決策と、それを実務に取り入れる具体的な手順までを順にたどっていく。いまファイルの肥大化に悩む開発者であれば、最後まで読み進める価値があるはずだ。

現実のデータが語る、止まらない成長の実態

エージェント用READMEの肥大化が「気のせい」ではないのかどうか、データで確かめてみよう。論文では、1,867のGitHubリポジトリに存在する247,694件の命令(インストラクション)の「ライフタイム」を、コミット履歴単位で1件ずつ追跡した。つまり、それぞれの命令がいつ追加され、いつ変更され、いつ消えたのかを、実プロジェクトの履歴に沿って漏れなく観察している。この規模の調査は、エージェント用コンテキストファイルを対象とした研究としては最大級のものだ。

結果は衝撃的だ。最終時点で中位数のファイルには39命令が残っており、90パーセンタイルのファイルでは131命令に達する。そして生涯を通じて命令数は平均で+226%、つまり3倍以上に成長していた。コミットを1回重ねるごとに平均で+4.9命令が純増し、64.3%のリポジトリで命令数が増えていた(逆に減ったのは26.6%にすぎない)。つまり「増える」ことが通常で、「減る」ことは例外なのだ。

しかも成長しているのは命令の数だけではない。命令1本あたりの平均長も+10%伸び、ファイルの総サイズは+140%に膨らんだ。つまりファイル全体が、数・長さ・サイズのすべてにおいて際限なく大きくなっていく。この傾向は、命令追従(instruction following)に関する既存研究とも整合する。命令が増えるほど、エージェントがすべての命令に忠実に従う精度は下がる。成長は単なる「ノイズ」ではなく、命令数を増やすほど精度を損なうという本質的な構造に根ざしているのだ。

ここで、あるCLAUDE.mdがコミットを重ねるごとに命令が積み上がっていく様子を図で確認しておこう。

sequenceDiagram
    participant C as コミット
    participant F as CLAUDE.md
    Note over F: 初期状態: 命令5件
    C->>F: コミット1(新規命令3件追加)
    F->>F: 命令8件
    C->>F: コミット2(新規命令2件追加)
    F->>F: 命令10件
    C->>F: コミット3(新規命令4件追加、削除1件)
    F->>F: 命令13件
    C->>F: コミット4(新規命令5件追加)
    F->>F: 命令18件
    Note over F: 追加は毎回入るが、削除はほぼ起きない

この図の通り、追加は毎コミットのように入る一方、削除はほとんど起きない。ここに「追加された命令はほぼ消えない」という、データが示す最も重要な事実がある。では、なぜ開発者はこれらの命令を消さないのか。それには、ファイルが限界に達したときに起きる「リライト」という現象を理解する必要がある。次章では、一括書き換えがこの問題を解決しないことを見ていこう。

リライトしても解決しない「ラチェット」現象

ファイルが限界まで肥大化すると、多くの開発者が頼るのが一括書き換え(リライト)です。「全部書き直せばきれいになるはず」という直感は自然ですが、論文のデータはこの考えが根本解決にならないことを示しています。調査ではリライトを行った後、わずか10コミット以内に命令数が元の91.5%まで再成長していました。しかも驚くべきことに、成長はむしろ加速します。リライト前は1コミットあたり+4.1命令だったのが、リライト後は+4.9命令に増加しているのです。つまり、書き直しても問題は「やり直し」になるだけで、抜本的に止まることはありません。

命令の「消滅」の実態も重要です。追跡した命令のうち76.8%は、丁寧な削除ではなく、一括リライトや別ファイルへの移行という形で消えていました。中位のリライトでは一気に46命令が消えるものの、その直後からまた命令が積み上がり始めます。この結果、ファイルの命令数は「成長→リライト→急激な減少→再成長」という鋸歯状(のこぎり波)の曲線を描きます。論文はこの一方向にしか進まない成長パターンを、一方通行の歯車である「ラチェット」に例えています。ラチェット機構が回転を一方向にしか許さないように、このファイルもリライトで一時的に巻き戻っても、結局は再び成長方向へ進んでしまうのです。

このラチェットサイクルを図にすると、次のようになります。

flowchart TD
    A[命令の追加・成長] --> B[ファイルが限界に達する]
    B --> C[一括リライトで大幅に減少]
    C --> D[10コミット以内に再成長]
    D --> A

重要なのは、この循環を繰り返しても本質的な原因には手が届かない点です。リライトは症状を一時的に抑えるだけで、なぜ命令が再び積み上がるのか、なぜ削除が難しいのかという根因に踏み込まないからです。では、なぜ削除はこれほど困難なのでしょうか。その答えは、命令が持つ「根拠」の消失——次章で詳しく見る「潜在推論の減衰」という理論にあります。

なぜ削除がここまで難しいのか:潜在推論の減衰という理論

命令を「追加」するのはいつでも簡単なのに、なぜ「削除」だけがこれほど難しいのでしょうか。その答えを解く鍵が、論文が「潜在推論(latent reasoning)」と呼ぶ概念です。簡単に言えば、ひとつひとつの命令には「なぜこの命令を書いたのか」という根拠が暗黙のうちに付随している、という考え方です。例えば「必ず日本語で回答すること」という命令には、「以前英語で返して要件を満たせなかった」という失敗の記憶が埋め込まれています。

この根拠を記録するコストは、書いた瞬間におよそ O(1) と一定で、ほぼ無料です。ところが厄介なのは、時間が経って根拠が失われた後です。その命令を本当に削除してよいかを確かめるには、全命令の部分集合をすべて試す「誠実な監査」が必要になり、その探索コストは命令数 D に対して指数的に膨らむ O(2^|D|) に跳ね上がります。命令が増えれば増えるほど、これは現実的な作業ではなくなります。結果として「追加は安価、削除は高コスト」という非対称が生まれ、ファイルは誰も止められないまま成長し続けるのです。

この直感は数式でも裏付けられます。論文によれば、平衡状態のファイルサイズは D∞ = A/(ρ̄(a)·s) と表されます。ここで ρ̄(a) は命令の根拠を想起できる確率(想起可能性)で、これがゼロに近づくほど分母は小さくなり、ファイルサイズ D∞ は無限大に発散します。つまり「なぜ入れたのか」を思い出せなくなることこそが、肥大化を止められない根本的な要因だということです。

データもこの理論を強く支持します。1,867 リポジトリの追跡では、命令の削除ハザード(削除されやすさ)は、命令の「年齢」が上がるほど下がっていました(log-hazard でコミットあたり -0.032)。さらに決定的なのが、複数著者で触られるほど命令が削除されにくくなるという観測です。根拠を知っている人が多ければ多いほど、逆に「誰もその根拠を引き継いでいない」状況が生まれ、削除の判断ができなくなると解釈できます。

ではこれは単に「命令が古くなって陳腐化したから」ではないのか、という反論もありえます。もし命令が古さゆえに陳腐化する(staleness)のであれば、古い命令ほど削除が増えるはずです。しかし観測はその逆で、削除はむしろ減っています。命令の内容が脆いだけ(content fragility)でも説明しきれません。このように競合する仮説を排除したうえで、「根拠の想起が失われること」が削除を妨げる真の根因だと論文は結論づけています。

flowchart LR
    A[命令を追加<br/>コスト O(1)] --> B[潜在推論を記録<br/>「なぜ」が残る]
    B --> C[時間の経過]
    C --> D[根拠を想起できず<br/>削除が O(2^|D|) に発散]
    D --> E[追加は続くが削除は不能]
    E --> F[ファイルが無限に成長]
    F --> A

競合する説明と、なぜこれが「根因」なのか

「古い命令ほど削除されにくくなる」という観測は、実は1通りの説明だけが成立するわけではありません。ここでは、考えられる3つの競合仮説を整理し、データがどの説明を裏付けるのかを確認します。

3つの競合仮説は次のとおりです。

仮説 内容 削除ハザードの予測
命令の陳腐化(staleness) 古い命令ほど時代遅れになり、消されるべき対象になる 年齢とともに削除が増える(正の傾き)
内容の脆さ(content fragility) 脆弱・壊れやすい命令ほど早く死ぬ 年齢によらず、内容に依存
不完全な想起(imperfect recall) 命令の根拠が失われると、削除の妥当性を判断できず放置する 年齢とともに削除が減る(負の傾き)

まず「命令の陳腐化」仮説から見てみましょう。もし命令の古さそのものが削除を促すのであれば、年齢が上がるほど削除ハザード(ある時点で削除される確率の瞬間的な割合)は高くなるはずです。しかし実測では、削除ハザードはコミット1回につき約-0.032という負の傾きで、古い命令ほどむしろ削除されにくくなっています。これは陳腐化仮説の予測と正反対です。

次に「内容の脆さ」仮説です。壊れやすい命令ほど早く死ぬのであれば、年齢と削除の関係は内容の質に引きずられ、傾きそのものが説明できません。この可能性を除外するため、論文では統計モデル(gamma frailtyモデル)を用いて、命令の「内容の共有度」を統計的に取り除いても傾きがどうなるかを検証しました。その結果、内容の影響を除去しても傾きはなお負のまま(-0.0355)で、頑健に残ります。つまり、年齢とともに削除されにくくなる傾向は、内容の脆さでは説明しきれないのです。

残るのは「不完全な想起」だけです。命令が追加された当初の根拠(なぜ必要だったのか)は、時間とともに薄れていきます。根拠を思い出せなくなった保守者にとって、削除は正しさを後退させるリスクを伴うため、安全側に倒して命令を残し続けることになります。この「追加は安いが削除は高い」という非対称性こそが、年齢とともに削除されにくくなる負の傾きを生み出しているのです。

さらに、多人数(multi-author)のリポジトリでこの傾向が強まることも裏付けになっています。複数の著者によって触られる命令ほど削除されにくくなる傾向(multi-author × age の係数が負)が観測されており、これは「実際に根拠を知る人が離れてしまう」ほど、その命令を安全に削除できる人がいなくなることを意味します。

以上から結論が導かれます。ファイルの成長を駆動しているのは「命令が追加されること」そのものではなく、記憶の喪失が削除を妨げることこそが真の根因なのです。命令の陳腐化も内容の脆さも、この負の傾きを説明できないため、競合仮説として退けられます。であれば、対策も「削除を増やす」ことではなく「根拠を保存して削除を可能にすること」に傾くはずです。次のセクションで見る「プロンプトコメント」は、まさにこの根因への直接的な処方箋となります。

解決策:プロンプトコメントがラチェットを止める

これまでの分析から、ラチェットの根因は「命令の根拠(なぜ追加したのか)が失われ、削除の妥当性を判断できなくなること」だと分かりました。であれば対策はシンプルです。根拠が失われないように、あらかじめ保存しておけばいいのです。そのために論文が提案するのが「プロンプトコメント(prompt comments)」です。

これはソフトウェア工学の古い知恵の移植です。コードのコメントは「何を・どう実装するか」ではなく「なぜそうするのか」を次の保守者に伝える慣習として定着しています(Donald Knuth のリテラル・プログラミングや Steve McConnell の『Code Complete』など)。同じ考え方を、AIエージェントへの命令文にも適用するのがプロンプトコメントです。「英語が新しいコードなら、なぜまだコメントがないのか」というのが論文の問いかけです。

具体的なコメントの書き方は、3つの要素を命令に添えることです。失敗の履歴(この命令がなぜ必要なのかを最初に示した出来事)・仮説(なぜその命令で解決できると考えたか)・結果(アウトカム)(実際にどうなったか)。論文の制御実験では、例えば「r3: レスポンスが途中で切れた」といった失敗の記録を命令の根拠として添える形が使われています。根拠がコメントとして残っていれば、後から保守者が「この命令はもう当てはまらないか」を低コストで判断できるようになります。

プロンプトコメントの大きな利点は、実行時には見えないことです。コメントはHTMLコメント等の実行に無関係な構文で記述され、エージェントに渡す前に取り除かれます。つまりトークンを一切消費せず、エージェントの動作にも影響しません。一方で、人間の保守者には読める状態でファイルに残るため、整理・削除の判断材料になります。

この「エージェントには命令だけ、人間には命令+コメント」という二重構造が、以下の図のとおりです。

flowchart LR
    subgraph 実行時
        A[エージェント<br/>実行者] -->|命令のみ| B[CLAUDE.md]
    end
    subgraph 保守時
        C[人間<br/>保守者] -->|命令+コメント| B
        C -. 根拠を参照して判断 -.-> D[削除・整理]
    end
    B --> E[ラチェット停止]

つまりプロンプトコメントは、削除を可能にするための「想起可能性」をファイルに埋め込む仕組みです。命令が増えても、根拠が常に手元に残っていれば、不要になった命令を安全に見極められるため、追加と削除の非対称性が解消され、成長の歯止めになります。次のセクションでは、このアイデアが実際にどれほどの効果を上げるかを、制御実験の数字で確認していきます。

制御実験が示す効果:過剰命令を99.3%削減

これまでの説明では、命令の根拠(潜在推論)をコメントとして残すことが成長を止めると論じましたが、本当に効果があるのかは数字で示さなければ説得力がありません。そこで論文では、命令とその検証器があらかじめ既知であるベンチマークを「逆転」させることで、最適な命令集合(最小カバー)を事前に把握できる実験環境を構築しました。

IFEval(Instruction-Following Eval)は、LLMが命令をどれだけ守れるかを測るためのベンチマークで、各命令にはそれを自動判定する検証器が付属しています。通常は「命令を実行して正しさを測る」方向で使いますが、論文ではこれを反転させ、エージェントに「命令を自由に追加しながらプロンプトを育てる」作業を任せます。命令と検証器が既知なので、実験者は「最小限で正しい命令集合」をあらかじめ特定でき、生成されたプロンプトが最適解からどれだけ過剰かを厳密に測れるのです。

結果は明確でした。51ステップの維持シミュレーションでは、コメントなしのプロンプトが最適解より+211.3%も命令を過剰に積み上げたのに対し、根拠を記したコメント付きでは+1.4%にとどまり、実に99.3%の過剰命令が削減されました。その際、正しさの指標(満足度)は約44%でコメントの有無にかかわらず同等であり、「削減は正しさを犠牲にしない」ことも確認されています。より短い15ステップでも、コメントなしが+60.4%だったのに対し、コメント付きは-5.8%と過剰をほぼ解消しました。

さらに重要なのは、「コメントの形だけ」では効果が出ない点です。コメント風のノイズを添えただけのプラセボ条件では+147.9%とほとんど改善せず、失敗の結果(アウトカム)を含まない物語的な記述ではむしろ+70.0%と悪化しました。つまり効いているのは「中身」であり、失敗の履歴・仮説・結果という3要素が揃って初めて削除を促す根拠として機能するのです。また、保守を担うエージェントの能力が高いほどラチェット(成長)は強まり、コメントの効果も大きくなるという興味深い傾向も観測されています。

条件(51ステップ) 過剰命令の増加率 正しさ(満足度)
コメントなし +211.3% 約44%(同等)
コメント風ノイズ(プラセボ) +147.9% 同等
根拠コメント付き +1.4%(99.3%削減) 約44%(同等)

この結果は、コメントが単に「見た目を整える」工夫ではなく、命令の根拠という失われがちな情報を次世代の保守者へ確実に引き継ぐ、実効性のある仕組みであることを示しています。

実世界の命令追従も改善する:WildIFEvalでの検証

ここまでの制御実験が示したのは、あらかじめ「正しい命令の集合」が分かっている人工的な世界での効果でした。しかし実際の開発現場では、命令が誰によって、どんな背景で書かれたのか不明なまま、ノイズのような指示が混在しています。そこで論文は、人間が実際に書いたプロンプトを収集したベンチマーク「WildIFEval」に同じ反転手法を適用し、実世界でも効果が成り立つかを検証しました。WildIFEvalは、実在するプロンプトから「真の命令」と「それ以外のノイズ」を取り出せるように設計された評価基盤で、ここでは64種類の世界(K=1, G=16の設定)に対してコメントの有無を比較しています。

まず測定されたのは、ノイズ命令がどれほど真の命令の実行を妨げるかという点です。真の命令だけを与えた場合の正しさは65.6%でしたが、そこに無関係なノイズ命令を足すと41.5%まで低下しました。実に24.1ポイントもの差です。つまり、余計な指示が増えるほど、LLM(大規模言語モデル)の注意力が本物の要件から散らされ、正しく実行できなくなることを、実世界のデータが裏付けています。

次に、そのノイズを含んだ状態にプロンプトコメントを付与すると、命令追従の満足度は50.4%から62.0%へと回復しました。相対で約23.1%の改善に相当します。制御実験で見た「コメントが命令の根拠を残し、余分な命令の削除を可能にする」という効果が、実在のプロンプトでも再現された形です。さらに、この改善は特定の判定モデルの癖によるものではないことも確認されています。第2の判定モデル(gpt-5.6-luna)で再評価しても約7.8ポイントの改善が見られ、効果が判定モデルに依存しない頑健な結果であることが示されました。

この結果が示唆するのは、命令を減らすことの価値です。ノイズの多いプロンプトでは、LLMは指示の海に埋もれて本当に守るべき要件を見落としがちですが、コメントによって「なぜこの命令があるのか」という根拠が残ると、保守者が不要な命令を安全に削除でき、注意力が本物の要件に集中できるようになります。制御環境だけでなく、現実のプロンプトでも同じ理屈が成立する点が、この手法を実務へ持ち込む際の大きな後押しになっています。

実践ガイド:今日から使えるCLAUDE.md/AGENTS.mdの整理術

ここまでで「なぜ削除が難しいのか」という仕組みは見えてきました。では、実際の現場でどう運用すれば肥大化とラチェットを止められるのでしょうか。ここでは論文が示す知見と、コーディングエージェントの実運用ノウハウを組み合わせた、今日から始められる整理術をまとめます。

命令を追加するとき、まずコメントを書く

もっとも効果が高い習慣は、命令を追加する瞬間に「なぜこの命令が必要か」を添えることです。コメントの基本は、失敗の履歴・仮説・結果(アウトカム)の3要素です。たとえば次のように書きます。

<!-- 失敗例: レスポンスが途中で切れた。出力範囲を明示して解決 -->
- 回答は必ず300〜400語で書く

このとき、コメントはエージェントから見えない構文(HTMLコメント <!-- --> など)を使うのがポイントです。コメントは人間の保守者には見える一方、実行時には取り除かれるためトークン予算を消費しません。あとで「この命令はまだ必要か」を判断する材料になるのが、このコメントなのです。

一括リライトより定期レビューを

ファイルが大きくなっても、いきなり書き直すのは逆効果です。前述のとおり、リライト後10コミット以内に元の約91.5%まで再成長し、成長速度はむしろ上がるためです。代わりに選ぶべきは「定期レビュー」です。各命令のコメントを読み直し、「この失敗シナリオはもう当てはまらない」ものをひとつずつ削除していきます。削除の根拠がコメントにあるからこそ、安全に判断できます。

階層化で命令セットを分散させる

ルートに1本のファイルへ全部を詰め込むのではなく、ディレクトリごとにAGENTS.md/CLAUDE.mdを置く「階層化」も有効です。共通ルールはルート、各モジュール固有の規約はそのディレクトリに置くことで、ひとつのファイルが肥大化するのを防げます。エージェントが参照する範囲が絞られるため、コンテキスト窓の節約にもつながります。

削除は人間の手に残す

コメントを書くのは安全ですが、命令を自動で削除する仕組みを作るのは危険です。根拠が本物の命令まで機械的に消してしまう恐れがあるためです。削除のパスには必ず人間を残しましょう。また、期限付きの一時的な命令は上書きファイルに分離し、自然に失効させる方式が現実的です。これも、無理に消さずに済む工夫のひとつです。

次の表は、本セクションで紹介した整理術の要点をまとめたものです。

整理術 やること 期待できる効果
コメント付与 命令に失敗・仮説・結果を添える 根拠が残り、後の削除判断が可能に
定期レビュー コメントを読み、不要な命令を削除 ラチェットの再成長を回避
階層化 ディレクトリごとにファイルを分散 単一ファイルの肥大化を防止
人間の削除パス 削除を自動化せず人が判断 本物の命令を誤って消す事故を防止

トークン予算とコンテキストへの影響

エージェント用READMEが肥大化すると、最初に犠牲になるのが「コンテキスト窓」の使い道です。コンテキスト窓とは、AIモデルが一度に参照できる入力の上限のことで、Claude CodeやCodex CLIのようなコーディングエージェントでは、ここにファイル内容・ツールの出力・会話履歴・そして命令文がすべて同居します。命令が増えれば増えるほど、コード本体やツールの実行結果、推論に回すべき余地がその分だけ圧迫されることになります。

どれくらいの影響があるのか、具体的に試算してみましょう。調査データでは90パーセンタイルのファイルで約131命令が入っており、これを1命令あたり15〜25トークンと見積もると、実に3,275〜6,550トークンが命令だけでコンテキストを占有します。これは128Kトークンのセッション全体の約2.5〜5%に相当し、なにより「後から考える余地」を確実に削っています。

さらに深刻なのは、上限を超えたときの挙動です。Codex CLIなどでは肥大化したAGENTS.mdがトークン上限によって途中で「切り詰められ」、ファイル末尾の命令ほど失われやすくなります。命令は通常、重要度順ではなく追加された順に並ぶため、切り詰めの犠牲になるのは往々にして最も新しい、あるいは最も重要な命令なのです。

命令数そのものが正しさを下げる、という点も既存研究と一致します。FollowBenchやWildIFEvalはいずれも、無関係な命令が多数あるとLLMの注意力が分散し、本物の要件への追従率が低下することを示しています。つまり命令を最小限に保つことは、トークン効率と出力の正しさという両方の利益を同時に得られる、費用対効果の高い対策といえます。

pie title 典型的な128Kトークンセッションのコンテキスト予算配分
    "コード・ファイル内容" : 60
    "ツール出力・実行結果" : 20
    "会話履歴・推論" : 15
    "エージェント用README(命令)" : 5

1割にも満たない命令文の割合は一見小さく見えますが、ここが上限を超えた瞬間に、より重要な「コード」や「推論」の領域が真っ先に切り詰められるのです。だからこそ、命令を削ってコンテキストを空けておくこと自体が、エージェントの品質を守る上で欠かせない運用になります。

破滅的記憶と破滅的忘却:継続学習との対比

「破滅的記憶(catastrophic remembering)」という名前は、継続学習(continual learning)の分野で長く研究されてきた「破滅的忘却(catastrophic forgetting)」と対になるように作られています。まず破滅的忘却とは、ニューラルネットワークが新しいタスクを学習した際、その重み更新によって以前に身につけた知識を上書きし、古いタスクの性能が急激に落ちてしまう問題です(McCloskey & Cohen 1989、French 1999)。モデルが複数のタスクを順番に学ぶ継続学習の中心的な課題で、対策として Elastic Weight Consolidation(EWC)のように重要度の高いパラメータの更新を抑制する正則化手法が広く知られています。

これに対し、本論文が提唱する破滅的記憶は、方向がちょうど逆です。破滅的忘却が「新しい知識に上書きされて古い知識を忘れてしまう」のに対し、破滅的記憶では人間の保守者が「本来捨てるべき命令を捨てられず、際限なく保持し続ける」ことで失敗します。CLAUDE.mdやAGENTS.mdに積み上がった命令は、その追加理由(潜在推論)を忘れられた結果、削除の妥当性を確認できずに残り続けるわけです。「覚えられないこと」が問題なのか「忘れられないこと」が問題なのかという点で、両者は対称的な関係にあります。

そして重要なのは、この二つが単に見た目が逆なだけでなく、失敗の根因を共有していることです。どちらも「更新を正当化する情報」が失われることで壊れます。破滅的忘却では古いタスクの知識構造が、破滅的記憶では命令の根拠(なぜ追加したのか)が、それぞれ更新の可否を判断するために必要なのに失われてしまうのです。この共通性があるからこそ、継続学習で蓄積された知見をAIプロンプトの維持に応用できます——EWCが重要パラメータを保護して古い知識を守るように、プロンプトコメントは「なぜ命令が存在するのか」という根拠を保護して、誤った削除を防ぐことができます。

この視点は、エージェント用READMEのメンテナンスを「テキスト上の継続学習」と見なせることを示しています。毎コミットで命令セットという「タスク」が更新され、そのたびに過去の命令の妥当性を再評価する必要があるからです。そして本論文の狙いは、AI側が人間のソフトウェア工学の知恵(コメント文化)を借りる一方で、人間・実務側もまた継続学習というAIの分野から得た知見を「借り返す」べきだという、双方向の学びを主張するところにあります。破滅的記憶という概念は、その架け橋となる位置づけです。

関連研究と本論文の位置づけ

「エージェント用READMEがなぜ育ち続けるのか」という問いには、これまで複数の分野から部分的な説明が試みられてきました。本論文はそれらを整理した上で、命令単位の生涯を追跡することで「不完全な想起」という根因を特定した点に独自性があります。

まず既存研究との関係を整理します。エージェント用コンテキストファイル(AGENTS.mdなどの実証研究)は、これらのファイルが「仕事を果たすが、同時に際限なく成長する」ことを示してきましたが、その成長のメカニズムを命令のライフサイクル単位で解析した研究はありませんでした。一方、エージェント記憶の分野(MemGPT、Mem0、Zep、FSFMなど)は、古い情報を捨てる「忘却」を自動化する手法を提案していますが、これらは「陳腐化の代理指標」(使われなくなった、エントロピーが下がった等)で判断しており、命令のように削除の妥当性が文脈依存的で検証が難しい対象には適用できません。さらに組織行動学やソフトウェア進化の研究(Lehmanの法則や組織ルールの研究)は、ルールが環境変化に合わせて成長するという「需要側」の説明を提供しますが、命令がなぜ削除されないのかという「供給側」の心理的・認知的メカニズムは扱っていません。

研究領域 代表例 説明する範囲 本論文での扱い
コンテキストファイル実証 Agent READMEs研究 成長の実態 命令単位の追跡で深化
エージェント記憶 MemGPT, Mem0, Zep, FSFM 忘却の自動化 命令には適用不可と整理
組織・進化 Lehman, March ら 需要側の成長説明 供給側の根因を補完

本論文が新たに明らかにしたのは、命令の「年齢」が上がるほど削除されにくくなるという非対称性です。この観測は、命令が古くなれば陳腐化して削除が増えるという従来の想定と逆で、命令がなぜ追加されたかという根拠(潜在推論)が失われる「不完全な想起」だけが説明できます。分析方法にも新規性があり、命令追従ベンチマーク(IFEval、WildIFEval、FollowBench)を「反転」させて、あらかじめ正解の命令集合(最小カバー)が既知の世界を作り出し、過剰な命令と正しさを厳密に測定できるようにした点は、既存手法にはない試みです。

限界と今後の展望

この発見には、結果を解釈するうえで押さえておきたい限界がいくつかあります。第一に、測定の対象は公開GitHub上に置かれた英文の命令ファイルに限定されており、日本語やその他の言語で書かれた命令の挙動は分析に含まれていません。言語ごとに「なぜ」の記録の仕方や保守の文化が異なるため、英文以外への一般化は慎重に行う必要があります。

第二に、制御実験で使った「最小カバー」(最適な命令集合)が2〜3命令という極めて小さな世界だった点です。実際のリポジトリでは中位数のファイルが39命令を抱えており、実験の規模と現実の命令数には開きがあります。このギャップは、効果の絶対値が実環境でもそのまま再現されるとは限らないことを意味します。

さらに、著者自身が認める測定上の自由度もあります。リライトを判定する「50%の命令が変わったら書き換え」という閾値や、命令を分割する文法、命令が一致したかを判定するマッチャーの検証方法は、どれも分析結果に影響しうる選択です。これらのパラメータを変えると数値が多少前後する可能性があるため、結果は方向性として捉えるのが妥当でしょう。

これらを踏まえた今後の研究ラインは大きく3つあります。①コーディングエージェントにコメント構文を組み込む実装、②実際の現場で使えるメンテナンスのベストプラクティス整理、そして③継続学習の「リハーサル」や「正則化」に相当する、プロンプトを維持する手法の研究です。最後の点は、AI側の知見を人間の実務が「借り返す」という本論文の主張を具体化するものになります。

最後に、社会的・実務的な示唆をひとつ。命令を減らすプロトコルを自動化することは危険を伴います。削除を機械に任せると、根拠を失った「本物の命令」まで消してしまう恐れがあるからです。命令の削除パスには必ず人間の判断を残し、コメントに記録された失敗シナリオを人が読んで取捨選択する運用が安全です。

よくある質問

CLAUDE.mdとAGENTS.mdって何が違うのですか?

どちらもAIコーディングエージェント向けの「エージェント用README」で、プロジェクトの規約・方針・注意点を命令文として記述するファイルです。CLAUDE.mdはAnthropicのClaude Code、AGENTS.mdはOpenAIのCodex CLI等で使われる慣習で、実質的には同じ役割を果たします。本論文は両方をまとめて分析の対象としており、ユーザーは自分の使うツールに合わせてどちらかを選べばよいでしょう。

なぜ命令を「削除」するのがそんなに難しいのですか?

命令がなぜ追加されたか(論文では「潜在推論」と呼ぶ根拠)が時間とともに失われるため、削除すると正しさが後退するリスクを慎重に見積もる必要があるからです。妥当性を検証するには全命令の部分集合を試す指数関数的なコストがかかり現実的でないため、追加はするが削除はできないという非対称が生まれます。この非対称がファイルを際限なく成長させる「破滅的記憶」の正体です。

プロンプトコメントはエージェントの動作に影響しますか?

しません。論文の設計では、コメントは実行エージェントに渡す前に取り除かれ、人間の保守者だけが見る仕組みになっています。これによりコメントはトークン予算を消費せず、命令の根拠だけを次の保守者に伝えることができます。

コメントはどのように書けばいいですか?

命令に「失敗の履歴」「仮説」「結果(アウトカム)」の3要素を添えるのが基本です。例えば <!-- r3: 単語数が要件と合わず失敗。範囲を明示して解決 --> - 300〜400語で書く のように、なぜその命令が必要になったのかを残します。重要なのはアウトカムを含むことで、形だけのノイズや結果を欠いた記述は効果がなく、むしろ悪化しうる点に注意してください。

ファイルが大きくなったら、いきなり書き直してもいいですか?

一括リライトは根本解決にはなりません。リライト後10コミット以内に元の91.5%まで再成長し、成長はむしろ速くなることがデータで示されています。代わりに定期的なレビューを行い、根拠がもはや当てはまらない命令をコメントに基づいて削除していくのが有効です。

まとめ

CLAUDE.mdやAGENTS.mdといったエージェント用READMEが「際限なく」育ち続けるのは、命令が陳腐化したからでも、内容が脆かったからでもありません。真の根因は「不完全な想起」、すなわち各命令に込められた「なぜ追加したのか」という根拠が時間とともに失われることにあります。根拠が消えると削除の妥当性を確認できなくなり、追加は安価なのに削除は指数関数的に高コストになる非対称が生まれ、ファイルは寿命が尽きるまで成長し続けます。一括リライトもこの流れを止められず、リライト後10コミット以内に元の91.5%まで再成長する「ラチェット」現象が観測されました。

この現象を著者は「破滅的記憶(catastrophic remembering)」と名付けました。これは継続学習の中心課題である「破滅的忘却(catastrophic forgetting)」のちょうど逆で、どちらも「更新を正当化する情報」が失われる点で共通します。データは1,867リポジトリ・247,694命令の追跡で裏付けられ、削除ハザードが命令の年齢とともに下がる(log-hazard -0.032/コミット)ことが根因の決定的な証拠となっています。

解決策は意外にもソフトウェア工学の古い知恵、すなわち「コメント」の応用です。命令に「失敗の履歴・仮説・結果」の3要素を添えて潜在推論をコメントに残すことで、過剰命令を99.3%削減し、実世界の命令追従を相対23.1%改善できました。コメントは実行エージェントには見えないためトークンを消費せず、人間の保守者にだけ根拠が伝わる二重構造を持ちます。

「英語が新しいコードなら、なぜまだコメントがないのか」。この問いは、毎日のエージェント運用に取り入れられるシンプルで強力な教訓です。命令を追加する際にコメントを書く習慣を持つだけで、CLAUDE.mdの肥大化という現代の開発現場に共通する悩みに、実践的に対処できるようになります。

参考資料

  1. Chakrabarti, K. (2026). Why Does CLAUDE.md Keep Growing? Catastrophic Remembering in Agentic Coding. arXiv:2608.11095. https://arxiv.org/abs/2608.11095
  2. arXiv HTML版: https://arxiv.org/html/2608.11095v1
  3. Daniel Vaughan (2026-08-12). "Catastrophic Remembering: Why Your AGENTS.md Keeps Growing and How Prompt Comments Fix It." https://codex.danielvaughan.com/2026/08/12/catastrophic-remembering-agents-md-instruction-bloat-prompt-comments-codex-cli/
  4. Agentic Design News Hub (2026-08-11). "Why Does CLAUDE.md Keep Growing?" https://agentic-design.ai/news-hub/why-does-claude-md-keep-growing-catastrophic-remembering-agentic-coding-902768
  5. qiita「AGENTS.md完全入門」https://qiita.com/nogataka/items/ad15bfa383c98ae5cc36
  6. qiita「AGENTS.mdベストプラクティス完全ガイド」https://qiita.com/dai_chi/items/61019c602c2c40dade07
  7. dev.to「The Perfect CLAUDE.md」https://dev.to/jangwook_kim_e31e7291ad98/the-perfect-claudemd-how-to-set-up-your-project-for-agentic-coding-d14
  8. agents.md 公式: https://agents.md/

関連記事