AI活用

Claude Codeのメモリ(MEMORY.md)の使い方とCLAUDE.mdとの違い|索引を25KB以内に保つ書き方と、古い記録の直し方【2026年】

編集責任者佐藤翔太株式会社UrakaTA 代表取締役記事はAIが社内の記録から下書きし、別のAIが公式情報で照合、公開後に編集責任者が確認しています。
机の上に索引カードの箱と分厚いファイルが並び、会社員の手が1枚のカードに付箋を貼り、隣で小さなロボットが見ている俯瞰のイラスト
イラスト:AIで作成

この記事の結論

Claude Codeのメモリで毎回読まれるのは索引MEMORY.mdの先頭200行か25KBまでで、僕の会社の索引は141行・33KBと上限を超えていました。記録334件をCLAUDE.mdとどう分けるか、訂正のしかたまで。

目次9項目
  1. Claude Codeのメモリとは:AIが自分で書くメモと、毎回読まれる索引の組み合わせ
  2. MEMORY.mdの仕組み:毎回読まれるのは先頭200行か25KBまで
  3. 索引は1行に束ね、中身は1件1ファイル:MEMORY.mdとトピックの実物
  4. 2026年8月3日の訂正:古い記録は消さず、日付つきで上書きした
  5. 索引は9月に36KB、11月7日に33KB:MEMORY.mdが太る理由と削り方
  6. CLAUDE.md・rulesとメモリの使い分け:守らせる決まりはメモリに置かない
  7. メモリの設定と確認:/memoryでオンとオフ、保存先も変えられる
  8. まとめ
  9. よくある質問

【無料・メールだけ】Claude Code 2daysセミナー(第二の脳構築講座)の次回開催の案内を受け取る →

Claude Codeのメモリで僕に必要だったのは、覚えさせ方より「索引を細く保つこと」でした。会話のたびに読まれるのは索引の頭の部分だけで、334件ある中身は必要なときに開かれます。だから決まりはCLAUDE.mdとrulesに置き、メモリには経緯と訂正を残す形に分けています。

2026年11月7日に数えると、索引は141行・33,112バイトでした。社内の決まりの「140行未満」を1行超え、公式の25KBもバイトでは超えています。10月27日に105行・24.7KBまで削った後、11日で戻りました。

この記事では、メモリの仕組み、索引と中身の実物、8月3日の訂正のやり方、CLAUDE.md・rulesとの分け方を順に見せます。「AIに覚えさせたけれど、昔の間違いまで覚え続けていない?」と気になる方に向けて書きました。

Claude Codeのメモリとは:AIが自分で書くメモと、毎回読まれる索引の組み合わせ

Claude Codeのメモリとは、作業中に受けた指摘や好みをClaude自身がファイルに書き残し、次の会話で読み返す仕組みです。公式ドキュメントでは auto memory(自動メモリ)と呼ばれ、手元で動かす会話では最初からオンです。

人が書くCLAUDE.mdと並んで、会話の最初に読み込まれるもう1つの記憶です。違いを、公式の説明と僕の会社の数字で並べます。

項目CLAUDE.md自動メモリ
書く人人Claude
中身指示と決まり学んだことと傾向
効く範囲プロジェクト・ユーザー・組織リポジトリごと(worktreeでも共有)
会話の最初に読まれる量ファイル全体(4MiB以下)索引MEMORY.mdの先頭200行か25KBまで
僕の会社(2026年11月6〜7日)全体用181行・フォルダ用75行索引141行・中身のファイル334件

いちばん効いてくる違いは、毎回読まれる量です。CLAUDE.mdは丸ごと読まれますが、メモリは索引の頭しか読まれません。だから僕の会社では、メモリを中身の倉庫ではなく「どこに何があるかの目次」として使っています。

なお「claude メモリ」で調べると、チャットアプリ側のメモリの話も出てきます。この記事で扱うのは、Claude Codeの自動メモリです。

ChatGPTから記憶を移した話は、ChatGPTのメモリをClaudeへ移した手順に書きました。

MEMORY.mdの仕組み:毎回読まれるのは先頭200行か25KBまで

MEMORY.mdは自動メモリの索引で、会話の最初に読まれるのは先頭200行か25KBの、先に達したほうまでです。それより後ろは、起動時には読まれません。

