Auto Memory Claude Code: Apa yang Diingat Claude dan Kenapa

Catatan yang Claude tulis untuk dirinya sendiri berdasarkan koreksi dan preferensi Anda, disimpan sebagai markdown per repository. Ia mencatat empat jenis: siapa Anda, umpan balik yang Anda beri, konteks proyek yang tak bisa diturunkan dari kode, dan di mana menemukan informasi di luar proyeknya. Ia menyala secara bawaan dan tiap file berupa teks biasa yang bisa Anda sunting.
Di sebuah direktori memori di bawah direktori konfigurasi Claude Anda, satu per proyek, dengan file indeks dan satu file per topik. Nama proyeknya datang dari repository git, jadi setiap worktree repo yang sama berbagi satu direktori. Sebuah kunci settings bisa memindahkan lokasinya, dan ia lokal ke mesin, bukan tersinkron.
Hanya file indeksnya, dibatasi 200 baris atau 25KB pertama, mana yang lebih dulu. File topiknya dibaca sesuai kebutuhan ketika Claude memerlukannya. Isi yang melewati batasnya tidak dimuat, jadi indeks yang kebesaran diam-diam kehilangan apa pun yang jatuh di bawah potongannya — dan itulah hal pertama yang dicek kalau memorinya tampak berhenti bekerja.
Jalankan perintah memory, yang mendaftar lokasi memori Anda, membiarkan Anda membuka file mana pun di editor, dan memberi jalan masuk ke folder memorinya. Semuanya markdown biasa, jadi Anda bisa membaca, menyunting, atau menghapus apa pun. Sapuan retensi transkrip mengecualikan direktori ini, jadi memorinya bertahan sampai diubah.
Setel lewat perintah memory, yang menulis setelannya ke file settings pengguna Anda, atau setel kunci yang sama di settings satu proyek untuk mematikannya di sana saja. Ada juga environment variable yang mematikannya. Catat bahwa memori adalah konteks, bukan penegakan — untuk aturan yang harus berlaku, pakai hook.

