MemoryLake
すべての記事に戻る
News2026年10月23日·13 分で読了

Claude Codeが長すぎるサブディレクトリのCLAUDE.mdファイルを切り捨てるように — Claudeが見落とす指示と確認方法 (2026)

リポジトリのパッケージ、サービスフォルダ、またはdocsディレクトリ内にCLAUDE.mdがある場合、10月22日にリリースされたClaude Codeのアップデートにより、Claudeが読み込む量に変更がありました。v2.1.309のリリースノートには、「非常に大きなネストされたCLAUDE.mdの下にあるファイルを読み込んだ後、セッションが繰り返しコンパクションされる問題を修正。サイズ制限を超えたネストされたCLAUDE.mdは、冒頭部分のみを読み込むように変更」と記載されています。

確認すべきは後半の部分です。サブディレクトリのCLAUDE.mdや、オンデマンドで読み込まれるルールファイルに、ファイルごとのサイズ制限が適用されるようになりました。ファイルが制限を超えている場合、Claudeは冒頭部分と、残りの部分を指し示す注記のみを受け取ります。ファイルの後半に書いた内容(最後に追加した具体的なルールなど)は、Claudeが自らそのファイルを読み込むと判断するまで、Claudeのコンテキスト外に置かれることになります。

なお、プロジェクトルートにあるCLAUDE.mdは影響を受けません。このガイドでは、新しい制限がどのファイルに適用されるのか、セッションにおける制限サイズはどのくらいか、制限を超えた場合にClaudeにどう見えるのか、および自身のファイルをチェックして修正する方法を解説します。そもそもClaude Codeがどの指示ファイルを読み込んでいるのか整理したい場合は、エージェントが作成した指示ファイルを無視する理由に関するガイドで、各ツールにおける読み込みルールを解説しています。

v2.1.309での変更点

Anthropicのメモリ(Memory)ドキュメントには、このケースに関するトラブルシューティング項目「Claude ignores the end of my subdirectory CLAUDE.md(ClaudeがサブディレクトリのCLAUDE.mdの末尾を無視する)」が追加されています。そこでは、動作が次のように直接説明されています。「サブディレクトリのCLAUDE.mdやオンデマンドで読み込まれるルールファイルがファイルごとのサイズ制限を超えている場合、Claudeはその冒頭部分のみを受け取ります。その部分の末尾には、Readツールを使って残りを読み込むようClaudeに指示する注記が含まれており、Claudeが読み込みを選択するまで、後半の指示はコンテキストに含まれません。」

同じ項目の最後は、次のバージョンに関する記述で締めくくられています。「v2.1.309より前は、Claude Codeはオンデマンドで読み込まれるファイルにこの制限を適用していませんでした。」

したがって、この変更の影響範囲は限定的です。リリースノートが説明しているのは、大きなオンデマンドファイルが、全体ではなく部分的に配信されるようになったという1点のみです。ルートファイルのルールは別途説明されており、制限サイズははるかに大きくなっています。

制限が設けられた理由

リリースノートにはその理由が示されています。非常に大きなネストされたCLAUDE.mdの下にあるファイルをClaudeが読み込んだ後、セッションが繰り返しコンパクション(圧縮)されていたためです。Claudeがフォルダにアクセスしたときに読み込まれる巨大な指示ファイルは、セッションをコンパクションに追い込み、次にClaudeがそのフォルダで作業するときに再び読み込まれることになります。

つまり、この制限は実際の問題を解決するためのものです。その代償として、ファイルの末尾が切り捨てられるようになり、ドキュメントに記載されている注記は、ユーザーではなくClaudeに向けて送られることになります。

制限が適用されるファイル

ドキュメントには、オンデマンドで読み込まれ、制限の対象となるファイルがリストアップされています。

  • 「Claude Codeを起動したディレクトリのサブディレクトリにあるCLAUDE.mdおよびCLAUDE.local.md、およびそれらが@pathでインポートするファイル」
  • 「サブディレクトリの.claude/rules/内にあるルールファイル」
  • 「プロジェクトの.claude/rules/または~/.claude/rules/内にあるパススコープのルール」

見落としがちな詳細が2つあります。インポートされたファイルも同じ項目でカバーされていること。そして、パススコープのルールは、起動時ではなくClaudeが一致するファイルを処理するときに読み込まれるため、プロジェクトのメインの.claude/rules/フォルダ内であっても対象となることです。

