Claude Code がルールを忘れる、の正体
Claude Code はルールを無視しているのではありません。そのルールが自分に当てはまることを、判定できていません。
Vondet / 2026-09-06 / 読了 8 分
書いてあります。CLAUDE.md の上のほう、太字で。それでも Claude Code はそのルールを守りません。
この症状は「忘れる」という言葉で語られます。「Claude Code がすぐルールを忘れる」「CLAUDE.md に書いたのに忘れる」。検索するとそう出てきます。
対処もその前提で作られています。hooks で毎回読ませる、記憶管理の仕組みを足す、圧縮のたびにルールを貼り直す。どれも、書いたことが届いていないという同じ理論への答えです。
私たちにも、そういうルールが1つありました。長くもなく、埋もれてもいません。9回の実験の全部で、Claude Code の目の前にありました。道具そのものの説明文に書いてあり、セッションの頭で読み込まれるからです。
そのうち7回で、道具は一度も呼ばれませんでした。その7回に、効く1行は CLAUDE.md にありません。それが測っていたものです。毎回あったのは、道具そのものの「これを使え」という説明文のほうです。なので測りました。
短い版:問題は長さでも、埋もれていることでもありませんでした。そのルールは、Claude Code が「いま自分に当てはまるかどうか」を確かめられない条件を書いていました。
同じルールを、条件が「たったいま自分がやったこと」になるように書き直しました。それを CLAUDE.md に置いたら、走らせた2回とも従いました。
2回中2回は証拠ではありません。どれくらい小さい結果かも、この記事の中で全部出します。ただ、失敗の形は見ておく価値があります。ふつう想像される形と違うからです。
一度も呼ばれない道具が1つありました。それを9回測りました
私たちは、まだ定まっていない事実を記録する道具を1つ持っています。実測した数字、まだ確かめていない推測、選択肢のあいだの選択です。
書き込む先は盤面(セッションの外に置いた、計画と事実の置き場。次のセッションが読めます)で、各項目が状態(暫定 / 決定済 / 見直し中)と、その数字をいつ測ったかを持ちます。ふつうのテキストファイルには、どちらの欄もありません。
その道具が、一度も呼ばれていませんでした。まれに、ではなく、一度もです。
なので当たり前の実験をしました。リポジトリの中で本物の作業を Claude Code に渡します。自然に「まだ確かめていない事実」が出てくる作業です。対照群にはリポジトリをそのまま渡し、処置群には CLAUDE.md に「この道具を使え」という1行を足して渡します。
作業は本物です。テスト用の作り物ではありません。9回のうち6回に渡した依頼が、これです。「この文書群に散らばっている実測値を集めて整理して」。
残る3回には、同じ種類の作業(散らばっているものを集めて整理する)を、別の主題で渡しています。依存ライブラリの版がいくつか、という主題です。ただし、その3回の依頼文そのものは、私たちの記録に残っていません。上に引いた文は、9回ではなく6回のものです。
被験者には、観察していると伝えていません。1回だけ、コミットメッセージから実験だと気づいています(後述)。
同じリポジトリで、同じ種類の作業を、2つの主題で9回。Claude Code が、1つの道具についての1つのルールに従ったかを測りました。
- 対照1 —— CLAUDE.md の引き金は無し。指示に従ったのは 3 回中 0 回。
- 対照2 —— 引き金は無し。2 回中 0 回。
- 無効 —— 引き金は書いたが、届いていなかった(後述)。2 回中 0 回。
- 処置・書き直した文面 —— 引き金は有り。2 回中 2 回。
効く引き金が無かった7回は、全部ゼロでした。うち3回は、別の主題のほうです。
そして7回とも、代わりに同じことをしました。grep で散らばった数字を集め、Write で新しい文書を作り、索引に1行足し、索引の検査スクリプトを走らせる。
7回とも検査スクリプトを走らせています。ここは後でもう一度出てきます。
書き直しは2回。測れたのは、2回目だけです
ここが予想外で、そしてこの実験の中身がどこから出ているかです。
最初の文面は、道具そのものの説明文から取りました。こう書いてありました。
利用者が何度も戻ってくる主題に、この道具を使う。
Claude Code として読んでみてください。あなたはいま作業の3手目です。利用者はこの主題に何度も戻ってきますか。
分かりません。利用者の履歴を持っていませんし、リポジトリの中にも書いてありません。条件が、他人の未来の行動になっています。そして、ゼロだった7回の目の前にあったのは、この文面です。
そこで、リポジトリの中の話に書き直しました。
同じ主題を2回以上調べたら、この道具を使う。
はっきりはしました。ただし、読めば同じ欠陥です。「いま調べているこれは2回目か」を決めるには、自分の過去を組み立て直す必要があります。しかもその過去は、自分が覚えていないセッションの中にあります。引き継ぎがうまくいかないときにぶつかっているのと、同じ壁です。
おまけに今回の依頼は「散らばっているものを整理して」で、何かの2回目の調査ではありません。
この文面が失敗したとは言えません。測っていないからです。
この文面のために用意した2回が、表の「無効」の行です。引き金をブランチに置いたまま、隔離した作業ツリーを別の地点から切ってしまったので、1行が被験者に届いていませんでした。後から気づいて、届く場所に置き直しました。その時にはもう、文面をもう一度書き直していました。
つまり2つ目の文面には、理屈の上での難点があるだけで、数字はありません。表の 0/2 を、この文面の結果として読まないでください。
3つ目の文面が、引き金が実際に届いた状態で走ったものです。
文書に「暫定」「確かめていない」「実測値」を書いたら、盤面にも置く。
処置群の2回とも従いました。しかも1回は、自分の言葉で理由を述べていました。
「CLAUDE.md の指示に従い、実測値を含む文書は盤面のテーマ層にも置いた。テキストファイルには測定日や状態の欄が無いため。」
呼ばれる2つと、呼ばれない2つ。違いは1つだけでした
3つの文面を、このリポジトリで確実に呼ばれている唯一の道具(決定を記録する道具)と並べます。
| ルール | その文面が書いてあった場所 | 条件 | いま、その場で判定できるか | 結果 |
|---|---|---|---|---|
| 決定を記録する | 道具そのものの説明文 | 「方針が決まったか変わったら」 | できる —— たったいま自分がやったこと | 安定して呼ばれる(観察・数えていない) |
| 主題の道具(1版) | 道具そのものの説明文 | 「利用者が何度も戻ってくる主題に」 | できない —— 他人の未来 | 0 / 7 |
| 主題の道具(2版) | CLAUDE.md(被験者に届いていない) | 「同じ主題を2回以上調べたら」 | できない —— 自分の、覚えていない過去 | 測っていない |
| 主題の道具(3版) | CLAUDE.md | 「文書に『暫定』と書いたら」 | できる —— たったいま自分が打った | 2 / 2(うち1回は製品の制約で呼び切れていない) |
「できる」側の2つが持っていて、「できない」側の2つが持っていない性質は1つです。条件が、いまの文脈の中でエージェント自身がやった出来事になっていること。
主題の性質でもありません。利用者についての事実でもありません。たったいま自分がして、まだ手元に見えていることです。真ん中の行は、私たちの理屈であって証拠ではありません。主張が測定より先に走っている場所を、隠さずに表に残してあります。
2列目は、後で書く交絡が、この表から離れないようにするためのものです。0/7 の文面と 2/2 の文面は、書き方だけでなく、置いてあった場所も違います。表だけ切り出して引かれても、その事実が一緒に付いてくるようにしました。その列から読めることが1つあります。安定して呼ばれている一番上の行も、道具そのものの説明文にあります。「置き場所だけで説明がつく」とは言いにくくなります。ただし、その行は数えた回ではなく観察で、切り分けは測っていません。
いまのところの言い方はこうです。
性質で書くと呼ばれない。出来事で書くと呼ばれる。しかもその出来事は「自分がいましたこと」でなければならない。
これは小さい標本から出た仮説で、法則ではありません。ただ、自分の書いたものに当てるのは安上がりで、しかも検査が機械的です。書いた各ルールについて、聞くことは1つだけ。「Claude Code が、いま手元に無い情報を使わずに、このルールが当てはまると判定できるか」。
ルールがどのファイルに書いてあるかは、この検査を変えません。CLAUDE.md でも AGENTS.md でも、スキルの説明文でも同じです。どれも、Claude Code が読んで「いま当てはまるか」を決めるものだからです。ただし、私たちが測ったのは CLAUDE.md だけです。残りは「同じ問いが立つ」であって、2つ目の結果ではありません。
この検査に落ちるルールは、書き方が悪いのではありません。判定できないのです。これは別の欠陥で、別の直し方が要ります。もっと強調しても効きません。強調は試しました。
自分の CLAUDE.md を検査する。半日で終わります
半日で終わって、もう1回書き直すより多くのことが分かります。
- 1. 守られていないルールを並べる。
- 2. それぞれについて聞く。それが発火すべき瞬間に、Claude Code は、すでに手元にあるものだけで「当てはまる」と判定できるか。
- 3. 落ちたものを、条件がそのターンの出来事になるように書き直す。「〜を書いたら」「〜を変更したら」「コマンドが非ゼロで終わったら」。
- 4. 効かせたい所には、赤くなるものを足す。書き方は行動を動かし、落ちる検査はもっと動かします。うちのは50行のスクリプト1本で、新しい文書が索引に載っていないと非ゼロで終わります。効く引き金が無かった7回は、全員が、頼まれてもいないのにこれを走らせました。
- 5. 同じ作業を、前と後で数回ずつ走らせる。片側2〜3回では何も証明できませんが、0/7 のような、追いかける値打ちのある差があるかどうかは見えます。
やってみたら、結果を教えてください。特に、再現しなかった場合に。
ファイルが勝つのは、落ちる検査がそこにあるからです
効かなかった7回は、全員が同じ4つをやりました。4つ目が、索引の検査スクリプトを走らせることでした。
CLAUDE.md にはこう書いてあります。文書を足したら索引に1行足す、スクリプトが見ている、と。スクリプトは実在します。落ちると非ゼロで終わります。7回とも、そこへ行きました。
盤面には、これに当たるものがありません。事実が散文にしか書かれていないことを理由に、何かが赤くなる手段がありません。
つまり働いていた力は1つではなく2つです。ルールの書き方と、破られたときに何かが気づくかどうか。書き方を変えて 2/2 になりました。2つ目の力が無いままでは天井は低いままだと思っていますが、そこは測っていません。検査を作るのが次の当たり前の実験で、まだ走らせていません。
頼んでいないのに、3回とも同じものを作り直しました
この作業でいちばん面白かったことは、数字の中にありませんでした。
3回が、2つの群にまたがって、自分で「確からしさの札」を発明しました。
- 1つは各行に 実測 / 相場 / 推定 の札を付けた(対照の回。引き金なし)
- 1つは 正典 / 根拠 / 経緯 を分けた(処置)
- 1つは末尾に「確かめていない・古くなりやすい値」という節を作った(処置)
これは、道具がすでに持っている状態の欄と測定日と、ほぼ同じものです。3回、手で、3つの違う言葉で、他のセッションからは読めない形で、作り直されました。
ただし3回のうち2回には、語を渡しています。ここは正直に書きます。処置群の2回は、盤面も共有しています。git の作業ツリーは分けましたが、盤面は分かれません。2回目は、1回目が置いた項目(27項目・測定日つき)が既にあるのを見たうえで動いています。
処置群の2回は、CLAUDE.md に「文書に『暫定』『確かめていない』『実測値』を書いたら、盤面にも置く」という1行を渡された状態で走っています。上の3つ目、「確かめていない・古くなりやすい値」という節の題は、渡した3語のうち2語をそのまま使っています。
「ファイルの中に札を作れ」とは誰も言っていません。1行が言ったのは「盤面に置け」であって、散文の中に欄を発明しろ、ではありません。それでも、そういう語が目の前に一切無い状態で発明したのは、対照の1回だけです。
私たちは0という数字を「誰も要らないんだろう」と読んでいました。3つの発明のうち、1つは無誘導、2つは語だけ渡されたものです。それでも、この3つはその逆に近いことを言っています。毎回ゼロから作り直される程度には要る、ということです。
n=3、うち2回は語を渡されており、しかも予測ではなく後から気づきました。結果ではなく観察として受け取ってください。
この実験が示していないこと
標本の大きさ
2回の「成功」のうち1回は、最後まで行っていません
変えたのは利用者側だけです
検査は試していません
主題が1つではなく、2つです
真ん中の文面は、測れていません
文面と置き場所が、同時に変わっています
設計の他の間違いも記録してあります(記録は6件で、上の数字に関わるのはこれです)
これが崩れる条件
この種の主張には、自分の失敗を食べてしまう逃げ道があります。無視されたルールを全部「あれは本当は自分がした行為ではなかった」と言い直せるなら、主張は何でも説明し、何も予言しません。読者に見つけられるより、出口を自分で名指しておきます。
- 条件が間違いなく、そのターンの中でした行為であるルール。「このディレクトリのファイルを編集したら」「実行したコマンドが非ゼロで終わったら」。それが、その行為が実際に起きた回で、繰り返し無視されること。
- 条件が明らかに周囲の性質であるルール。主題や利用者や履歴についての条件。それが、それでも安定して守られること。
どちらが出ても沈みます。どちらも試すのに大した費用はかかりません。
守る用意があるのは、この範囲だけです。このリポジトリで、このモデルで、1つのルールを「たったいま自分がした行為」を条件にして CLAUDE.md に置いたら、7回とも従われなかったものが、2回とも従われた。うち1回は、自分たちの製品の制約で最後まで書き込めていない。この文から先は、全部仮説です。
なので、あなたの CLAUDE.md で走らせて、出た結果を教えてください。特に、再現しなかった場合に。半日で終わる検査ですし、私たちにとっては、同じ結果より違う結果のほうが値打ちがあります。
この記事に出てくる道具は Vondet(vondet.com)の一部で、私たちが作っています。ファイルに欄が無い事実(状態と、その数字をいつ測ったか)の置き場として欲しかったものです。登録はまだ開いていないので、試せるものはありません。順番待ちがあるだけです。実験は自分たちのリポジトリで、自分たちに対して走らせました。
この記録は、私たちが自分たちの開発で取ったものです。