Claude Code メモリはどこに保存される?CLAUDE.md と自動メモリの範囲

メモリの保存先はスコープごとに分かれています。自分で書く指示は、全プロジェクトに効くユーザー指示 ~/.claude/CLAUDE.md と、リポジトリ単位のプロジェクト指示 ./CLAUDE.md または ./.claude/CLAUDE.md の2か所です。Claude 自身が書き足す自動メモリは ~/.claude/projects/<project>/memory/ に置かれます。いずれも毎セッション読み込まれ、自動メモリの対象になるのは先頭200行または25KBまでです。次のセッションに持ち越されるのは、こうしたファイルに書き残した内容に限られます。
Claude Code のメモリはどこに保存されますか
保存先はスコープ単位で分かれています。チームに配る指示と、自分のマシンだけに置きたい設定を最初から分けておけば、どこに何を書くかで悩みません。組織が配る管理ポリシーとルールファイルは、これとは別の管理単位になります。

同じメモリでも、チームに届くものと自分の環境だけに残るものがあります。どのスコープが誰に届くのか、どこに置くのかは次の表のとおりです。

スコープと保存場所の対応
| スコープ | 保存場所 | 共有される範囲と用途 |
|---|---|---|
| 管理ポリシー | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md、Linux と WSL: /etc/claude-code/CLAUDE.md、Windows: C:\Program Files\ClaudeCode\CLAUDE.md | IT/DevOps が管理し、組織内のすべてのユーザーに適用 |
| ユーザー指示 | ~/.claude/CLAUDE.md | 自分のすべてのプロジェクトに適用 |
| プロジェクト指示 | ./CLAUDE.md または ./.claude/CLAUDE.md | ソース管理を通じてチームで共有 |
| ローカル指示 | ./CLAUDE.local.md | 自分のみ。.gitignore に追加しておく |
| プロジェクトルール | .claude/rules/*.md | チームで共有し、ファイルパターンで適用範囲を絞れる |
| ユーザーレベルルール | ~/.claude/rules/*.md | 自分のすべてのプロジェクトに適用 |
| 自動メモリ | ~/.claude/projects/<project>/memory/ | リポジトリごと。Claude が自分で書き足す学習メモ |
作業ディレクトリの上と下では読み込み方が違う
プロジェクト指示を探す範囲は、作業ディレクトリとその上位ディレクトリです。そこで見つかった CLAUDE.md が読み込まれます。上位に置いたファイルも対象になるので、リポジトリ全体に効かせたい共通ルールは上に、個別のルールは下に、という分け方ができます。
逆に、作業ディレクトリより下のサブディレクトリにある CLAUDE.md は起動時には読まれません。Claude がそのディレクトリのファイルを扱う段になって、初めて読み込まれます。
共有したい指示と自分だけの設定は分けて置く
指示の内容が同じでも、届く範囲が違えば置き場所は変わります。
- チーム全員に同じ前提を持ってほしいなら、リポジトリのプロジェクト指示に書きます。
- 自分の文体やよく使うツールの好みは、ユーザー指示のほうに置きます。
- その環境でしか通用しない値は、ローカル指示に切り分けます。
CLAUDE.local.md を .gitignore に入れておけば、自分向けの設定がリポジトリに紛れ込みません。
CLAUDE.md と自動メモリは何が違いますか
違うのはまず書く人です。CLAUDE.md に入るのはあなたが書いた指示とルールで、プロジェクト、ユーザー、組織というスコープに分かれます。自動メモリは、あなたが加えた修正や好みをもとに Claude が書き足していくメモです。読み込まれる量も違い、自動メモリは毎セッション先頭200行または25KBまでが対象になります。

何を書くかも分かれます。CLAUDE.md に書くのは、守られたかどうかを判定できる指示です。「コードをきれいに保つ」ではなく「インデントは2スペースにする」のように書きます。自動メモリに入るのは次の4つです。

- あなたの役割や、作業の進め方の好み
- Claude に対して行った修正
- 今進めている作業
- プロジェクトの外にある情報の置き場所
公式ドキュメントの対照表
| 項目 | CLAUDE.md ファイル | 自動メモリ |
|---|---|---|
| 誰が書くか | あなた | Claude |
| 何が含まれるか | 指示とルール | 学習とパターン |
| スコープ | プロジェクト、ユーザー、組織 | リポジトリごと |
| 読み込まれる場所 | すべてのセッション | すべてのセッション(最初の200行または25KB) |
| 用途 | コーディング標準、ワークフロー、プロジェクトの構成 | あなたの好み、Claude に与えた修正、コードから読み取れないプロジェクトの状況 |
自動メモリは毎回何かを保存するわけではない
自動メモリは放っておいても増えていきますが、セッションごとに必ず何かが保存されるわけではありません。残すかどうかは、Claude が「次の会話の役に立つか」で判断します。毎回確実に効かせたいルールは、自分で CLAUDE.md に書いておくほうが安定します。
セッションをまたいで残るものは何ですか
保存はプロジェクト単位で行われ、次のセッションでも同じ内容が読み込まれます。利用者のあいだでは、MEMORY.md に「Playwright はヘッドレスモードで実行する」と1行書いておいたら、それ以降は同じ指示を書き直さずに済んだ、という実例が共有されています。ただしこれは実際に使っている人の実測であって、公式ドキュメントに仕様として書かれているものではありません。

新しいセッションの開始時に読み込まれるのは、こうしたファイルです。会話のなかで一度伝えただけの内容は、ファイルに書き残していなければ次のセッションの前提にはなりません。
MEMORY.md は索引として毎回読まれる
自動メモリのフォルダの中には、MEMORY.md とトピック別のファイルが入っています。このうち MEMORY.md が索引の役割を持ち、メモリ1件につき1行の形で、すべてのセッションに読み込まれます。増えていった内容は user_role.md や feedback_testing.md のようなトピック別ファイルに切り出され、そちらは Claude が必要と判断したときだけ読み込まれます。
スコープはリポジトリ単位で共有される
メモリのスコープはリポジトリ単位で、ワーキングツリー全体で共有されます。同じリポジトリに worktree を追加した場合も読み込まれるメモは同じなので、作業ディレクトリを分けたときにメモが消えたようには見えません。
開発の流れに当てはめて使う
どの情報をいつ書き残すかは、開発の進め方と合わせて決めると定着します。自分のプロジェクトで試す段になったら、バイブコーディングの流れに沿って Claude への指示の出し方を確認すると、メモリに残すタイミングも決めやすくなります。
読み込まれているメモリはどう確認して直しますか
確認は /context です。実行すると Memory files の一覧が出ます。起動時に読まれるはずの CLAUDE.md と CLAUDE.local.md がここに載っていれば、そのセッションはその内容を前提として動いています。指示が効かないと感じたときは、まずこの一覧を見て、そのファイルがそもそも見えているかを確かめます。編集は /memory から対象のファイルを開き、その場で行います。
逆に、一覧に載っていないファイルの指示は効いていません。Project instructions の設定が変わっていないかどうかも、合わせて確認します。
サブディレクトリの CLAUDE.md が一覧に出ない理由
一覧に並ばないのは、そのファイルが起動時ではなく、Claude が必要になったときに読むものだからです。実際に Claude が読むと、パスを含む Loaded 行がターミナルに表示されます。
新しいファイルが読み込まれるかどうかを試すときは、Claude に書かせるのではなく、シェルから作成します。そのうえで、そのサブディレクトリ内のファイルを読むように Claude に頼みます。作る側と読む側を分けておくと、読み込みの条件を確かめられます。
AGENTS.md と CLAUDE.md のどちらが読み込まれますか
作業ディレクトリかその上位に CLAUDE.md または CLAUDE.local.md があれば、読み込まれるのはそちらで、AGENTS.md は読まれません。どちらも無いときに AGENTS.md が読み込まれます。Project instructions の既定値 claude-md-or-agents-md は、この動作です。
AGENTS.md を持つリポジトリで Claude Code も併用するなら、どちらを編集するかを先に決めておきます。既定の設定では CLAUDE.md 側が優先して読まれるので、CLAUDE.md を置いたまま AGENTS.md だけを更新しても指示は変わりません。
Project instructions の値ごとの読み込み
| 設定値 | Claude が読み込むもの |
|---|---|
| claude-md-or-agents-md(既定) | CLAUDE.md ファイル。作業ディレクトリかその上位に CLAUDE.md も CLAUDE.local.md も無い場合は AGENTS.md |
| claude-md-and-agents-md | CLAUDE.md と AGENTS.md の両方。各ディレクトリの CLAUDE.md が先で、その後に AGENTS.md |
| claude-md | CLAUDE.md ファイルのみ |
| managed-only | 起動時は組織が管理する CLAUDE.md と自動メモリのみ。プロジェクト、ローカル、ユーザーの CLAUDE.md と AGENTS.md は除外され、サブディレクトリの CLAUDE.md、.claude/rules/ ファイル、パススコープのルールは必要に応じて読み込まれる |
バージョンによる条件
AGENTS.md を読み込む機能が使えるのは Claude Code v2.1.277 以降です。v2.1.281 より前だと、Amazon Bedrock 上のセッションやテレメトリが無効なセッションなど、一部のセッションで AGENTS.md が読み込まれません。いま使っているバージョンは claude --version で確認できます。必要なら v2.1.281 以降に更新します。
設定パネルを開くのは /config です。Project instructions が claude-md や managed-only になっていると AGENTS.md は読まれません。パネルにこの項目が出てこないときは、そのセッションでは AGENTS.md を読み込めない、という意味になります。
1つのファイルを他のツールと共有する
AGENTS.md を他のコーディングツールと共有しているときは、CLAUDE.md から @AGENTS.md としてインポートする方法があります。インポートやシンボリックリンク経由で入ってきた AGENTS.md が二重に読まれることはありません。Windows で作業する人がクローンするリポジトリでは、この @AGENTS.md のインポートを使います。シンボリックリンクを作るには管理者権限か開発者モードが要ります。core.symlinks が有効でないと、Git はシンボリックリンクをプレーンテキストのファイルとしてチェックアウトします。
メモリが増えすぎたり古くなったらどう整理しますか
CLAUDE.md の目安は1ファイル200行以下です。長くなるほどコンテキストを消費し、個々の指示も守られにくくなります。関係するファイルやディレクトリが限られる指示は、パススコープ付きのルールとして外に切り出します。
読み込める量にも上限があります。CLAUDE.md は最大 4 MiB まで完全に読み込まれ、それを超えるファイルはスキップされます。
もう一つの基準は矛盾です。2つの指示が食い違っていると、Claude はどちらか一方を任意に選ぶ可能性があります。前提が変わったのに残っている指示は、見つけた時点で削除します。
200行を超えたときに移す先
コードベースの一部にしか関係しない指示は、起動のたびに読む必要がありません。そうした指示は .claude/rules/ にファイルを分け、フロントマターの paths で適用範囲を指定します。指定しておけば、一致するファイルを Claude が扱うときだけ読み込まれます。パターンは **/*.ts や src/**/*、*.md のように書き、YAML のリストでもカンマ区切りの文字列でも受け付けます。
インポートでは読み込み量は減らない
長くなった CLAUDE.md は @path/to/file.md でインポートして分割できます。ただしインポート先のファイルも起動時に読み込まれるので、コンテキストの消費量は変わりません。起動時に読む量を抑えたいなら、インポートではなくパススコープ付きのルールに移します。
見直しのタイミング
公式ドキュメントが求めているのは、CLAUDE.md、サブディレクトリに置いたネストされた CLAUDE.md、パススコープのルールを定期的に見直し、古い指示や矛盾する指示を削除することです。見落としが心配なら、公式ドキュメントも紹介しているプロンプト監査を走らせて、Claude 側に探してもらう手があります。
メモリとは別に、モデルの利用状況はどこで確認できますか
Claude Code のメモリは「Claude に何を前提として渡すか」を管理する仕組みで、モデルがどう処理したかの記録とは層が違います。呼び出しの記録を追うなら MixRoute の API ログです。ここには時刻・トークン数・モデル名・応答ステータスが残り、内容は記録されません。システム log の保持期間は7日間です。記録に model name が残るので、あとから API キーとモデルの対応をたどれます。
1 つの API キーで 250+ モデルを、プラットフォーム手数料 0% で利用できます。指示と学びはメモリ側に、実際の呼び出しの記録はゲートウェイ側のログに、という切り分けになります。
導入するかどうかは、料金条件を見て決めることになります。MixRoute を使い始めるかを料金条件から判断する
FAQ
Claude Code のメモリはどこに保存されていますか?
保存先はスコープごとに別のファイルです。あなたが書く指示は、すべてのプロジェクトに効くユーザー指示、リポジトリでチームと共有するプロジェクト指示、その環境だけのローカル指示に分かれます。これとは別に、組織が配る管理ポリシー、パススコープのルールファイル、Claude 自身が書き足す自動メモリがあります。いずれも実体はファイルなので、場所を押さえておけば中身を直接開いて読み返せます。
CLAUDE.md と自動メモリは何が違いますか?
書く人が違います。CLAUDE.md はあなたが書く指示とルール、自動メモリは Claude があなたの修正や好みから書き足すメモです。毎セッション読み込まれる量も違い、自動メモリは先頭200行または25KBまでが対象になります。毎回必ず守ってほしいことは自分で CLAUDE.md に書き、今回学んだことは自動メモリに任せる、と分けておくと役割がはっきりします。
自動メモリはどこに保存され、どう読まれますか?
保存先はプロジェクトごとのメモリ用ディレクトリです。その中の MEMORY.md が索引になり、すべてのセッションで読み込まれます。実際のメモは user_role.md や feedback_testing.md のようなトピック別ファイルに分けて置かれ、Claude が必要としたときだけ読まれます。つまり、メモが増えても毎回すべてがコンテキストに載るわけではありません。保存先を変えたいときは、設定の autoMemoryDirectory を指定します。
自動メモリは止められますか?
はい、設定の autoMemoryEnabled を false にすれば止められます。止めても、自分で書いた CLAUDE.md とルール、組織の管理ポリシー、設定に応じた AGENTS.md はこれまでどおり効きます。何を覚えているか分からないまま止めるのが不安なら、先に /memory で中身を見て、要らない行を消してから止める、という順番もあります。
読み込まれているメモリはどう確認しますか?
「/context」を実行すると、Memory files に起動時に読まれたファイルが並びます。ここに載っていない指示は、そのセッションからは見えていません。編集したいファイルは「/memory」からその場で開けます。サブディレクトリのファイルは必要になってから読まれるので一覧には現れず、読まれた時点でパスを含む Loaded 行がターミナルに表示されます。
AGENTS.md が読み込まれないのはどんなときですか?
作業ディレクトリかその上位に CLAUDE.md または CLAUDE.local.md が置かれていると、そちらが優先して読まれ、AGENTS.md は読まれません。それ以外に心当たりがないときは、v2.1.277 より前のバージョンで動いていないか、AGENTS.md を読む組み込みプラグインが無効になっていないか、Project instructions が claude-md か managed-only になっていないかを順に確認します。なお、v2.1.276 以前から更新した直後の最初のセッションでは読み込まれないことがあり、そのときは次のセッションから読まれるようになります。
古いメモリが残っているとどうなりますか?
指示が2つ食い違っていると、Claude はどちらを優先すべきか決められず、結果が安定しません。とくに影響が大きいのは、技術スタックのように前提そのものが変わった情報です。古い記述を残したままにすると、Claude が誤った前提で動くことがあります。CLAUDE.md は定期的に見直し、いまの状態と合わない記述はその場で直すか消します。