起動時に読み込まれるファイルは動作が異なります。ドキュメントによると、MEMORY.mdの制限は「MEMORY.mdにのみ適用されます。Claudeは、起動時に読み込まれる各CLAUDE.mdファイルが4 MiB以下である限り、その全体を取得します」とのことです。さらに、「Claude Codeは4 MiBを超えるファイルをスキップし、一切読み込みません」と付け加えられています。そして、新しいルールを指し示しています。「パススコープのルールおよびサブディレクトリ内のCLAUDE.mdファイルには、それ自体に、より小さなファイルごとの制限があります。」

つまり、ルートのCLAUDE.mdは非常に大きなサイズまで全体が読み込まれるのに対し、1つ下のフォルダにあるCLAUDE.mdは、はるかに小さな制限を超えると部分的にしか読み込まれません。

セッションにおける制限サイズ

制限は、セッションが実行されているコンテキストウィンドウによって異なります。ドキュメントには以下の値が示されています。

  • 200K コンテキストウィンドウ: 40,000文字
  • 1M コンテキストウィンドウ: Claude Opus 4.6およびClaude Sonnet 4.6では200,000文字、それ以降のモデルでは150,000文字

単位は「文字数(characters)」です。Anthropicのサイズに関するアドバイスは行数(「CLAUDE.mdファイルあたり200行未満を目標にする」)ですが、1行が長い200行のファイルは依然として大きくなる可能性があります。

ウィンドウサイズも重要です。現在のいくつかのモデルはデフォルトで1Mウィンドウで動作しますが、これをオフにすることもできます。Anthropicのモデル設定ページには、「セッションを200Kウィンドウに維持するには、シェルまたは設定ファイルでCLAUDE_CODE_DISABLE_1M_CONTEXT=1を設定してください」とあります。あなたやチームがこの変数を設定している場合、セッションは40,000文字の制限を使用するため、1Mウィンドウの同僚には全体が読み込まれるファイルが、あなたには部分的にしか読み込まれない可能性があります。200Kで動作するモデルを使用する場合も同様です。

制限を超えたときにClaudeが実際に目にするもの

Claudeはファイルの冒頭部分と、残りはReadツールで読み込めることを伝える注記を受け取ります。後半の指示は、Claudeがそれを読み込むことを「選択するまで」Claudeのコンテキストには入りません。Claudeが残りを読み込むかどうかは、目の前のタスクに依存します。あなたが重視する指示が、長いservices/payments/CLAUDE.mdの末尾にあるテスト名の命名規則であり、Claudeがテストの作成ではなくバグ修正を行っている場合、残りの部分を開く理由がないかもしれません。

その結果、次の3つのことが生じます。

  1. ファイル内の順序が重要になります。 制限を超えたファイルの先頭にあるコンテンツはClaudeに届きますが、末尾にあるコンテンツは届かない可能性があります。
  2. インポートもサイズに加算されます。 Anthropicのガイダンスによると、インポートは「長いファイルを整理するのには役立ちますが、インポートされたファイルはそれをインポートするCLAUDE.mdと一緒に読み込まれるため、コンテキストコストは削減されません」とのことです。
  3. 注記はClaude向けです。 トラブルシューティングの項目では、配信された部分の末尾に、残りがどこにあるかをClaudeに伝える注記があると説明されています。ユーザーへの通知については説明されていませんが、同じ項目でファイルを自分でチェックする方法が提供されています。

オンデマンドファイルのこれまでの動作

新しい制限は、ルートファイルとはすでに異なっていた読み込みルールの上に重ねられています。

フォルダにアクセスしたときに読み込まれる。 Claude Codeは、作業ディレクトリの下のサブディレクトリにあるCLAUDE.mdファイルを見つけ、「起動時に読み込むのではなく、Claudeがそのサブディレクトリ内の別のファイルを読み込み、書き込み、または編集した時点で、それぞれを読み込みます。」

上書きではなく、累積される。 Anthropicは「検出されたすべてのファイルは、互いに上書きされるのではなく、コンテキストに連結されます」と述べています。サブディレクトリのファイルはルートファイルを置き換えるのではなく、追加されます。

起動時のリストには表示されない。 トラブルシューティングセクションでは、「作業ディレクトリのサブディレクトリにあるCLAUDE.mdは、起動時ではなくオンデマンドで読み込まれるため、Memory filesの下には表示されません。読み込まれると、ターミナルにそのパスを示すLoaded行が表示されます」と指摘されています。