Ringkasan Utama
Auto memory adalah sekumpulan catatan markdown yang Claude tulis untuk dirinya sendiri, per repository, dari koreksi dan preferensi Anda. Hanya file indeksnya yang dimuat di awal tiap sesi — 200 baris atau 25KB pertama, mana yang lebih dulu — dan file topiknya dibaca sesuai kebutuhan. Ia menyala secara bawaan, dan tiap file berupa teks biasa yang bisa Anda baca, sunting, atau hapus.
Kali pertama saya menyadarinya, sesi yang baru saja saya mulai sudah tahu bahwa saya lebih suka build dan typecheck dijalankan sebelum apa pun didorong, dan bahwa saya tidak mau tangkapan layar sebagai verifikasi. Saya menyebut keduanya berminggu-minggu sebelumnya, di sesi berbeda, sekali masing-masing. Tak ada yang ajaib soal itu, dan memahami cara kerjanya ternyata penting, karena catatannya berupa file dan file bisa keliru.
Tulisan ini membahas dua sistem memori dan siapa menulis apa, empat jenis catatan yang disimpan Claude berikut yang sengaja dilewatkannya, di mana file-nya tinggal dan batas apa yang tidak dilintasinya, batas indeks yang menentukan apa yang benar-benar dimuat, cara mengaudit dan menyuntingnya, serta cara mematikannya per proyek atau seluruhnya.
Claude Code punya dua mekanisme memori yang saling melengkapi, keduanya dimuat di awal tiap percakapan, dan keduanya diperlakukan sebagai konteks ketimbang konfigurasi yang ditegakkan. Poin terakhir itu lebih penting dari kedengarannya: tak satu pun merupakan jaminan. Untuk memblokir sebuah aksi terlepas dari apa yang diputuskan Claude, jawabannya sebuah hook, bukan catatan.
Dua sistem itu berdampingan:
| Sifat | File CLAUDE.md | Auto memory |
|---|---|---|
| Siapa menulisnya | Anda | Claude |
| Apa isinya | Instruksi dan aturan — standar, alur kerja, arsitektur | Pelajaran dan pola — preferensi Anda dan koreksi yang Anda beri |
| Cakupan | Proyek, pengguna, atau organisasi, dalam urutan pemuatan yang terdokumentasi | Per repository, dibagi ke setiap worktree-nya |
Claude mencatat jenisnya di sebuah field frontmatter, dan keempatnya sengaja sempit. Mengetahuinya adalah cara tercepat memperkirakan apakah sesuatu yang Anda ucapkan akan diingat:
Dua pengecualian melakukan sebagian besar pekerjaan menjaga ini tetap berguna. Claude melewati apa pun yang bisa diturunkan dari basis kode — arsitektur, path file, bagaimana sebuah bug diperbaiki — dan apa pun yang sudah dikatakan file CLAUDE.md Anda. Ia juga tidak menyimpan sesuatu tiap sesi; ia menimbang apakah informasinya akan membantu di percakapan mendatang.
Tiap proyek mendapat sebuah direktori di bawah direktori konfigurasi Claude Anda, dan nama proyeknya datang dari repository git ketimbang dari direktori kerja — itulah kenapa setiap worktree repo yang sama berbagi satu set memori. Auto memory bersifat lokal ke mesin: ia tidak berpindah ke mesin lain atau ke cloud environment.
~/.claude/projects/<project>/memory/
├── MEMORY.md # the index. First 200 lines OR 25KB,
│ # whichever comes first, loaded into
│ # EVERY session
├── user_role.md # one memory per topic file
├── feedback_testing.md # read on demand, never at startup
└── …
# <project> comes from the GIT REPOSITORY, so every worktree and
# subdirectory of the same repo shares one memory directory.
# Outside a repo, the project root is used instead.
{ "autoMemoryDirectory": "~/my-custom-memory-dir" }
# absolute or ~/ only; honoured from any settings scope, and in a
# project settings file it follows the workspace trust rule
# The retention sweep that deletes old transcripts EXCLUDES this
# directory. Memories stay until you or Claude edits them.Hanya file indeksnya yang dimuat saat sesi mulai, dibatasi 200 baris atau 25KB. File topiknya dibaca sesuai kebutuhan dengan tool file biasa ketika Claude memerlukannya. Desain itulah yang membuat seluruh sistemnya murah — satu indeks ringkas di tiap sesi, detail diambil hanya ketika relevan — dan itulah kenapa indeksnya punya aturan yang tak dimiliki file topiknya.
Isi yang melewati batasnya tidak dimuat, secara senyap. Ketika indeksnya mendekat, Claude Code mengingatkan Claude untuk memendekkannya: satu baris per entri, detail dipindahkan ke file topik, entri basi digabung atau dibuang. Ketika ia melewatinya, penulisannya tetap berhasil tapi sebuah error menyuruh Claude menulis ulang indeksnya, karena semua yang melewati batasnya dibuang di pemuatan berikutnya. Kalau memori Anda tampak berhenti bekerja, indeks yang kebesaran adalah hal pertama yang dicek.
Semua di sini berupa markdown biasa yang Anda miliki. Perintah memory mendaftar lokasi CLAUDE.md dan memori Anda, membuka salah satunya di editor Anda, menyalakan-mematikan auto memory, dan memberi jalan masuk ke folder memorinya sendiri. Membaca apa yang menumpuk setelah beberapa minggu layak dilakukan setidaknya sekali — sebagian akan lebih spesifik dari yang Anda kira.
/memory # browse and open every memory file, and
# toggle auto memory on or off
{ "autoMemoryEnabled": false } # user settings, or one project's
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
# Ask for something to be remembered in plain language:
# "always use pnpm, not npm"
# "remember that the API tests need a local Redis"
#
# To put it in CLAUDE.md instead, say so: "add this to CLAUDE.md".
# The two are different systems and Claude picks the one you name.Anda juga bisa sekadar meminta. Menyebut bahwa Anda selalu memakai satu package manager ketimbang yang lain, atau bahwa tes API-nya butuh database lokal berjalan, akan disimpan. Kalau Anda mau instruksinya di CLAUDE.md — karena ia harus dibagi ke tim lewat version control — katakan itu secara tegas, dan Claude menaruhnya di sana ketimbang di catatannya sendiri.
Auto memory percakapan utama tidak dimuat ke subagent. Pengecualiannya adalah fork, yang mewarisi percakapan induk dan system prompt-nya sehingga membawanya ikut. Sebuah subagent bisa memelihara auto memory-nya sendiri ketika dikonfigurasi begitu, dan itu direktori terpisah — jadi peninjau khusus menumpuk pelajarannya sendiri tanpa mencampurnya ke milik Anda.
Satu detail praktis membuat ini lebih aman diandalkan dari kelihatannya: sapuan retensi yang menghapus transkrip sesi lama secara eksplisit mengecualikan direktori memorinya. Memori Anda tidak diam-diam dibersihkan setelah sebulan bersama semua yang lain. Ia bertahan sampai Anda atau Claude menyunting atau menghapusnya, yang juga berarti memori yang keliru tetap keliru sampai ada yang menyadarinya.
Auto memory adalah konteks, bukan konfigurasi, dan ia tidak akan menegakkan apa pun. Kalau sebuah aturan harus berlaku di momen tertentu — sebelum tiap commit, setelah tiap suntingan file — tulis ia sebagai hook, yang berjalan sebagai perintah shell di peristiwa siklus hidup tetap terlepas dari apa yang diputuskan Claude. Memori membuat Claude lebih mungkin melakukan hal yang benar; hook membuat hal yang salah mustahil. Keduanya menyelesaikan masalah berbeda dan proyek yang serius soal sebuah aturan biasanya butuh keduanya.
Baca direktori memori Anda sekali, lebih awal, karena ia memberi tahu apa yang Claude kira Anda inginkan dan itu layak dicek terhadap apa yang benar-benar Anda inginkan. Jaga indeksnya tetap pendek — hanya bagian itulah yang memakan konteks Anda di tiap sesi. Dan ketika sesuatu mutlak harus terjadi, jangan bersandar pada catatan tentangnya: tulis hook-nya, dan biarkan memori menangani preferensi yang memang ia kuasai.
Sumber & bacaan lanjutan