cd /news/large-language-models/claude-does-not-have-one-memory-syst… · home topics large-language-models article
[ARTICLE · art-85365] src=dev.to ↗ pub= topic=large-language-models verified=true sentiment=· neutral

Claude Does Not Have One Memory System: A Map of Chat, Claude Code, and the API

Anthropic's Claude AI does not have a single unified memory system; instead, chat, projects, Claude Code, and API-based applications each use distinct mechanisms with different storage and boundaries. The article maps these six 'containers' of memory, clarifying that memory and past chat search are separate features, and that context is not automatically shared across surfaces.

read8 min views1 publishedAug 3, 2026

Ask Claude, “Do you remember what we discussed before?” and the answer can feel inconsistent.

Sometimes it knows. Sometimes it does not.

Claude Code may carry a build command into tomorrow's session, then appear to forget it when you open another repository. Clone the same repository on another machine, and some of that context disappears again.

The problem is not simply that Claude has “good” or “bad” memory.

Claude does not have one unified memory system. Chat, projects, Claude Code, and applications built with the Claude API use different mechanisms. They store different things, in different places, and stop at different boundaries.

This article maps those mechanisms by asking four questions:

This article reflects the product documentation available on August 4, 2026. Claude's memory experience is currently being migrated, so your plan and settings screen may differ. Check the linked official documentation and the settings shown in your own account.

I also made a 15-slide Japanese overview on Speaker Deck.

“Six containers” is my way of organizing the product. It is not Anthropic's official taxonomy.

Surface Mechanism Who manages it? Effective boundary
Claude Chat Memory generated from non-project chats Claude Chats outside projects
Claude Chat Project memory Claude One specific project
Claude Chat Past chat search Claude searches when needed Non-project chats, or one specific project
Claude Code
CLAUDE.md , CLAUDE.local.md , and .claude/rules/*.md
You Depends on file location and launch directory
Claude Code Auto memory Claude Code One repository on one machine by default
An app using the Claude API Memory tool Claude requests operations; your app executes them Whatever your application defines

At a high level, the map looks like this:

Claude Chat                  Claude Code                 Your application

chat memory                  CLAUDE.md                   Claude API
project memory               .claude/rules/                 ↓
past chat search             auto memory                memory tool request
                                                             ↓
                                                        storage you control

There are no arrows between the three columns because memory is not automatically shared across them.

What Claude learned in a normal chat does not automatically become Claude Code's auto memory. A CLAUDE.md

file does not automatically appear in Claude Chat. The API memory tool is not an endpoint for reading the memory attached to your Claude Chat account.

The first distinction is easy to miss: memory and past chat search are separate features.

Memory keeps extracted information that may remain useful across conversations: your role, active work, communication preferences, tools, and technical preferences.

Past chat search does not pre-store a summary of everything. Claude searches the original conversation history when it needs a detail. When this happens, the search appears as a tool call in the conversation.

The practical difference is:

Anthropic documents both behaviors in Use Claude's chat search and memory to build on previous context.

As of this writing, Claude is moving users to an improved memory experience.

Past chat search has a different plan boundary: Anthropic currently lists it for Pro, Max, Team, and Enterprise plans.

This means “memory” and “search” should not be treated as two names for the same feature.

Claude can search:

It does not perform one account-wide search across both sides of that boundary.

These searches therefore fail by design:

Each project also has its own memory space and project summary. Project A does not inherit the memory accumulated outside projects, and Project B does not inherit Project A's memory.

That separation can feel like forgetting. It is also what prevents one client's context from leaking into another client's project.

In the improved memory experience, deleting or expiring the original conversation does not remove memory entries generated from it. You delete those entries from Settings > Memory, or reset memory entirely.

In the legacy experience, deleting a conversation removes it from the synthesized memory. Anthropic says the synthesis is updated within 24 hours.

If you only want to prevent search, you can turn off Search and reference chats in the relevant settings screen without deleting every conversation.

An Incognito Chat:

However, profile information such as custom styles and personal preferences can still be available inside the chat.

The conversation data is also not erased the moment you close the window. Anthropic says incognito chats are retained for 30 days by default. Enterprise organizations can configure a longer retention period, and Team and Enterprise exports include incognito chats.

So the right use case is a conversation you do not want carried into future chats, not “a place where sensitive information can never be retained.”

See Use incognito chats for the current retention and availability details.

Every Claude Code session begins with a fresh context window. Two mechanisms carry knowledge across sessions:

CLAUDE.md

files containing instructions you wroteAnthropic describes both in How Claude remembers your project.

CLAUDE.md

: instructions you control Use CLAUDE.md

for things you do not want to explain again:

The common locations have different scopes:

Scope Location Typical use
User ~/.claude/CLAUDE.md
Your preferences across all projects
Project
./CLAUDE.md or ./.claude/CLAUDE.md
Team-shared project instructions, usually committed to Git
Local ./CLAUDE.local.md
Personal instructions for this project

CLAUDE.local.md

is intended for personal project-specific instructions, but Git does not magically keep it private. Add it to .gitignore

if you do not want it committed.

These files are context, not hard enforcement. Claude Code concatenates the instructions it discovers. It does not treat a nearer file as a guaranteed override of every earlier instruction. Contradictory rules can therefore produce inconsistent behavior.

.claude/rules/

: split instructions and scope them by path For a larger project, you can split instructions into arbitrary Markdown files under .claude/rules/

:

.claude/
├── CLAUDE.md
└── rules/
    ├── testing.md
    ├── api-design.md
    └── frontend/
        └── accessibility.md

A rule without paths

front matter applies to the whole project. Add paths

to load it only when Claude works with matching files:

---
paths:
  - "src/api/**/*.ts"
