Claude Codeのメモリ機能完全解説【2026年最新】:CLAUDE.md・auto memory・MEMORY.mdの仕組みと使い方
前回はClaude CodeのHooks機能で自動化する方法を紹介しましたが、今回はセッションをまたいだ記憶の仕組み——つまり「Claude Codeのメモリ」を深掘りしていきます。
室谷Claude Codeを使い込んでいくと、最初に壁になるのが「記憶」の問題なんですよね。新しいセッションを開くたびに、プロジェクトの背景をまた一から説明しなきゃいけない。
MYUUUでも最初は全員これで詰まってました。
テキトー教師コミュニティのメンバーさんからも一番多く聞くのがそれですね。「昨日完璧にできてたのに、今日開いたら全部忘れてる」って。
Claude Codeはセッションごとにコンテキストウィンドウがリセットされる設計なので、何もしないと毎回初見の状態になります。
室谷でも実はClaude Codeには、この問題を解決するメモリ機能が2種類あるんですよね。CLAUDE.mdという「人間が書く指示書」と、auto memory(MEMORY.md)という「Claudeが自分で書く記憶」。
この2つをちゃんと理解すると、開発体験がガラッと変わります。
テキトー教師整理すると、Claude Codeのメモリシステムはこういう構造です。
| CLAUDE.md | Auto memory(MEMORY.md) |
|---|
| 誰が書くか | 人間(あなた) | Claude自身 |
| 何が入るか | ルール・指示・プロジェクト情報 | 学習・発見・パターン |
| スコープ | プロジェクト・ユーザー・組織 | プロジェクト単位(git repo) |
| 読み込みタイミング | セッション開始時(毎回全文) | セッション開始時(先頭200行か25KB) |
| 主な用途 | コーディング規約・ワークフロー | ビルドコマンド・デバッグの知見 |
室谷この表を見ると「じゃあCLAUDE.mdに全部書けばいいじゃん」ってなるんですが、そうじゃないところが面白くて・・・
テキトー教師そうなんですよ。CLAUDE.mdは人間が意識的に書く「ルールブック」で、auto memoryはClaudeが勝手に学習してくれる「フィールドノート」なんです。
この2つは補完関係にあって、両方うまく使うのが本来の設計です。
室谷海外のAIエンジニアコミュニティでも「auto memoryに任せすぎてCLAUDE.mdがスカスカになってる人」と「CLAUDE.mdに詰め込みすぎてパフォーマンスが落ちてる人」の2パターンよく見るんですよね。どちらも片方しか使えてない状態です。
CLAUDE.mdファイルの仕組み

