CLAUDE.md と AGENTS.md のトークン消費と、適切な長さは?
決まった数字はありません。ファイルの長さがそのままコストになり、セッション中のすべてのメッセージと一緒に送られます。Anthropic は、CLAUDE.md を 1 ファイル 200 行以内に保つようすすめています。Codex は、AGENTS.md の合計が 32 KiB に達すると、それ以上読み込みません。毎回必要なルールだけを残し、残りは外に移しましょう。
Codex
AGENTS.md は起動時に 1 回読み込まれ、その後はセッションに残り続けます。合計の上限はデフォルトで 32 KiB で、OpenAI は小さく保つようすすめています。
Codex は起動時にまず ~/.codex/AGENTS.md を読み、次にプロジェクトのルートから現在のディレクトリまでたどって、各階層で最大 1 ファイルを取り込み、プロンプトの 1 つのブロックにまとめます。ブロックが 32 KiB(設定項目 project_doc_max_bytes)に達すると、Codex はそれ以上ファイルを加えないので、その先の内容は読まれません。大きなプロジェクトでは、ファイルを階層に分けましょう。ルートにはプロジェクト全体のルールを少しだけ残し、モジュールのルールはそのモジュール内の AGENTS.md に置きます。そこから Codex を起動したときだけ読み込まれます。
公式ドキュメントの記載
Reduce the size of your AGENTS.md. If you work on a larger project, you can control how much context you inject through AGENTS.md files by nesting them within your repository.Codex builds an instruction chain when it starts (once per run; in the TUI this usually means once per launched session).Codex skips empty files and stops adding files once the combined size reaches the limit defined by project_doc_max_bytes (32 KiB by default).Codex concatenates files from the root down, joining them with blank lines. Files closer to your current directory override earlier guidance because they appear later in the combined prompt.Claude
CLAUDE.md は、毎回セッションの最初に全文が読み込まれます。Anthropic の目安は 1 ファイル 200 行以内で、/context で実際に占めている量を確認できます。
Claude Code は起動時に、~/.claude/CLAUDE.md、プロジェクトの CLAUDE.md(または .claude/CLAUDE.md)、CLAUDE.local.md、そして上位のディレクトリにある同じファイルを読み込みます。サブディレクトリにあるファイルは、Claude がそこのファイルを読んだときにだけ読み込まれます。Claude Code はリクエストのたびに会話全体を送るので、この内容もメッセージのたびにもう一度カウントされます。Anthropic ははっきり述べています。ファイルが長いほどコンテキストを多く消費し、指示が守られにくくなります。
公式ドキュメントの記載
CLAUDE.md files are loaded into the context window at the start of every session, consuming tokens alongside your conversation.Size: target under 200 lines per CLAUDE.md file. Longer files consume more context and reduce adherence.Claude Code sends your full conversation with every requestCLAUDE.md から外した内容の移し先
Claude Code には、必要なときだけ指示を読み込む方法が 2 つあります。それ以外は、@ でインポートしたファイルも含めて、すべて起動時に読み込まれます。
リリース、レビュー、データベースの移行など、特定のワークフローだけで使う長い指示:スキルに移します。スキルは使うときだけ読み込まれます。
特定のファイルだけに当てはまるルール:.claude/rules/ に置き、ファイルの先頭に paths: のブロックを書きます。Claude が一致するファイルを読んだときに読み込まれます。
人間向けのメモ:HTML コメントで囲みます。Claude Code は、ファイルがコンテキストに入る前に、ブロック単位のコメントを取り除きます。
公式ドキュメントの記載
If it contains detailed instructions for specific workflows (like PR reviews or database migrations), those tokens are present even when you're doing unrelated work. Skills load on-demand only when invoked, so moving specialized instructions into skills keeps your base context smaller. Aim to keep CLAUDE.md under 200 lines by including only essentials.Splitting into @path imports helps organization but doesn't reduce context, since imported files load at launch.Block-level HTML comments (<!-- maintainer notes -->) in CLAUDE.md files are stripped before the content is injected into Claude's context. Use them to leave notes for human maintainers without spending context tokens on them.よくある誤解
- CLAUDE.md は詳しく書くほど、Claude がよく従う
違います。Anthropic の説明は逆です。ファイルが長いほどコンテキストを多く消費し、指示が守られにくくなります。指示が具体的で簡潔なほど、Claude は安定して従います。余分な長さは、メッセージのたびに支払う固定のコストです。
- CLAUDE.md を @ インポートで分割すればトークンの節約になる
節約にはなりません。インポートしたファイルも起動時に読み込まれ、インポートが役立つのは整理だけです。本当に節約になるのは、必要なときだけ読み込む方法、つまり paths: のブロックを付けたルールとスキルです。
- Claude は CLAUDE.md の 200 行目より後を無視する
無視しません。200 行は目安で、打ち切りの線ではありません。Claude Code は 4 MiB を超えない限りファイル全体を読み込み、余分な 1 行ごとにトークンがかかります。「最初の 200 行または 25KB」というルールは、自動メモリのファイル MEMORY.md のものです。実際に打ち切るのは Codex で、AGENTS.md の合計が 32 KiB に達するとそれ以上読み込みません。
ヒント
- Claude Code:/context と入力すると、Memory files がどれだけ占めているか、どのファイルが読み込まれたかを確認できます。
- Claude Code:/memory と入力すると、それらのファイルを開いて削れます。変更は次のセッションから反映されます。/compact の後、Claude Code はプロジェクトのルートの CLAUDE.md をディスクから読み直します。
- ファイルを 1 行ずつ見直しましょう。毎回必要なルールでなければ、削除するか外に移します。残すのは、ビルドのコマンド、規約、プロジェクトの構成、「必ずこうする」というルールです。
- Codex:プロジェクト全体のルールはルートの AGENTS.md に、モジュールのルールはそのモジュール内の AGENTS.md に置きます。
- Codex:codex --ask-for-approval never "Summarize the current instructions." を実行して、読み込まれた内容が意図どおりかを確認します。
- 両方のツールを使う場合:AGENTS.md を 1 つだけ管理します。最近のバージョンの Claude Code は、プロジェクトに CLAUDE.md がなければ AGENTS.md を直接読みます。CLAUDE.md もある場合は、その中に @AGENTS.md と 1 行書きます。インポートした内容にもトークンがかかるので、AGENTS.md は短く保ちましょう。