保存場所はリポジトリごと、メモは4種類

保存先は ~/.claude/projects/<project>/memory/ です。<project> はGitリポジトリから決まるので、同じリポジトリならworktreeやサブフォルダでも1つのフォルダを共有します。

Claudeはメモを4種類に分け、ファイル先頭の type に書きます。user(役割や好み)、feedback(受けた指摘や確かめたやり方)、project(進行中の仕事や決定)、reference(外部の情報の置き場所)です。

コードから分かること(構成やファイルの場所、不具合の直し方)と、CLAUDE.mdにすでに書いてあることは保存しません。毎回の会話で必ず書くわけでもなく、次の会話で役に立つかで決めています。

自動メモリはその機械の中だけに保存され、ほかの機械やクラウドの環境とは共有されません。新しいMacへ移すなら、Claude Codeを新しいMacに移行する方法に写し方があります。

読まれるのは索引だけ、中身は必要なときに

索引の下には、1件1ファイルのトピックのファイルが並びます。トピックは起動時には読まれず、Claudeが必要になったときに通常のファイル操作で開きます。

画面に「Saved 2 memories」「Recalled 2 memories」と出たら、メモリのフォルダを書いたり読んだりした合図です。書き込んだ時刻は、ファイル先頭の modified の欄に残ります。

サブエージェントには、元の会話の自動メモリは読み込まれません。例外は、会話をそのまま引き継ぐforkです。サブエージェントに自前のメモリを持たせる設定もありますが、置き場所は別のフォルダになります。

上限を超えても、書き込みは止まらない

Claudeが索引を書き換えると、Claude Codeは200行と25KBの上限に照らして測ります。上限に近いと、1行1件にする・詳細はトピックへ移す・古い行はまとめるか消す、と短くするよう促します。

上限を超えた場合も、書き込み自体は成功します。そのうえで、索引を書き直すよう求めるエラーがClaudeに返ります。次の読み込みで、上限より後ろが落ちるためです。

上限があるのは索引だけです。CLAUDE.mdは4MiB以下なら全体が読まれます。メモリのファイルは、古い会話の記録を消す保存期間の掃除からも外されていて、自分かClaudeが消すまで残ります。

索引は1行に束ね、中身は1件1ファイル:MEMORY.mdとトピックの実物

僕の会社の索引は、関係の深いメモを1行に束ねた141行です。中身のトピックは334件ありました。

内訳はproject 224件・feedback 62件・reference 44件・user 4件です。2026年11月7日に、各ファイルの type を数えた値です。

索引の形を、案件名などを架空のものに置き換えて見せます。形はそのまま、1行に「リンク」と「—」の後ろの要点が並びます。

- [請求書の型](invoice-template.md) / [見積もりの型](estimate-template.md) — 日付は西暦で書く・型の並びを崩さない
- [サンプル案件](sample-project.md) — 🔴公開前に先方の確認が要る・正本=案件フォルダの引き継ぎメモ
- [空振りしたら即再実行](feedback-no-silent-stall.md) — 「やる」と言ったら同じ応答の中で動く

公式の説明は「1行に1件」ですが、僕の会社では関係の深いメモを「/」で1行に束ねています。141行の中に、トピックへのリンクが303本あります。

要点の頭の🔴は、間違えると事故になる注意の印で、索引の中に56か所あります。社内の決まりでは、🔴の要点は索引に残し、それ以外の詳しい話はトピックへ移します。

feedbackのメモは「Why」と「How to apply」で書く

中身のファイルの実物を1つ、一部を短くして見せます。2026年7月10日に、AIが「やります」と書いたまま実際には動いていなかった件で、僕が強く直してほしいと伝えたときのメモです。

---
name: feedback-no-silent-stall
description: ツール呼び出しが空振りしても止まらず自分で即再実行する
metadata:
  type: feedback
---

(7月10日に何が起きて、何を求められたか)

**Why:** テキストだけ喋って実際にはツールが実行されておらず、
確認のたびに時間を奪われていた。