テキトー教師まずCLAUDE.mdから説明しましょう。これはプロジェクトのルートに置くMarkdownファイルで、Claude Codeを起動するたびに自動で読み込まれます。
室谷CLAUDE.mdに書く内容って何でもありなんですが、実際には3つのカテゴリに分けると整理しやすいですね。プロジェクトのアーキテクチャ情報、コーディング規約、よく使うコマンド。
この3つです。
テキトー教師
# プロジェクト概要
Next.js + TypeScript + Supabaseで構築したSaaSアプリ。
API routesはsrc/app/api/に集約している。
# ビルドコマンド
- 開発: npm run dev
- テスト: npm test
- ビルド: npm run build
# コーディング規約
- インデントは2スペース
- コンポーネントはsrc/components/に配置
- 型定義は必ず付ける
室谷このくらいシンプルで十分なんですよね。むしろ詰め込みすぎると逆効果で・・・
テキトー教師そこ、すごく重要です。公式ドキュメントでも「200行以下を目標にしてください」と明記されています。
理由は2つあって、長すぎるとコンテキストを圧迫することと、指示が多すぎると遵守率が下がるという問題があります。
室谷「指示が多いほど無視される」っていうのは直感に反するんですが、LLMの性質としてそうなんですよね。短く、具体的で、検証可能な指示を書く。
「コードを綺麗に書いてください」ではなく「インデントは2スペース」のように。
CLAUDE.mdを置く場所と優先順位
テキトー教師CLAUDE.mdはどこに置くかによってスコープが変わります。これ、意外と知られていないポイントで、講座でも必ず説明しています。
室谷場所によって「誰に適用されるか」「何のプロジェクトに適用されるか」が変わってくるんですよね。
テキトー教師
| スコープ | 場所 | 主な用途 |
|---|
| 組織全体 | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md | 全社共通のセキュリティポリシー・規約 |
| プロジェクト | ./CLAUDE.md または ./.claude/CLAUDE.md | チーム共有の設定(gitで管理) |
| ユーザー | ~/.claude/CLAUDE.md | 個人の好みや設定(全プロジェクト適用) |
| ローカル | ./CLAUDE.local.md | 個人のプロジェクト固有設定(.gitignore推奨) |
室谷MYUUUでは組織レベルのCLAUDE.mdにセキュリティ関連の注意事項を入れて、プロジェクトレベルで各サービスのアーキテクチャ情報を入れています。この使い分けが運用上かなり重要で・・・
テキトー教師特にチームで使う場合、プロジェクトのCLAUDE.mdはgitで管理してチーム全員が同じ設定で動くようにしておくのが基本ですね。個人の好みだけCLAUDE.local.mdに書いて.gitignoreに追加しておく。
このパターンが一番トラブルが少ないです。
室谷ローカルファイルの使い方って知らない人が多いですよね。「自分だけが使うサンドボックスのURL」とか「テスト用のAPIキーのパス」みたいな、チームに共有したくない情報はCLAUDE.local.mdに書くんですよ。
/initコマンドで自動生成する
テキトー教師最初からCLAUDE.mdを書くのが大変という場合、/initコマンドを使うとClaudeがコードベースを分析して自動で作ってくれます。
室谷これ、かなり便利なんですよ。既存プロジェクトにClaude Codeを導入するとき、まず/initを実行してドラフトを作ってもらってから、足りない情報だけ手で追記するのが効率的ですね。
テキトー教師環境変数CLAUDE_CODE_NEW_INIT=1をセットすると、インタラクティブな多段階フローが使えます。「CLAUDE.mdを作りますか?スキルも設定しますか?Hooksも?」みたいに段階的に確認しながら設定できて、初めて使う人でもわかりやすいです。
.claude/rules/でルールを細分化する
室谷プロジェクトが大きくなってくると、CLAUDE.mdだけでは管理しきれなくなるんですよね。フロントエンドとバックエンドでルールが違う、APIディレクトリだけ特別なルールがある、みたいな状況が出てくる。
テキトー教師そういうときのための機能が.claude/rules/ディレクトリです。ここにMarkdownファイルを置くと、ファイルパスによってルールを動的に切り替えられます。
---
paths:
- "src/api/**/*.ts"
---
# APIルール
- 全エンドポイントに入力バリデーションを付ける
- エラーレスポンスは統一フォーマットで返す
- OpenAPIコメントを必ず書く
室谷これでsrc/api/配下のファイルを触るときだけこのルールが読み込まれる、と。
テキトー教師そうです。pathsを指定しないルールは全セッションで読み込まれますが、paths付きは対象ファイルを開いたときだけ発動します。
不要なルールがコンテキストを圧迫しないので、大規模プロジェクトでは特に効いてきます。
室谷これ、海外でもかなり評判いいですよね。モノレポで複数チームが同じリポジトリを使っていると、他のチームのCLAUDE.mdが混ざってくる問題があって・・・そういうときにclaudeMdExcludes設定と組み合わせると綺麗に解決できます。
Auto memory(MEMORY.md)の仕組み

