この記事の目次
Claude Codeを使っていると、画面に「Saved 2 memories」と出たり、~/.claude/projects/ の下にファイルが増えていたりします。これは自動メモリ(auto memory)と呼ばれる、Claudeが自分で書き残すメモです。先に、多くの人が知りたい3点の答えを並べます。
- 保存先は既定で
~/.claude/projects/<project>/memory/です。 - 確認と編集は、セッション内で
/memoryを開いて行います。 - 止めたいときは、
/memoryのトグル、設定のautoMemoryEnabled、環境変数CLAUDE_CODE_DISABLE_AUTO_MEMORY=1のいずれかを使います。
以降の内容は、公式ドキュメント(https://code.claude.com/docs/en/memory)に書かれている範囲に限っています。資料の日付は確認できていません。また、プラン別の可否、地域差、提供段階(GAかプレビューか)も本文に記載がないため、断定しません。
自動メモリとは何で、CLAUDE.mdと何が違うのか?
自動メモリは、ユーザーの修正や好みをもとにClaudeが自分で書くメモです。人が書く指示ファイルであるCLAUDE.mdとは、書き手が違います。
Claude Codeは毎回まっさらなコンテキストウィンドウ(一度に扱える文脈の範囲)で始まります。その間をつなぐ仕組みが2つあり、公式は次のように整理しています。
| 比較軸 | CLAUDE.md | 自動メモリ |
|---|---|---|
| 書き手 | ユーザー | Claude |
| 中身 | 指示とルール | 学んだことやパターン |
| 範囲 | プロジェクト、ユーザー、組織 | リポジトリ単位(ワークツリーで共有) |
| 読み込み | 毎セッション | 毎セッション(先頭200行または25KBまで) |
どちらも毎回読み込まれますが、Claudeは両方を「文脈」として扱い、強制される設定としては扱いません。アクションを確実に止めたい場合は、PreToolUseフックを使うというのが公式の説明です。CLAUDE.mdそのものの書き方はCLAUDE.mdの書き方ガイドにまとめています。この記事では扱いません。
Claudeが残す4種類のメモ
Claudeはメモの種類を、ファイル冒頭のfrontmatter(ファイル先頭に置くメタ情報の欄)に type として記録します。種類は次の4つです。
user: ユーザーの役割、専門性、仕事の進め方の好みfeedback: Claudeへの修正と、ユーザーが認めたやり方project: 進行中の作業、期限、コードやgit履歴からは分からない判断reference: 課題管理ツールやダッシュボードなど、プロジェクト外の情報の所在
アーキテクチャ、ファイルパス、デバッグの解決策のようにコードから分かることや、CLAUDE.mdにすでに書かれていることは保存されません。
毎セッション保存されるわけではない
Claudeは、将来の会話で役に立つかどうかを基準に、残すかどうかを判断します。メモが1件も増えないセッションがあっても、それだけでは異常とは言えません。
既定の状態は環境で異なります。公式の記載では、ローカルセッションでは既定でオンです。一方、Claude Tagのセッションを除き、セルフホスト環境のセッションは既定でオフになります。
自動メモリはどこに保存されるのか?
既定の保存先は ~/.claude/projects/<project>/memory/ で、プロジェクトごとに1つのディレクトリが作られます。<project> はgitリポジトリから決まります。
同じリポジトリのワークツリー(同じリポジトリを別ディレクトリに展開した作業コピー)とサブディレクトリは、1つのメモリディレクトリを共有します。git管理外のフォルダでは、プロジェクトルートが使われます。<project> が実際にどんな文字列になるかは生成規則の記載がないため、推測せず、次の章の /memory からフォルダを開いて確かめるのが確実です。
ディレクトリの中身
ディレクトリには、索引の MEMORY.md と、メモ1件につき1つのトピックファイルが入ります。
~/.claude/projects/<project>/memory/
├── MEMORY.md # 索引。1メモ1行。毎セッション読み込まれる
├── user_role.md # メモ1件
├── feedback_testing.md # メモ1件
└── ... # Claudeが作るその他のトピックファイル
Claudeはセッション中にこのディレクトリのファイルを読み書きし、MEMORY.md で何がどこにあるかを把握します。「Saved 2 memories」「Recalled 2 memories」という表示は、Claudeがこの場所へ書いた、あるいは読んだときに出るものです。
共有範囲と自動で消えない範囲
自動メモリはマシンローカルです。別のマシンやクラウド環境にはファイルが共有されません。同じgitリポジトリ内のワークツリー同士では共有されます。
古いセッション記録は cleanupPeriodDays の保持期間を過ぎると削除されますが、メモリディレクトリ内のファイルはその掃除の対象外です。MEMORY.md もトピックファイルも、ユーザーかClaudeが編集・削除するまで残ります。
保存先を変えたい場合
settings.json に autoMemoryDirectory を書くと、保存先を変えられます。設定は次の章の後にまとめて扱います。
Claudeが何を保存したかは、どう確認・編集・削除できるのか?
セッション内で /memory を開き、自動メモリフォルダを選ぶと、保存済みのファイルを一覧できます。ファイルはプレーンなmarkdownで、いつでも編集・削除できます。
公式で確認できる操作を、順に並べます。
- Claude Codeのセッションで
/memoryを実行します。 - 一覧から自動メモリフォルダを開くオプションを選びます。
MEMORY.mdとトピックファイルを読みます。- 不要なメモは、ファイルを編集するか削除します。
成功状態は、保存済みファイルが一覧でき、中身が読めることです。メニューの細かな文言やレイアウトは、確認できた範囲を超えて創作しないため省略します。
/memory はCLAUDE.mdやCLAUDE.local.mdなどの場所も一覧に出します。ファイルを選ぶとエディタで開きます。VS Codeのようなエディタは別ウィンドウで開き、Vimのような端末エディタは終了するまで端末を占有します。
「覚えて」と頼んだときの保存先
「常にnpmではなくpnpmを使って」のように記憶を頼むと、Claudeは自動メモリに保存します。CLAUDE.mdに入れたいときは「CLAUDE.mdに追加して」と頼むか、/memory からファイルを自分で編集します。全セッションで保持してほしい内容かどうかで頼み方を使い分けると、置き場所を迷いません。
modified で新しさを見る
Claudeがfrontmatter付きのメモを書き込むと、書き込み時刻が modified フィールドにISO 8601形式(日時の国際標準的な書き方)で記録されます。そのメモがどれくらい新しい事実かを、ユーザーにもClaudeにも示すための値です。frontmatterのないファイルには追加されません。この機能にはClaude Code v2.1.214以降が必要です。バージョンの確認方法はClaude Codeのアップデートガイドで説明しています。
なお、CLAUDE.md側が読み込まれているかは /context の Memory files 一覧で確かめられます。/context に自動メモリが出るかどうかは、公式に記載がありません。
自動メモリを止める方法と、それぞれの効く範囲
止める方法は3つあります。/memory のトグルは、設定がユーザー設定に保存されます。プロジェクト単位では、プロジェクトの設定に autoMemoryEnabled: false を書きます。環境変数でも止められますが、効く範囲は公式に記載がありません。
書く場所、効く範囲、注意の軸で並べます。公式に記載がない欄は、そう明記しています。
| 方法 | 書く場所・操作 | 効く範囲 | 注意 |
|---|---|---|---|
/memory のトグル |
トグルを切り替えると、autoMemoryEnabled がユーザー設定 ~/.claude/settings.json に保存される |
保存先がユーザー設定であるところまでが公式の記載 | バックグラウンドセッションと、別のClaude Codeセッションが起動したセッションでは、オフにはできるがオンには戻せない |
autoMemoryEnabled: false |
プロジェクトの設定に {"autoMemoryEnabled": false} と書く |
プロジェクトの設定に書くと、そのプロジェクトだけ | 書く設定ファイルの名前は、プロジェクトの設定という以上には公式に記載がない |
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 |
環境変数として設定する | 公式に記載なし | 設定との優先順位、シェルと設定ファイルのどちらで設定するかも記載なし |
設定後の成功状態として公式で確認できるのは、トグルがオンに戻せないセッションで off · can't be turned on here; use a session started outside Claude Code と表示されることだけです。autoMemoryEnabled や環境変数を設定した後に何が表示されれば成功か、公式の記載はありません。
オンに戻せないセッション
バックグラウンドセッションや、Claudeが自分のBashツールで claude を起動したセッションでは、トグルがオフにしかできません。そのときトグルには上記の文言が表示されます。オンに戻すには、ターミナルで直接 claude を起動し、そのセッションの /memory でトグルを切り替えます。
迷ったときの選び方
ここからは公式の記述ではなく、筆者の整理です。まず /memory を開いてトグルの現在の状態を見ます。特定のリポジトリだけで止めたいなら、そのプロジェクトの設定に autoMemoryEnabled: false を書くのが分かりやすいでしょう。設定ファイルの種類と優先関係の全体像はsettings.jsonの解説にあります。
オフにしたときに既存ファイルがどうなるか、環境変数が効いているかを確かめる手順は、どちらも公式に記載がありません。既存のメモを消したい場合は、前の章の手順で手動で削除します。
なお、ここで扱った無効化は、メモを書かせない設定の話です。学習利用やテレメトリ(利用状況の送信)を止める話は別なので、その設定はオプトアウト設定の解説で扱っています。
保存先を別の場所に変えることはできるのか?
できます。settings.json の autoMemoryDirectory に、ルートから書くフルパス(公式の表記はabsolute path)か、~/ で始まるパスを書きます。公式の例は次のとおりです。
{
"autoMemoryDirectory": "~/my-custom-memory-dir"
}
この設定は、user、project、local、policy、--settings のどのスコープからも読み取られます。
効かなくなる条件
プロジェクトの .claude/settings.json や .claude/settings.local.json に書いた場合は、フック設定と同じワークスペース信頼のルールのもとで有効になります。
もう1つ注意したいのが permissions.blockReadsOutsideWorkingDirectories です。これが有効な間は、リポジトリ側の設定ファイルが選んだディレクトリから、自動メモリの読み込みも保存も行われません。ディレクトリの場所がどこであっても同じです。
変更後の確認手順は、公式に記載がありません。筆者の想定としては、/memory から自動メモリフォルダを開いて新しい場所になっているかを見る方法がありますが、結果は自分の環境で確かめる必要があります。
保存したはずなのに効いていないように見えるのはなぜか?
次の原因が考えられます。保存されていない、読み込み上限を超えている、共有範囲が違う、メモは強制ではない、といったものです。症状から原因の候補を引ける形にしました。
| 症状 | 原因の候補(公式の記載範囲) | 確認先 |
|---|---|---|
| 何も保存されない | セルフホスト環境で既定オフ / 無効化設定 / 環境変数 / バックグラウンドや別セッション起動分でオフ / そもそも毎回は保存されない | 無効化の章の表、/memory のトグル表示 |
| 以前のメモが使われない | MEMORY.md は先頭200行または25KBまでしか起動時に読み込まれない。トピックファイルは起動時には読まれず、必要なときにClaudeが読む |
MEMORY.md の長さ |
| 別のPCに同じメモがない | 自動メモリはマシンローカルで共有されない | 保存先の章 |
| 作業場所を変えたらメモが違う | <project> はgitリポジトリで決まる。git管理外ではプロジェクトルート |
保存先の章 |
| 書いたはずの指示を守らない | メモは文脈であり、強制される設定ではない(冒頭の比較表を参照) | アクションを確実に止めたい場合はフックの解説 |
| サブエージェントが知らない | メイン会話の自動メモリはサブエージェントに読み込まれない(forkは例外) | サブエージェントの解説 |
MEMORY.md が上限を超えた場合、書き込み自体は成功します。ただしClaude Codeは、索引を書き直すようClaudeに促すエラーを返します。上限を超えた部分は、次回の読み込みで落とされるためです。上限は MEMORY.md だけに適用され、トピックファイルには適用されません。
サブエージェントが自分用の自動メモリを持つ場合は、memory フィールドで有効にし、保存先は別のディレクトリになります。
自動メモリで足りないとき、どこに書き直せばよいのか?
全セッションで保持したい事実はCLAUDE.mdに、確実な実行や阻止はフックに置きます。自動メモリは、Claudeが必要に応じて参照する補助的なメモとして使うのが無理がありません。
公式の「CLAUDE.mdに追加するタイミング」には、同じ間違いを2度繰り返したとき、コードレビューで指摘されたとき、前回と同じ訂正を毎回入力しているときが挙がっています。
置き場所の目安を、公式の記述に沿って並べます。
| 内容の性質 | 置き場所 |
|---|---|
| 毎回の訂正や、全セッションで保持してほしい事実 | CLAUDE.md |
| 複数手順の作業や、コードベースの一部にだけ関係する内容 | スキルやパス指定ルール |
| 特定のタイミングで必ず実行させたい処理、確実に止めたい処理 | フック |
スキルの使い方はスキルの解説にあります。この分担以外の運用上の判断、たとえばどのメモをいつ見直すかは、公式の記載ではなく各自の判断になります。
まとめ: 自動メモリを自分で管理するための次の一手
次にやることは3つです。まず /memory から自動メモリフォルダを開き、保存済みのファイルを読みます。次に、不要なメモを編集または削除します。最後に、止めたい範囲(ユーザー全体か、特定のプロジェクトか)を決めて、対応する無効化の方法を選びます。
公式本文で確認できなかった点は、次のとおりです。
- 資料の日付と最終更新日
- プラン別の可否、地域差、提供段階
- 環境変数と
autoMemoryEnabledが食い違うときの優先順位 - 環境変数が効いているかを確かめる公式手順と、その設定方法
- オフにしたときの既存ファイルの扱い
- 「Saved N memories」が表示される条件の詳細
/contextに自動メモリが表示されるかどうか
設定と中身を自分で確認できるようになったら、次は自分の仕事の中で動かしながら身につける段階です。そのための学びの場として、月額1,980円からの学習コミュニティ「AI駆動ラボ」があります。自分の手でClaude Codeを使えるようになることを目的にした場なので、関心があれば見てみてください。