コンパクションはこれらを会話のように扱う。 コンテキストウィンドウのページには、「パススコープのルールやネストされたCLAUDE.mdファイルは、Claudeがトリガーファイルを読み込み、書き込み、または編集したときにメッセージ履歴に読み込まれるため、コンパクションによって他のすべてと一緒に要約されて消えてしまいます」とあります。次にClaudeが一致するファイルにアクセスしたときに、再び読み込まれます。アドバイスとしては、「コンパクションを越えてルールを維持する必要がある場合は、paths: フロントマターを削除するか、プロジェクトルートのCLAUDE.mdに移動してください」とのことです。自動コンパクションで残すべきものを狙い撃ちするためのガイドではそのリストを網羅しており、アイドルコンパクションに関するガイドでは、離席中に発生するケースをカバーしています。

したがって、サブディレクトリファイル内の指示がClaudeのコンテキスト外になる理由は3つあります。Claudeがまだそのフォルダにアクセスしていない、コンパクションによって要約された、またはカットオフラインを超えている、のいずれかです。

Codexにおける同様の問題と異なる解決策

Codexも指示ファイルを制限しています。OpenAIのCodexドキュメントには、「Codexは空のファイルをスキップし、結合されたサイズがproject_doc_max_bytes(デフォルトは32 KiB)で定義された制限に達するとファイルの追加を停止します」とあります。

CodexはAGENTS.mdファイルのチェーン全体をまとめて制限するため、作業ディレクトリに最も近いファイルが危険にさらされます。一方、Claude Codeは各オンデマンドファイルを個別に制限するため、各巨大ファイルの末尾が危険にさらされます。どちらも指示ファイルが作業を圧迫するのを防ぐためのものであり、どちらの場合も最後の行から順に消えていきます。CodexがAGENTS.mdルールをスキップするのを防ぐためのガイドでは、Codex側の対策を解説しています。

よくある誤ったアプローチ

ファイルが小さいため影響ないと決めつける。 1行が長い場合、200行のファイルでも40,000文字を超えることがあり、これは200Kウィンドウにおける制限値です。行数ではなく、文字数をカウントしてください。

/contextを確認する。 サブディレクトリのファイルはオンデマンドで読み込まれるため、Memory filesの下には表示されません。

すべてをルートのCLAUDE.mdに移動する。 これによりファイルごとの制限は回避できますが、ルートファイルはすべてのセッションで読み込まれるため、Anthropicは「ファイルが長くなるとコンテキストをより多く消費し、指示への追従性が低下する」と警告しています。

ファイル全体を読み込むようClaudeに指示する行を追加する。 その行が制限を超えたファイルの末尾近くにある場合、Claudeが受け取らない部分に含まれてしまう可能性があります。

解決策:ファイルを測定し、重要な内容を読み込み位置に配置し、背景情報は別の場所に保管する

ステップ 1:オンデマンドファイルを特定し、文字数をカウントする

制限の対象となるファイルをリストアップします。Claude Codeを起動したフォルダ配下にあるCLAUDE.mdおよびCLAUDE.local.mdファイル、それらが@pathでインポートしているもの、サブディレクトリの.claude/rules/フォルダ内にあるルールファイル、およびプロジェクト内または~/.claude/rules/内にあるpaths:フィールドを持つルールファイルです。

文字数カウントに関するAnthropicの指示はシンプルです。「BashまたはZshで、wc -m path/to/CLAUDE.mdを実行してファイルの文字数を出力します。」これをセッションの制限値(200Kウィンドウでは40,000文字、1Mウィンドウではモデルに応じて150,000文字または200,000文字)と比較します。

実際にどのファイルがいつ読み込まれるかを確認するために、Anthropicはフックの使用を推奨しています。「InstructionsLoadedフックを使用して、どのCLAUDE.mdやルールファイルが、いつ、なぜ読み込まれたかをログに記録します。」また、Claudeがフォルダ内で作業を開始したときに、ターミナルに表示されるLoaded行を確認することもできます。

ステップ 2:削減、分割、または重要な行を上に移動する

制限を超えたファイルについて、ドキュメントでは2つの選択肢が示されています。「ファイルをトリミング(削減)するか、一部を1つ以上のルールファイルに移動します。ルールファイルはそれぞれ個別に制限がカウントされます。」