室谷次はauto memoryの話をしましょう。Claude Codeのメモリ機能の中でも、claude code memory(auto memory)として一番検索されているトピックで・・・意外と仕組みを知らないまま使っている人が多いんですよね。
テキトー教師そうですね。auto memoryはClaude Code v2.1.59以降で使える機能で、Claudeが自分で学習内容を記録していく仕組みです。
デフォルトで有効になっていますが、存在を知らないまま使っている人も多いです。
室谷仕組みとしては、セッション中にClaudeが「これは次のセッションでも使える情報だ」と判断すると、自動でファイルに書き込んでいくんですよね。
テキトー教師保存場所は~/.claude/projects/<project>/memory/ディレクトリです。Gitリポジトリのパスから自動でproject名が決まるので、複数プロジェクトが混在することはありません。
室谷「Writing memory」って表示が出るとき、まさにClaudeがそのディレクトリにファイルを書き込んでいる状態ですよね。
テキトー教師そうです。ディレクトリの中身はこういう構造になっています。
~/.claude/projects/<project>/memory/
├── MEMORY.md # インデックスファイル(毎セッション先頭から読まれる)
├── debugging.md # デバッグパターンのノート
├── api-conventions.md # API設計の決定事項
└── ... # Claudeが必要に応じて作るトピックファイル
室谷MEMORY.mdがインデックスとして機能して、詳細はトピックファイルに分離されるんですね。これ、ちゃんとした設計だな・・・と思って。
テキトー教師200行という制限があるのも理由があって、MEMORY.mdを軽量に保って毎セッションで確実に読み込めるようにしているんです。詳細情報はトピックファイルに移して、Claudeが必要なときだけ読みに行く設計です。
auto memoryが記録する内容
室谷じゃあ実際にClaudeはどんな情報を記録するのか、ですが・・・
テキトー教師公式ドキュメントによると、以下のようなものが対象になります。
- ビルドコマンドやテスト実行手順
- デバッグで発見したパターンや注意点
- コード規約や命名ルールで発覚したこと
- 個人の好み(「npmよりpnpmを使う」など)
室谷「あなたのコーディングのクセを学習していく」イメージですよね。「この人はTypeScript strictモードで書く人だ」「このプロジェクトはESMじゃなくてCJSだ」みたいなことを勝手に覚えていく。
テキトー教師重要なのは、Claudeは毎セッション必ず何かを記録するわけではない、という点です。「次のセッションでも役立つ情報」だと判断したときだけ書き込む設計になっています。
室谷これ、賢いですよね。毎回書き込んでたら200行制限がすぐ埋まってしまう。
/memoryコマンドで内容を確認する
テキトー教師auto memoryの内容を確認・編集するには、Claude Codeのセッション内で/memoryコマンドを使います。これはclaude code memory mdを直接確認できる唯一の公式インターフェースですね。
室谷
テキトー教師セッションで読み込まれているCLAUDE.md・CLAUDE.local.mdのリスト、auto memoryのON/OFFトグル、そしてメモリフォルダへのリンクが表示されます。そこからファイルを選択してエディタで開けます。
室谷「Claudeが何を覚えてるか」を人間がちゃんと監査できる設計になっているのは良いですよね。AIが勝手に何かを学習して、それが蓄積されていく——ちょっと気味悪くなりそうなところを、透明性を持って設計している。
テキトー教師そうですね。MEMORY.mdは普通のMarkdownファイルなので、エディタで直接編集も削除もできます。
Claudeが覚えた情報を「これは不要だな」と判断したら消せる。全部人間の管理下にあります。
室谷あとは「記憶させたいことを口頭で言う」パターンもよく使いますね。「常にpnpmを使って、npmは絶対使わないで」って言うと、Claudeがそれをauto memoryに保存してくれる。
テキトー教師そうです。逆に「CLAUDE.mdに追記して」と指示すれば、auto memoryではなくCLAUDE.mdに書いてくれます。
どちらに記録させるかを人間がコントロールできる点が重要です。
auto memoryの有効・無効を切り替える
室谷デフォルトはONですが、無効にしたい場合はどうするんですか?
テキトー教師いくつか方法があります。まず/memoryコマンドから画面上でトグルできます。
設定ファイルで無効化したい場合は、.claude/settings.jsonか~/.claude/settings.jsonに書きます。
{
"autoMemoryEnabled": false
}
室谷
テキトー教師そうです。CLAUDE_CODE_DISABLE_AUTO_MEMORY=1を設定すれば無効化できます。
CI/CDで使う場合や、学習させたくないプロジェクトで使えます。
室谷
テキトー教師はい。autoMemoryDirectoryという設定で、メモリファイルの保存先を変更できます。
GitHubで管理したい場合など、リポジトリ内のパスを指定することもできます。
{
"autoMemoryDirectory": "~/shared-memory-dir"
}
室谷ただしこの設定はproject設定(.claude/settings.json)からは使えなくて、ユーザー設定かローカル設定からのみ有効です。セキュリティ上の理由でproject設定から弄れないようにしてあるんですよね・・・チームの誰かがメモリの書き込み先を変更して意図しない場所にデータが溜まる、みたいなリスクを防ぐための設計だと思います。
サブエージェントのメモリ管理
テキトー教師実はClaude Codeのサブエージェントも、それぞれ独自のauto memoryを持てます。これ、知ってる人少ないですよね。
室谷これはかなり高度な使い方ですね。サブエージェントが自分の担当領域の知識を学習し続けるイメージで・・・
テキトー教師たとえばテスト専用のサブエージェントを作れば、「このプロジェクトでよく出るテストエラーのパターン」を自分でどんどん覚えていく。次にそのサブエージェントを呼び出したとき、過去の経験を踏まえたより精度の高い対応ができるわけです。
室谷サブエージェントの設定ファイルにメモリ関連の設定を書くんですよね。
テキトー教師そうです。サブエージェントのCLAUDE.mdやskillファイルの中でメモリの保存先や有効・無効を個別に設定できます。
メインのエージェントとサブエージェントで別々のメモリを持つ設計も全然ありです。
室谷MYUUUでも試してますよ。コードレビューを担当するサブエージェントが、プロジェクト固有の「よくあるレビュー指摘事項」を学習し続ける仕組みを作ってます。
まだ実験段階ですが、かなり面白い結果が出てきています。
basic memoryとMCPでの外部メモリ連携
室谷ここまでClaude Code組み込みのメモリ機能を説明しましたが、別の選択肢として外部のMCPサーバーを使う方法もあるんですよね。
テキトー教師そうですね。claude code memory mcpという文脈で注目されているのが「basic memory」というMCPサーバーです。
Claude Codeのビルトインauto memoryとは別に、外部のナレッジベースにメモリを保存できます。
室谷basic memoryって具体的にどういう仕組みなんですか?
テキトー教師ローカルのMarkdownファイルをデータベースとして管理して、Claude CodeがMCPプロトコルを通じてそこに読み書きできるようにするサーバーです。GitHubリポジトリを介して複数マシン間で同期できるのが大きなメリットですね。
室谷Claude Codeのビルトインauto memoryはマシンローカルで同期できないという制約がありますが・・・会社のPCと自宅のPCで同じプロジェクトを触る場合に、メモリが引き継げないのは結構痛い。
テキトー教師その問題への回答がbasic memoryのようなMCPサーバーを使うアプローチですね。あとはObsidianのvaultをMemory用に使う方法や、Notion・Linear等のSaaSとMCPで連携するパターンも出てきています。
室谷MYUUUでもAWS Bedrockを使ってる場合はclaude code memory mcpの設定が変わってくるんですが・・・基本的にMCPの設定さえ正しく書けば、どのストレージでもメモリとして使えるのが面白いですよね。
テキトー教師ただ、こういう外部MCPを使った高度なメモリ設定は、まずビルトインのauto memoryとCLAUDE.mdを使いこなしてから入るのをおすすめします。基本を飛ばして複雑な設定に入ると、何が問題かわからなくなります。
よくあるトラブルと解決法
テキトー教師ここからは実際によくあるトラブルを見ていきましょう。コミュニティで頻出の質問パターンです。
室谷これ大事ですよね。せっかくCLAUDE.mdやauto memoryを設定しても、うまく動かないケースがある。
CLAUDE.mdの指示が無視される
テキトー教師一番多いのがこれです。「CLAUDE.mdに書いたのにClaudeが従わない」というケース。
室谷
テキトー教師3つあります。まず指示が曖昧すぎる。
「コードを綺麗に書いてください」ではなくて「インデントは2スペース、セミコロン必須」のように具体的に書く必要があります。次にCLAUDE.mdが200行を超えていて、重要な指示が後半に埋まっている。
3つ目は複数のCLAUDE.mdで矛盾した指示が書かれているケースです。
室谷確認方法として、セッション内で/memoryを実行してCLAUDE.mdが実際に読み込まれているか確認するのが最初のステップですよね。
テキトー教師そうです。リストに出てこないCLAUDE.mdはClaudeに見えていないので、どんな内容を書いても意味がありません。
置く場所が正しいか確認する必要があります。
/compact後に指示が消える
室谷これも質問多いですよね。「/compactしたらさっきまで守ってた規約を守らなくなった」。
テキトー教師これはCLAUDE.mdに書いていた内容が実は会話の中で口頭で伝えていた内容だった、というケースが多いです。CLAUDE.mdはcompact後も完全に維持されますが、会話の中で「この件についてはこうして」と言ったことはcompactで消えます。
室谷なので、セッションを越えて維持したい指示は必ずCLAUDE.mdかauto memoryに書く、というルールを徹底するのが大事ですね。
テキトー教師まさに。「会話でだけ伝えたことは一時的なルール」「ファイルに書いたことが永続的なルール」という区別を意識すると整理しやすくなります。
auto memoryが膨らんで制限を超える
室谷auto memoryの200行制限、実際に超えることってあるんですか?
テキトー教師使い込んでいると超えてきます。超えた分はセッション開始時に読まれないので、重要な情報がトランケートされる可能性があります。
室谷
テキトー教師2つあります。/memoryコマンドからメモリファイルを直接開いて、不要な内容を手動で削除する。
もしくは、CLAUDE.mdに「重要な決定事項」を移して、auto memoryには新しい情報だけ残す。定期的な棚卸しが必要です。
室谷200行という制限は現時点では変更できないので・・・適切なサイズに保つ運用を人間側で意識する必要がありますね。
チームでのClaude Codeメモリ運用
室谷このツイートで書いたんですが、CLAUDE.mdの中身が「会話の毎ターンに再注入される」という話、チーム運用を考えると結構インパクトある話で・・・
テキトー教師そうですね。CLAUDE.mdの文字数がそのままAPIコストに影響してくるんです。
チームで長大なCLAUDE.mdを全員が使っていると、会話のターン数×CLAUDE.mdのサイズ分だけトークンを消費し続ける。
室谷ただプロンプトキャッシュで実コストはかなり軽減されているので、過度に気にしすぎなくて良いんですが・・・それでも「不要な情報を入れない」という方針は大事ですよね。
テキトー教師チームでの共有ルールとして、私が推奨しているのはこの3点です。
- プロジェクトのCLAUDE.mdはgitで管理して全員同じものを使う
- 個人設定はCLAUDE.local.md(.gitignore済み)に書く
- CLAUDE.mdのレビューをPRプロセスに組み込む(誰でも追記できる状態は避ける)
室谷PRプロセスに組み込むのはいいアイデアですね。「Claudeへの指示」を普通のコードと同じように変更管理する発想。
テキトー教師CLAUDE.mdはエンジニアリングの成果物として扱うべきで、誰かが思いついたら即時追記、というのはやめた方がいいです。内容が増えれば増えるほど「どの指示が今有効か」がわかりにくくなります。
室谷大きな組織では組織レベルのCLAUDE.mdにセキュリティポリシーや全社規約を入れて、それをIT部門がMDM配布する運用が海外では出てきてますよね。
テキトー教師enterprise deploymentの文脈で特に注目されていますよね。「Claudeの行動規範をインフラとして管理する」という発想。
これからの企業でのAI活用の標準的なアプローチになっていくと思います。
まとめ:CLAUDE.mdとauto memoryの使い分け
室谷今回の内容を整理すると、Claude Codeのメモリ機能はCLAUDE.mdとauto memoryの2本立てで考えるのが基本ですね。
テキトー教師ルールとして意識的に決めたことはCLAUDE.mdへ、Claudeが使いながら発見したことはauto memoryへ。この住み分けが崩れると管理が難しくなります。
室谷そして両方に共通するのは「短く、具体的に、矛盾なく」ですよね。量より質という話。
テキトー教師それと、定期的な棚卸しを忘れずに。CLAUDE.mdもauto memoryも「書いたら終わり」ではなく、プロジェクトの進化に合わせて更新していく生きたドキュメントです。
室谷Claude Codeのメモリ機能をうまく使うと、セッションを越えた学習が積み重なって、使えば使うほど精度が上がっていく感覚がありますよね。「長期記憶を持つAIアシスタント」という理想に、現時点でかなり近づいてきていると思います。
テキトー教師一方で、完全に自動化できるものでもないので・・・人間がある程度関与して、記憶の内容を管理する責任があります。そのバランスをどう取るか、という話が今後さらに重要になってくると思います。
よくある質問(FAQ)
claude code memory bankって何ですか?
「Memory Bank」はClaude Codeのビルトイン機能ではなく、コミュニティで広まったベストプラクティスの呼称です。プロジェクトルートにmemory-bank/というディレクトリを作り、プロジェクト概要・技術スタック・進捗・決定事項などをMarkdownで整理して保存する手法で、CLAUDE.mdからそれらをimportして使います。特定のツールやプラグインではなく、ファイル設計のパターンです。
CLAUDE.mdとMEMORY.mdの違いは何ですか?
CLAUDE.mdは人間が書く指示書で、コーディング規約・アーキテクチャ情報・ワークフローなどを記述します。MEMORY.mdはauto memoryの機能でClaudeが自動生成するファイルで、~/.claude/projects/<project>/memory/MEMORY.mdに保存されます。前者は人間が管理し後者はClaudeが管理する、という役割分担があります。
auto memoryを無効にすることはできますか?
できます。/memoryコマンドのトグル、設定ファイルの"autoMemoryEnabled": false、環境変数CLAUDE_CODE_DISABLE_AUTO_MEMORY=1の3つの方法があります。
claude code memory bankの設定方法を教えてください。
前述の通り、memory bankはビルトイン機能ではなく設計パターンです。memory-bank/ディレクトリを作成して、projectBrief.md(プロジェクト概要)・techContext.md(技術スタック)・progress.md(進捗)・decisionLog.md(決定事項)などのファイルを置き、CLAUDE.mdから@memory-bank/projectBrief.mdのようにimportします。
セッションをまたいでClaude Codeの記憶を維持するには?
CLAUDE.mdに重要なコンテキスト・ルールを書き、auto memoryを有効にしておくことが基本です。さらに確実に維持したい情報は毎セッション開始時に「前回の続きを確認してください」とCLAUDE.mdのパスを指定して読み込ませるか、メモリ系のMCPサーバー(basic memoryなど)を組み合わせる方法もあります。
出典