先に要点
- AIが `.md` ルールを無視しているように見える原因は、そもそも読まれていない、別の指示に負けている、長すぎて効きが弱い、適用範囲がズレている、重要度が曖昧 のどれかであることが多いです。
- AGENTS.md、CLAUDE.md、Copilot instructions、Cursor Rules は、同じように見えて読み込み方が違います。まずは対象ツールがどの場所のどのファイルを読むかを確認するのが先です。
- 対策として効きやすいのは、短く具体的にする、禁止事項より優先順位を書く、1ファイル1論点に分ける、チャットでも最重要ルールを再指定する、どのルールが実際に読まれたか診断する ことです。
- `.md` ファイルは強制設定ではなく、AIに渡す文脈です。だからこそ、ルールの書き方と読み込まれ方をセットで設計する 必要があります。
AGENTS.md を置いたのに守られない CLAUDE.md に書いたのに別の流儀で直される Cursor Rules が効いていない気がする。
この悩みはかなりよくあります。
しかも厄介なのは、AIが勝手だから仕方ない で片づけると、同じ失敗が何度も続くことです。
実際には、ファイルの置き場所、読み込み範囲、競合、長さ、指示の曖昧さなど、原因はかなり分解できます。
この記事では、2026年4月21日時点で OpenAI Codex、Claude Code、VS Code / GitHub Copilot、Cursor の公式情報を確認しながら、AI がルール用の .md ファイルを無視しているように見えるときの原因と対応策を整理します。
既存の AIコーディングで使うmdファイルとは? が 何を書くか の記事だとしたら、今回は 書いたのに効かないときどう直すか に寄せます。
まず大前提:mdファイルは魔法の強制設定ではない
ここを最初に押さえたいです。
AI向けの .md ファイルは、アプリケーション設定ファイルというより、自動で読み込まれる追加コンテキスト に近いです。
つまり、
- 読み込まれないことがある
- 別の指示と衝突することがある
- 長すぎると効きが弱くなることがある
- 作業内容によっては優先されないことがある
という前提があります。
この性質を無視して ここに書いたから絶対守るはず と考えると、かなりつらくなります。
なぜ無視されるのか
1. そもそも読まれていない
これが一番多いです。
ツールごとに読む場所が違います。
| ツール | 代表的なルールの場所 | 注意点 |
|---|---|---|
| OpenAI Codex | AGENTS.md |
ルートからカレントディレクトリまで探索 |
| Claude Code | CLAUDE.md |
AGENTS.md はそのままでは読まない |
| VS Code / Copilot | .github/copilot-instructions.md、AGENTS.md、CLAUDE.md、.instructions.md |
設定やファイル位置、適用条件を確認する必要がある |
| Cursor | .cursor/rules、AGENTS.md |
Rules と AGENTS.md は別物 |
OpenAI の Codex ドキュメントでは、Codex は AGENTS.md を作業前に読み、~/.codex/AGENTS.md のようなグローバル指示と、プロジェクト配下の指示をレイヤーとして扱うと説明されています。
一方で Claude Code の memory ドキュメントでは、Claude Code reads CLAUDE.md, not AGENTS.md と明記されています。
つまり、ツールが違うのに同じファイル名だけ置いている と、普通に効きません。
2. 読み込み範囲がズレている
同じファイル名でも、どこから起動したかで変わることがあります。
Codex の AGENTS.md ガイドでは、プロジェクトルートから現在の作業ディレクトリまでをたどって instructions file を読むと説明されています。
Claude Code も、現在の working directory から上方向に CLAUDE.md を探し、さらにサブディレクトリの CLAUDE.md はその subtree のファイルを読んだときに取り込まれると案内されています。
つまり、次のようなズレが起きます。
- 期待しているディレクトリから起動していない
- サブディレクトリのルールをまだ読んでいない
- モノレポで別チーム用のルールまで拾っている
ルールはあるのに効かない のではなく、その瞬間のスコープに入っていない ことがあります。
3. ルール同士が衝突している
ルールファイルは1枚だけとは限りません。
グローバル、プロジェクト、サブディレクトリ、ユーザー設定、個人メモが重なっていることがあります。
Codex では global guidance と project-specific overrides を重ねる形です。
Claude Code では CLAUDE.md と CLAUDE.local.md、ユーザールール、プロジェクトルールがあり、CLAUDE.local.md は同じ階層では後ろに付くため、競合時に最後に読まれるものが強く見えやすい構造です。
Cursor でも Project Rules、User Rules、AGENTS.md があり、VS Code / Copilot でも always-on instructions と file-based instructions が混ざります。
つまり、守られていないのではなく、別のルールに押し負けている ことがあります。
4. 長すぎて、重要なことが埋もれている
これはかなり起きます。
ルールファイルが親切すぎて、歴史、背景、理想論、例外、補足が全部入ると、AI から見て何が最重要か分かりにくくなります。
Anthropic の memory ドキュメントでも、CLAUDE.md は full で読み込まれる一方で、shorter files produce better adherence と説明されています。
つまり、長く書けることと、守られやすいことは別です。
なんとなく良さそうな説明 を増やすほど、禁止事項や優先ルールがぼやけやすくなります。
5. 指示が抽象的すぎる
たとえば、
- きれいに書いて
- 安全に実装して
- 既存の流儀に合わせて
- 適切にテストして
だけだと、人間にも解釈幅があります。
AI だとさらに広がります。
抽象ルールは、守られていないというより、解釈がズレている ことが多いです。
ツール別に見ると、どこを疑うべきか
OpenAI Codex / AGENTS.md
Codex の AGENTS.md ガイドでは、AGENTS.override.md、AGENTS.md、fallback filenames の順で、各ディレクトリごとに最大1ファイルずつ読むと説明されています。
さらに、Codex は current directory までで探索を止めるので、specialized work の近くに override を置くよう案内されています。
つまり Codex でズレるときは、
- 今の cwd が想定と違う
- override が root ルールを上書きしている
- fallback filename を設定していない
あたりを疑うと早いです。
Claude Code / CLAUDE.md
Claude Code は AGENTS.md をそのままは読まず、必要なら CLAUDE.md から @AGENTS.md で import する形が公式に案内されています。
また /memory でどの memory files が loaded されているか確認できます。
Claude Code でズレるときは、
AGENTS.mdしか置いていないCLAUDE.mdはあるが、起動ディレクトリが深くて別ルールが追加されている- サブディレクトリの
CLAUDE.mdがファイル読込後に入ってきている - monorepo で関係ない rules も拾っている
のようなケースが多いです。
VS Code / GitHub Copilot
最新の VS Code ドキュメントでは、.github/copilot-instructions.md、AGENTS.md、CLAUDE.md、*.instructions.md が使え、複数ある場合は combine されて chat context に追加される一方、specific order is not guaranteed と説明されています。
さらに FAQ では、適用されないときの確認として次が示されています。
- ファイルが正しい場所にあるか
applyToが対象に合っているか- 関連 settings が有効か
- Diagnostics view で loaded files と errors を見る
なので Copilot / VS Code では、書いたのに効かない ときほど diagnostics を見た方が早いです。
Cursor / Rules
Cursor の docs では、Rules は reusable で scoped な system-level instructions で、Project Rules、User Rules、AGENTS.md など複数の仕組みがあると説明されています。
また search snippet でも、CLI は AGENTS.md と CLAUDE.md を .cursor/rules とあわせて読むと案内されています。
Cursor でズレるときは、
.cursor/rulesとAGENTS.mdの役割が混ざっている- 1ファイルに全部詰め込みすぎている
- どの Rule がどの作業に効くか分かれていない
ことがよくあります。
効きやすい対応策
1. 最重要ルールを先頭に出す
まず守ってほしいことは、先頭に短く出します。
悪い例:
- 背景説明が長く、最後に
本番DBは触るな
よい例:
本番DB・本番API・課金設定は変更禁止変更後は npm test と npm run lint を必須新規依存追加は事前確認
先頭3〜5行で 絶対に外したくないこと を見せる方が効きやすいです。
2. 1ファイル1論点に寄せる
長い総合ルールファイル1枚より、
testing.mdapi-design.mdfrontend.md
のように論点を分けた方が、どこでズレたか追いやすいです。
Claude Code の .claude/rules/ や VS Code の .instructions.md のように、分割しやすい仕組みでは特に有効です。
3. 抽象語を具体化する
安全に ではなく、
.envを読まないrm -rfを使わない- migration は提案まで、実行はしない
- lint と unit test を通す
のように、観測できる行動へ落とした方が守られやすいです。
4. 優先順位を書く
競合しやすいなら、優先順位まで明記します。
## Priority
- Security rules override code style preferences.
- Project-specific rules override personal preferences.
- When unsure, stop and ask instead of guessing.
これだけで衝突時の挙動がかなり安定します。
5. チャットでも再指定する
最重要ルールは、ファイルに置いたうえで最初の依頼でも再指定した方が安全です。
たとえば、
まず AGENTS.md を読んでください。
特に「本番反映はしない」「新規依存追加は要確認」「テスト必須」を守って進めてください。
のように書くと、優先度が上がりやすいです。
.md ファイルは常設ルール、チャットは今回の強調ポイント、と分けるイメージです。
6. 実際に読み込まれたか確認する
ここを飛ばすと沼ります。
- Claude Code:
/memory - VS Code / Copilot: Chat customization diagnostics view
- Codex: loaded instructions を要約させる
- Cursor: 現在の適用ルールを説明させる
守られない の前に、読まれているか を確認するのが先です。
こう直すと効きやすい例
悪い例
# Coding Rules
このプロジェクトでは品質を大切にします。
なるべく既存実装に合わせてください。
安全で読みやすく保守しやすいコードにしてください。
必要ならテストもしてください。
改善例
# Priority Rules
- Do not modify production config, billing, or deployment settings.
- After code changes, run `npm test` and `npm run lint`.
- Ask before adding any new dependency.
# Editing Rules
- Match existing naming and file structure.
- Prefer modifying current modules over adding new abstractions.
# Output Rules
- Summarize changed files and tests run.
- If blocked, stop and explain the blocker instead of guessing.
この差はかなり大きいです。
前者は方針、後者は行動レベルになっています。
よくある失敗
1. 1回書いて放置する
AI が同じミスをしたら、チャットだけで直すのではなく、ルールファイル側も直した方が再発しにくいです。
2. ルールの置き場所を混同する
Claude Code に AGENTS.md だけ、Copilot に CLAUDE.md だけ、というズレは普通に起きます。
3. 例外だらけにする
基本はこう。ただしAではこう。ただしBでは逆 が増えすぎると、人間にも AI にも厳しいです。
4. 重要ルールを文章の奥に埋める
禁止事項や承認必須事項は、背景説明のあとではなく先頭へ出した方がよいです。
まとめ
AI がルール用の .md ファイルを無視しているように見えるときは、気まぐれ より、
- 読まれていない
- スコープがズレている
- 競合している
- 長すぎる
- 抽象的すぎる
のどれかであることが多いです。
対応としては、
- ツールごとの読み込み仕様を確認する
- 重要ルールを先頭へ出す
- 短く具体的にする
- 優先順位を書く
- チャットでも再指定する
- 実際に loaded files を診断する
この順で整えると、かなり改善しやすいです。
.md ファイルは万能な制御装置ではありません。
でも、読み込み方と書き方を合わせれば、AI のブレをかなり減らせます。
参考リンク
- OpenAI Developers: Custom instructions with AGENTS.md
- Anthropic Docs: How Claude remembers your project
- Cursor Docs: Rules
- Cursor Docs: CLI の使い方
- VS Code Docs: Use custom instructions in VS Code
- VS Code Docs: Customization
- GitHub Docs: Adding repository custom instructions for GitHub Copilot