**How to apply:**
- 「やる/確認する」と言ったターンでは、同じ応答内で実際にツールを呼ぶ
- 空振りに気づいたら、聞き返さず自分で正しい形で再送する
- 「完了しました」は実データ・実挙動で確かめてから言う

恒久ルール化済み: rules/07 + CLAUDE.md 最重要ルール6

このメモは、何が起きたか・なぜ直すのか・次からどう動くかの3つでできています。理由まで残っていると、少し違う場面でもAIが判断の筋を追いやすい、と僕は考えています。

7月10日の出来事そのものは、Claude Codeが途中で止まる・固まる時の切り分けに詳しく書きました。

メモの最後の行のとおり、決まりの本体はすでに規則のファイルとCLAUDE.mdへ移っています。この移し方は後の節で書きます。

2026年8月3日の訂正:古い記録は消さず、日付つきで上書きした

メモリに残った前提が間違っていたとき、僕の会社では記録を消さず、本文の頭に「日付+訂正」の段落を足して書き換えます。2026年8月3日に、projectのメモ1件をこの形で直しました。

7月11日のメモは、誤った前提で書かれていた

2026年7月11日、ある上位モデルの考え方の原則を、ほかのモデルでも再現できる形で保存しました。メモリにもprojectのメモを1件作り、当初は「そのモデルがサブスクから外れる前に残す」という前提で書いていました。

8月3日、この前提が事実誤認だと分かりました。そのモデルは8月3日の時点で現役で、提供終了の指定も、退役日の告知もありませんでした。手元の設定でも、選べるモデルに入っていることを確かめています。

訂正は、最初の1行のすぐ下に置いた

訂正の段落は、いつ何を保存したかを書いた最初の1行の、すぐ下に入れました。形を短くして見せます。

(最初の1行:7月11日に何を保存したか)

**2026-08-03 訂正**: 当初「〜が外れる前に」という前提で書いていたが事実誤認。
8月3日時点で現役(提供終了の指定・退役日の告知なし)。
位置づけは「安いモデルで規律を再現する移植」。重い局面は本体を使ってよい。

書いているのは4点です。もとの前提、それが誤りだったこと、今の事実、そして使い方がどう変わるかです。最後の点がないと、誤った前提から出た「本体は使わない」のような動き方が残ってしまいます。

このメモの先頭の modified は、2026年8月3日の11時8分(UTC)になっています。公式が書くとおり、書き込んだ時刻がそのまま残り、どの時点の事実かを後から読む側が判断できます。

同じメモには、9月3日にも1行足しています。後継のモデルが出たことへの注記と、社内の規則の中の言葉の意味を公式どおりに直した記録です。訂正は1回で終わらず、日付ごとに積み重なっていきます。

この訂正は、Claudeプロジェクト機能の使い方でも短く触れました。ここではメモリ側の書き方を見せています。

消さずに上書きする理由

誤った前提を消してしまうと、7月から8月の間に作った別の資料に同じ前提が残っていても、なぜそう書かれたのかを追えません。訂正の段落に「もとはこう考えていた」と残しておけば、古い資料を見つけたときに照らし合わせられます。

社内の決まりでも、ほかの会話が残した記録に古い・誤った情報を見つけたら、直せるものはその場で直すことにしています。メモリは1つの会話の持ち物ではなく、次の会話がみな読む共有の記録だと僕は考えています。

自分で直すときの4つの手順

  1. 会話の中で /memory を打ち、自動メモリのフォルダを開いて、該当のトピックを探す
  2. 本文の頭に「日付+訂正」の段落を足し、もとの前提・誤り・今の事実を書く
  3. 誤った前提から出た「使い方」の行も書き換える
  4. 索引のMEMORY.mdにその件の要点があれば、そこも直す

4番目を忘れやすいので注意してください。毎回読まれるのは索引の頭だけなので、トピックを直しても、索引の要点が古いままだと会話の最初に古い前提が入ります。

索引は9月に36KB、11月7日に33KB:MEMORY.mdが太る理由と削り方

索引は放っておくと太ります。僕の会社では9月に36KBあり、10月27日に105行・24.7KBまで削りましたが、11月7日には141行・33,112バイトに戻っていました。

数字の出所ごとに並べます。行数とバイト数は、それぞれの日に数えた実測です。