分割が有効なのは、各ルールファイルに独自の制限があるためです。60,000文字のapi/CLAUDE.mdを、より短いCLAUDE.mdと、関連するパスにスコープされた2つのルールファイルに分割できます。それぞれ、Claudeが一致するファイルにアクセスしたときに読み込まれ、制限内に収まります。

最も重要なルールは各ファイルの先頭近くに配置し、後でファイルが大きくなっても先頭部分が確実にClaudeに届くようにします。Anthropicは、コンパクション後に末尾からカットされるスキル(skills)についても同様のアドバイスをしています。「切り捨てはファイルの開始部分を維持するため、最も重要な指示はSKILL.mdの先頭近くに配置してください。」

削減には2つの組み込みツールが役立ちます。/doctor prompt-auditは、「古いモデル向けに書かれた指示、存在しないファイルやコマンドへの参照、互いに矛盾するファイル」を探し、指示されるまで何も変更せずに修正案を提示します。他チームのファイルが読み込まれてしまう大規模なモノレポでは、claudeMdExcludesを使用して、パスやグロブパターンで特定のCLAUDE.mdファイルをスキップできます。

ステップ 3:背景情報を指示ファイルから除外する

Anthropic自身のトリミングツールは、ファイルに何を含めるべきかを示しています。/doctorの診断は、「ディレクトリレイアウト、依存関係リスト、アーキテクチャの概要など、Claudeがコードベースから導き出せるコンテンツをカットし、落とし穴、論理的根拠、ツールのデフォルトとは異なる規約を残します。」したがって、ルールの横にある1行の理由は残ります。

除外できるのは、長い歴史です。決済サービスがなぜ2回リトライするのかの全容、どのマイグレーションが破棄されたか、誰がテストレイアウトを主張したかなどです。これらは決定文書や、そのルールを導入したプルリクエストに移動しましょう。特定のタスクでのみ重要な手順について、Anthropicはスキルを指し示しています。「常にコンテキストに含める必要のないタスク固有の指示については、代わりにスキルを使用してください。スキルは、呼び出したとき、またはClaudeがプロンプトに関連していると判断したときにのみ読み込まれます。」これによりファイルは小さくなり、歴史は記録されたまま残ります。

MemoryLakeでの設定方法

新しい制限は、ドキュメントが他の場所ですでに指摘していた点を浮き彫りにしています。指示ファイルは短いルールを記述する場所であり、Claudeは特定の条件下でそれを受け取るということです。Claudeがフォルダにアクセスしたときに読み込まれ、コンパクションによって要約され、そして長ければカットされます。ルールの背後にある長い背景情報は、真っ先に削ぎ落とされる部分です。

MemoryLakeは、その背景情報を1つのリストとして管理し、Claude Codeや、接続する他のアシスタント(ChatGPTやCodexなど)から利用できるようにするためのメモリレイヤーです。

エントリーはあなた自身の言葉で作成します。CLAUDE.mdファイル、ルールファイル、自動メモリフォルダ、またはベンダーのストアから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。業務用のリポジトリについては、リポジトリ外に保管するものに関する組織のポリシーに従ってください。

ステップ 1:APIキーを作成する

サインインし、ダッシュボードからキーを生成します。このキーはMemoryLakeのワークスペースに属し、Anthropicのアカウントとは異なります。

エージェントで使用するために新しいキーが作成され、コピーされるAPIキー画面を表示したMemoryLakeコンソール
エージェントで使用するために新しいキーが作成され、コピーされるAPIキー画面を表示したMemoryLakeコンソール

ステップ 2:最初のメモリをアップロードする

解決策のステップ3で指示ファイルから移動した内容から始めましょう。ルールの背後にある歴史、破棄されたアプローチ、サービスに関する決定事項などです。1つのエントリーにつき1つのポイントを記述し、日付を入れ、適用されるフォルダやサービスでラベル付けします。

最初のドキュメントがアップロードされ、各ファイルが検索可能なメモリとしてリストされているMemoryLakeワークスペース
最初のドキュメントがアップロードされ、各ファイルが検索可能なメモリとしてリストされているMemoryLakeワークスペース

ステップ 3:AIとエージェントを接続する

Claude Codeや、使用している他のアシスタントを接続します。タスクが必要とするときに背景情報が利用可能になり、CLAUDE.mdファイルは全体を読み込めるほど短い状態を維持できます。

メモリレイヤーに接続可能なAIクライアントとエージェントフレームワークをリストしたMemoryLakeインテグレーション画面
メモリレイヤーに接続可能なAIクライアントとエージェントフレームワークをリストしたMemoryLakeインテグレーション画面

