{"slug": "claude-does-not-have-one-memory-system-a-map-of-chat-claude-code-and-the-api", "title": "Claude Does Not Have One Memory System: A Map of Chat, Claude Code, and the API", "summary": "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.", "body_md": "Ask Claude, “Do you remember what we discussed before?” and the answer can feel inconsistent.\n\nSometimes it knows. Sometimes it does not.\n\nClaude 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.\n\nThe problem is not simply that Claude has “good” or “bad” memory.\n\n**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.\n\nThis article maps those mechanisms by asking four questions:\n\nThis 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.\n\nI also made a [15-slide Japanese overview on Speaker Deck](https://speakerdeck.com/yukihirokimuraj/claudeno-ji-yi-hadokoniaru-tiyatutoclaude-codeapinojing-jie-wozheng-li-suru).\n\n“Six containers” is my way of organizing the product. It is not Anthropic's official taxonomy.\n\n| Surface | Mechanism | Who manages it? | Effective boundary |\n|---|---|---|---|\n| Claude Chat | Memory generated from non-project chats | Claude | Chats outside projects |\n| Claude Chat | Project memory | Claude | One specific project |\n| Claude Chat | Past chat search | Claude searches when needed | Non-project chats, or one specific project |\n| Claude Code |\n`CLAUDE.md` , `CLAUDE.local.md` , and `.claude/rules/*.md`\n|\nYou | Depends on file location and launch directory |\n| Claude Code | Auto memory | Claude Code | One repository on one machine by default |\n| An app using the Claude API | Memory tool | Claude requests operations; your app executes them | Whatever your application defines |\n\nAt a high level, the map looks like this:\n\n```\nClaude Chat                  Claude Code                 Your application\n\nchat memory                  CLAUDE.md                   Claude API\nproject memory               .claude/rules/                 ↓\npast chat search             auto memory                memory tool request\n                                                             ↓\n                                                        storage you control\n```\n\nThere are no arrows between the three columns because memory is not automatically shared across them.\n\nWhat Claude learned in a normal chat does not automatically become Claude Code's auto memory. A `CLAUDE.md`\n\nfile 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.\n\nThe first distinction is easy to miss: **memory** and **past chat search** are separate features.\n\nMemory keeps extracted information that may remain useful across conversations: your role, active work, communication preferences, tools, and technical preferences.\n\nPast 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.\n\nThe practical difference is:\n\nAnthropic documents both behaviors in [Use Claude's chat search and memory to build on previous context](https://support.claude.com/en/articles/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context).\n\nAs of this writing, Claude is moving users to an improved memory experience.\n\nPast chat search has a different plan boundary: Anthropic currently lists it for Pro, Max, Team, and Enterprise plans.\n\nThis means “memory” and “search” should not be treated as two names for the same feature.\n\nClaude can search:\n\nIt does not perform one account-wide search across both sides of that boundary.\n\nThese searches therefore fail by design:\n\nEach 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.\n\nThat separation can feel like forgetting. It is also what prevents one client's context from leaking into another client's project.\n\nIn 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.\n\nIn the legacy experience, deleting a conversation removes it from the synthesized memory. Anthropic says the synthesis is updated within 24 hours.\n\nIf you only want to prevent search, you can turn off **Search and reference chats** in the relevant settings screen without deleting every conversation.\n\nAn Incognito Chat:\n\nHowever, profile information such as custom styles and personal preferences can still be available inside the chat.\n\nThe 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.\n\nSo 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.”\n\nSee [Use incognito chats](https://support.claude.com/en/articles/12260368-use-incognito-chats) for the current retention and availability details.\n\nEvery Claude Code session begins with a fresh context window. Two mechanisms carry knowledge across sessions:\n\n`CLAUDE.md`\n\nfiles containing instructions you wroteAnthropic describes both in [How Claude remembers your project](https://code.claude.com/docs/en/memory).\n\n`CLAUDE.md`\n\n: instructions you control\nUse `CLAUDE.md`\n\nfor things you do not want to explain again:\n\nThe common locations have different scopes:\n\n| Scope | Location | Typical use |\n|---|---|---|\n| User | `~/.claude/CLAUDE.md` |\nYour preferences across all projects |\n| Project |\n`./CLAUDE.md` or `./.claude/CLAUDE.md`\n|\nTeam-shared project instructions, usually committed to Git |\n| Local | `./CLAUDE.local.md` |\nPersonal instructions for this project |\n\n`CLAUDE.local.md`\n\nis intended for personal project-specific instructions, but Git does not magically keep it private. Add it to `.gitignore`\n\nif you do not want it committed.\n\nThese 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.\n\n`.claude/rules/`\n\n: split instructions and scope them by path\nFor a larger project, you can split instructions into arbitrary Markdown files under `.claude/rules/`\n\n:\n\n```\n.claude/\n├── CLAUDE.md\n└── rules/\n    ├── testing.md\n    ├── api-design.md\n    └── frontend/\n        └── accessibility.md\n```\n\nA rule without `paths`\n\nfront matter applies to the whole project. Add `paths`\n\nto load it only when Claude works with matching files:\n\n```\n---\npaths:\n  - \"src/api/**/*.ts\"\n---\n\n# API development rules\n\n- Validate input at every endpoint.\n- Use the shared error response format.\n```\n\nMy rule of thumb is:\n\n`CLAUDE.md`\n\n;`.claude/rules/`\n\nfor 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.\n\nBy default, each repository gets a local directory like this:\n\n```\n~/.claude/projects/<project>/memory/\n├── MEMORY.md\n├── debugging.md\n├── api-conventions.md\n└── ...\n```\n\n`<project>`\n\nis derived from the Git repository. It is not a name you are expected to choose manually.\n\n`MEMORY.md`\n\nis 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`\n\nare read on demand.\n\nThe important boundary is the machine:\n\n`.gitignore`\n\ndoes not make it team-shared.Run `/memory`\n\nto inspect or edit the files and toggle auto memory. Everything is plain Markdown.\n\nI use this promotion rule:\n\n`CLAUDE.md`\n\nor `.claude/rules/`\n\n;Auto memory is useful as a notebook. It should not become the only copy of knowledge your team depends on.\n\nThe Claude API memory tool is another mechanism with a similar name and a very different storage model.\n\nClaude can request file operations such as create, read, update, and delete under a logical `/memories`\n\npath. Your application executes those operations and returns the result.\n\nThe tool operates client-side. Your application decides:\n\nAnthropic 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.\n\nSee the [Memory tool documentation](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool).\n\nThe product names will change. These boundaries are more durable.\n\nChat memory and Claude Code's instruction files and auto memory are separate systems. Context does not cross automatically in either direction.\n\nProject memory and past chat search remain inside one project. Creating a project is also creating a memory boundary.\n\nClaude Code auto memory is machine-local by default. Cloning the repository elsewhere does not bring it along.\n\nWhat 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](https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork) and [Organize your tasks with projects in Claude Cowork](https://support.claude.com/en/articles/14116274-organize-your-tasks-with-projects-in-claude-cowork).\n\nMemory 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.\n\n| What should persist? | Put it here |\n|---|---|\n| Your role, communication style, and general working preferences | Memory generated from non-project Claude Chat |\n| Assumptions and decisions for one client or project | A separate Claude project |\n| Coding rules the whole team must follow | Repository `CLAUDE.md`\n|\n| Rules for one directory or file type |\n`.claude/rules/*.md` with `paths`\n|\n| A local finding Claude Code may reuse | Auto memory |\n| A finding needed on another machine or by the team | Promote it from auto memory into a committed file |\n| A temporary conversation that should not affect future memory or search | Incognito Chat, while respecting its retention policy |\n| Persistent information for users of your own application | The API memory tool plus storage and deletion behavior you implement |\n\nDuplicating the same fact everywhere does not necessarily make the system safer. It creates multiple copies that can become stale or contradictory.\n\nBefore repeating the information, ask:\n\n“Does Claude remember?” is usually too broad a question.\n\nThe more useful question is:\n\n**Which memory system am I using, and where does its boundary stop?**\n\n*Originally published in Japanese on Zenn: Claudeの「記憶」はどこにある？ チャット・Claude Code・APIの境界を整理する*\n\n*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.*", "url": "https://wpnews.pro/news/claude-does-not-have-one-memory-system-a-map-of-chat-claude-code-and-the-api", "canonical_source": "https://dev.to/yukihirokimura/claude-does-not-have-one-memory-system-a-map-of-chat-claude-code-and-the-api-1g8j", "published_at": "2026-08-03 23:35:00+00:00", "updated_at": "2026-08-04 00:08:54.899730+00:00", "lang": "en", "topics": ["large-language-models", "ai-products", "ai-tools"], "entities": ["Anthropic", "Claude", "Claude Code", "Claude API"], "alternates": {"html": "https://wpnews.pro/news/claude-does-not-have-one-memory-system-a-map-of-chat-claude-code-and-the-api", "markdown": "https://wpnews.pro/news/claude-does-not-have-one-memory-system-a-map-of-chat-claude-code-and-the-api.md", "text": "https://wpnews.pro/news/claude-does-not-have-one-memory-system-a-map-of-chat-claude-code-and-the-api.txt", "jsonld": "https://wpnews.pro/news/claude-does-not-have-one-memory-system-a-map-of-chat-claude-code-and-the-api.jsonld"}}