日付索引の大きさ出所
2026年9月16日36KB・189件(約16,500トークン)社内の規則ファイル(利用枠の点検)
2026年10月1日155行公開済みの記事の実測(ls・wc)
2026年10月27日105行・24.7KB社内ナレッジ(メモリの整理の記録)
2026年11月7日141行・33,112バイト(20,454字)この記事のために数えた値(wc・python)

9月16日の数字は、利用枠の減り方を調べる点検の中で出てきました。索引を縮めれば1回の会話あたり約8,000トークン減る見込みでしたが、何を捨てるかは僕が決めることとして、その場では削りませんでした。

この点検の話は、プロンプトの書き方とルール化の実録で少し触れています。ルールや記録は足すほど効きますが、そのぶん毎回の会話で読む量も増えます。

10月27日と11月2日に、要点をトピックへ移した

10月27日には索引を整理し、索引の行にあった説明の文を、112件のトピックの末尾の節へ移しました。索引には要点だけを残し、その日のうちに105行・24.7KBに収めています。

11月2日にも、38件のトピックへ「索引から移した要点」の節を足しました。それでも5日後の11月7日には141行に増え、社内の決まりの「1行1件・140行未満」を1行超えていました。

日本語の索引は、200行より先に25KBに当たる

日本語は1字がたいてい3バイトなので、行数より先にバイトの上限に当たります。僕の会社の索引も、行数は200行の7割なのに、バイトでは25KBを超えています。

33,112バイトは文字数にすると20,454字です。公式は「25KB」とだけ書いています。バイトで数えるなら、上限の内側は先頭のおよそ106〜109行目までです。実際にどこまで読まれているかは、この記事では確かめていません。

削るときの4つの手順

僕の会社で10月27日と11月2日にやったことを、手順にするとこうなります。

  1. 索引の行にある説明の文を、そのトピックの末尾の節へ移す
  2. 索引には「—」の後ろに要点を1つだけ残す
  3. 関係の深い行は「/」で1行に束ねる。🔴の注意だけは索引に残す
  4. 削った後に、行数とバイト数を測る
wc -l ~/.claude/projects/<project>/memory/MEMORY.md
wc -c ~/.claude/projects/<project>/memory/MEMORY.md

wc -l が行数、wc -c がバイト数です。200行と25KBの両方の内側に入っているかを見ます。

CLAUDE.md・rulesとメモリの使い分け:守らせる決まりはメモリに置かない

毎回必ず守らせたい決まりはCLAUDE.mdとrulesに、そう決めた経緯や指摘の理由・訂正はメモリに置きます。メモリは索引の頭しか毎回は読まれないので、決まりの本体を置く場所には向きません。

公式も役割を分けています。人が書く指示と決まりはCLAUDE.md、Claudeが学んだことはメモリです。「覚えておいて」と頼めばメモリに、「add this to CLAUDE.md」のように頼めばCLAUDE.mdに入ります。

メモリから決まりへ上げた2つの実例

7月10日のfeedbackのメモは、その後「恒久ルール化」されました。本体は実行の規律の規則ファイル(rules/07)に、入口の1行はCLAUDE.mdの最重要ルール6にあります。

メモリには、理由と経緯だけが残っています。

2026年10月4日に僕が出した「品質・時間・費用に関わることは必ず報告する」という指示も同じ形です。正本は文体の規則のファイル(rules/02)、写しは全体用のCLAUDE.mdで、メモリにはなぜ決めたかを残しました。

置き場所の早見表

何をどこに置くかを、僕の会社の例と並べます。迷ったら、上の行から順に当てはまるかを見てください。

置くもの置き場所僕の会社の例
全プロジェクトで毎回守らせる決まり全体用のCLAUDE.md応答は日本語、品質・時間・費用の報告
そのフォルダだけの決まりの入口フォルダ用のCLAUDE.md必ず読む規則13本の一覧
決まりの本体と手順rules/ のファイル実行の規律(rules/07)
決めた経緯・指摘の理由・訂正自動メモリのトピック7月10日の指摘のWhyとHow to apply
どこに何があるかの要点MEMORY.md1行に要点1つと🔴の注意