実務における変化

第1の違いは、セッションの制限値に対してファイルをカウントしたため、今回の変更がどのファイルに影響を与えたかを把握できていることです。

第2に、重視するルールが確実にClaudeに届くようになります。短いファイルの先頭近くや、スコープされたルールファイルに配置されているため、ファイルが肥大化してもカットオフラインを超えて押し出されることはありません。

第3に、指示ファイルが2つの役割を兼ねる必要がなくなります。ルールはCLAUDE.mdに残り、その背後にある歴史は別の場所に保管されます。他のツール用にAGENTS.mdも管理している場合は、Claude CodeがAGENTS.mdを読み込む方法に関するガイドで、どちらのファイルが優先されるかを解説しています。

サブディレクトリのCLAUDE.mdファイルにおけるベストプラクティス

文字数をカウントする。 制限は200Kウィンドウで40,000文字、1Mウィンドウで150,000文字または200,000文字です。

セッションが使用するウィンドウを確認する。 CLAUDE_CODE_DISABLE_1M_CONTEXT=1や200Kモデルを使用している場合、低い方の制限値が適用されます。

最も重要なルールを最初に配置する。 ファイルが制限を超えて肥大化した場合、Claudeが受け取るのは冒頭部分のみです。

スコープされたルールファイルに分割する。 各ルールファイルは個別に制限がカウントされます。

長い歴史は指示ファイルから除外する。 1行の理由は残しても構いません。詳細な経緯は、コンテキストを圧迫しない別の場所に保管すべきです。

複数のワークツリーで作業している場合は、各ワークツリーセッションが読み込む内容に関するガイドで、指示ファイルと自動メモリの動作を解説しています。

まとめ

Claude Code v2.1.309では、オンデマンドで読み込まれる指示ファイル(サブディレクトリのCLAUDE.mdおよびCLAUDE.local.mdファイル、それらのインポート、サブディレクトリの.claude/rules/フォルダ内のルール、およびパススコープのルール)に対して、ファイルごとのサイズ制限が追加されました。制限を超えたファイルは、冒頭部分と注記のみがClaudeに届き、残りの部分はClaudeが読み込むまでコンテキスト外に置かれます。プロジェクトルートのCLAUDE.mdは、引き続き4 MiBまで全体が読み込まれます。

オンデマンドファイルの文字数をカウントし、コンテキストウィンドウの制限と比較して、超過しているものは分割または削減してください。重要なルールを先頭に配置し、長い背景情報はコンテキストを圧迫しない別の場所に移動しましょう。

よくある質問

Claude CodeにおけるサブディレクトリのCLAUDE.mdのサイズ制限はどのくらいですか?

コンテキストウィンドウによって異なります。Anthropicは、200Kウィンドウでは40,000文字、1MウィンドウではClaude Opus 4.6およびClaude Sonnet 4.6で200,000文字、それ以降のモデルでは150,000文字としています。

この制限はルートのCLAUDE.mdにも適用されますか?

いいえ。Anthropicによると、起動時に読み込まれる各CLAUDE.mdファイルが4 MiB以下である限り、Claudeはその全体を取得します。4 MiBを超えるファイルはスキップされます。

サブディレクトリのCLAUDE.mdが制限を超えるとどうなりますか?

Claudeはファイルの冒頭部分と、残りをReadツールで読み込むよう指示する注記を受け取ります。後半の指示は、Claudeが読み込みを選択するまでコンテキストには入りません。

どのバージョンのClaude Codeでこの制限が追加されましたか?

2026年10月22日にリリースされたバージョン2.1.309です。v2.1.309より前は、Claude Codeはオンデマンドで読み込まれるファイルにこの制限を適用していませんでした。

自身のCLAUDE.mdが制限を超えているかどうかを確認するにはどうすればよいですか?

ファイルに対してwc -mを実行して文字数を取得し、セッションのコンテキストウィンドウの制限と比較します。インポートされたファイルは、それをインポートするCLAUDE.mdと一緒にカウントされます。

パススコープのルールにも同じ制限が適用されますか?

はい。プロジェクトの.claude/rules/または~/.claude/rules/内にあるパススコープのルール、およびサブディレクトリの.claude/rules/内にあるルールファイルには、同じファイルごとの制限が適用されます。各ルールファイルは個別にカウントされます。