---


- Validate input at every endpoint.
- Use the shared error response format.

My rule of thumb is:

CLAUDE.md

;.claude/rules/

for separate topics or path-specific instructions.Auto memory stores things Claude judges useful for future sessions: build commands, debugging findings, architecture notes, code style preferences, and workflow habits.

By default, each repository gets a local directory like this:

~/.claude/projects/<project>/memory/
├── MEMORY.md
├── debugging.md
├── api-conventions.md
└── ...

<project>

is derived from the Git repository. It is not a name you are expected to choose manually.

MEMORY.md

is the entry point. Claude Code loads its first 200 lines or 25 KB, whichever comes first, at the beginning of a conversation. More detailed files such as debugging.md

are read on demand.

The important boundary is the machine:

.gitignore

does not make it team-shared.Run /memory

to inspect or edit the files and toggle auto memory. Everything is plain Markdown.

I use this promotion rule:

CLAUDE.md

or .claude/rules/

;Auto memory is useful as a notebook. It should not become the only copy of knowledge your team depends on.

The Claude API memory tool is another mechanism with a similar name and a very different storage model.

Claude can request file operations such as create, read, update, and delete under a logical /memories

path. Your application executes those operations and returns the result.

The tool operates client-side. Your application decides:

Anthropic does not provide an account-level memory store for your application through this tool. The documentation is explicit: Claude requests the operation, while your infrastructure performs it against storage you control.

See the Memory tool documentation.

The product names will change. These boundaries are more durable.

Chat memory and Claude Code's instruction files and auto memory are separate systems. Context does not cross automatically in either direction.

Project memory and past chat search remain inside one project. Creating a project is also creating a memory boundary.

Claude Code auto memory is machine-local by default. Cloning the repository elsewhere does not bring it along.

What Claude remembers about you in Chat does not currently carry into Cowork. Cowork can maintain separate memory inside Cowork projects, scoped to each project. See Get started with Claude Cowork and Organize your tasks with projects in Claude Cowork.

Memory does not automatically move to another AI service or custom application. Claude's memory import is experimental and requires an explicit import flow. API-based applications must implement their own storage and identity boundaries.

What should persist? Put it here
Your role, communication style, and general working preferences Memory generated from non-project Claude Chat
Assumptions and decisions for one client or project A separate Claude project
Coding rules the whole team must follow Repository CLAUDE.md
Rules for one directory or file type
.claude/rules/*.md with paths
A local finding Claude Code may reuse Auto memory
A finding needed on another machine or by the team Promote it from auto memory into a committed file
A temporary conversation that should not affect future memory or search Incognito Chat, while respecting its retention policy
Persistent information for users of your own application The API memory tool plus storage and deletion behavior you implement

Duplicating the same fact everywhere does not necessarily make the system safer. It creates multiple copies that can become stale or contradictory.

Before repeating the information, ask:

“Does Claude remember?” is usually too broad a question.

The more useful question is:

Which memory system am I using, and where does its boundary stop?

Originally published in Japanese on Zenn: Claudeの「記憶」はどこにある? チャット・Claude Code・APIの境界を整理する

This English edition was translated and edited with AI assistance from a Japanese article that I carefully reviewed and revised. I remain responsible for the published content.

── more in #large-language-models 4 stories · sorted by recency
── more on @anthropic 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/claude-does-not-have…] indexed:0 read:8min 2026-08-03 ·