僕は、メモリから決まりへ上げるかどうかを「次の会話でも毎回守らせたいか」で決めるのがよいと考えています。上の2つの実例は、どちらもこの問いに「はい」と答えたものです。

なお、CLAUDE.mdもメモリも、Claudeは強制の設定ではなく文脈として扱います。必ず止めたい操作は、PreToolUseフックで止めます。

CLAUDE.mdの置き場所と書き方は、CLAUDE.mdとは?書き方と二層の分け方に書きました。

メモリの設定と確認:/memoryでオンとオフ、保存先も変えられる

中身の確認もオンとオフの切り替えも、会話の中で /memory を打てばできます。保存先を変えるときだけ、設定ファイルに1行足します。

  1. 会話の中で /memory を打つ。CLAUDE.mdなどの一覧と、自動メモリのトグル、メモリのフォルダを開く項目が出る
  2. メモリのフォルダを開き、トピックを読む・直す・消す。中身はただのMarkdown
  3. 止めたいときは /memory のトグルを切る。設定は ~/.claude/settings.json の autoMemoryEnabled に保存される
  4. 1つのプロジェクトだけ止めるなら、そのプロジェクトの設定ファイルに下の1行を書く。環境変数 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 でも止まる
  5. 保存先を変えるなら autoMemoryDirectory を書く。値は絶対パスか ~/ で始める
{
  "autoMemoryEnabled": false
}

1つ注意があります。バックグラウンドの会話や、別の会話から起動された会話では、トグルでオフにはできても、オンには戻せません。戻すときは、ターミナルで直接 claude を起動した会話でトグルを入れます。

秘密の値はメモリに書かせない

メモリは手元のMarkdownで、毎回の会話でAIに読まれます。パスワードや鍵のような値は、覚えさせたい内容に混ざっていても書かせず、置き場所だけを書く形にします。

まとめ

  • Claude Codeのメモリは、Claudeが自分で書くメモと、毎回読まれる索引MEMORY.mdの組み合わせ
  • 毎回読まれるのは索引の先頭200行か25KBまで。日本語の索引は、行数より先にバイトの上限に当たる
  • 索引には要点と🔴の注意だけを置き、説明はトピックへ移す。僕の会社は束ねて141行・トピック334件
  • 間違った記録は消さず、日付つきの訂正で上書きし、索引の要点もあわせて直す
  • 僕なら最初に、wc -c で自分の索引のバイト数を測るところから始めます

よくある質問

Claude Codeのメモリはどこに保存されますか?

プロジェクトごとに ~/.claude/projects/<project>/memory/ へ保存されます。<project> はGitリポジトリから決まるので、同じリポジトリならworktreeやサブフォルダでも1つのフォルダを共有します。保存はその機械の中だけで、ほかの機械やクラウドの環境とは共有されません。

MEMORY.mdはどこまで読み込まれますか?

会話の最初に読まれるのは、先頭200行か25KBのうち先に達したほうまでです。それより後ろは起動時には読まれません。索引からリンクしたトピックのファイルは起動時には読まれず、Claudeが必要なときに開きます。CLAUDE.mdは4MiB以下なら全体が読まれます。

Claude Codeの自動メモリをオフにするには?

会話の中で /memory を開き、自動メモリのトグルを切ります。設定は ~/.claude/settings.json の autoMemoryEnabled に保存されます。1つのプロジェクトだけ止めるならその設定ファイルに "autoMemoryEnabled": false を書き、環境変数 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 でも止められます。

CLAUDE.mdとメモリは、どちらに書けばいいですか?

毎回必ず守らせたい決まりはCLAUDE.mdに書きます。メモリは索引の頭しか毎回は読まれないためです。僕の会社では、決まりの本体はCLAUDE.mdと規則のファイルに置き、そう決めた経緯・指摘の理由・訂正をメモリに残しています。

メモリに間違った記録が残っていたら、どう直しますか?

メモリはただのMarkdownなので、/memory からフォルダを開いて直接直せます。僕の会社では誤りを消さず、本文の頭に「日付+訂正」の段落を足して、何が誤りで今の事実は何かを書きます。毎回読まれる索引の要点も、あわせて直します。

引用元・参考にした記事

  1. How Claude remembers your project出典Claude Code Docs参照