Claude-mem vs MemoryRouter: Private Tags Are Not Portable

John Rood··4 min read

A note wrapped in <private> can look safe to paste into another agent. The brackets travel with the text. The filtering behavior does not.

That matters when comparing claude-mem with MemoryRouter. If your workflow depends on leaving part of a prompt out of long-term memory, check the capture policy before connecting a different memory system.

In claude-mem, the tag changes what gets stored

Claude-mem's private-tag documentation, checked November 10, 2026, defines <private>...</private> as an exclusion control. Its hooks remove the enclosed content from stored prompts and tool payloads before those reach its memory worker. The coding agent can still use that content in the current conversation.

For example, you can mark a temporary deadline as private while leaving the rest of a debugging request available for future memory. That is a useful distinction: the whole session does not have to be disposable because one block is.

Claude-mem also documents separate, opt-in automatic secret redaction. That scans for configured patterns and replaces matching values. A private block is removed because you marked it, even when it contains ordinary prose rather than a recognizable credential.

Neither control means the model never saw the text. The private-tag guide explicitly separates the live conversation from claude-mem's persistent record. Keep actual credentials in a secrets manager, not in a privacy-tag experiment.

MemoryRouter's documented switch is the project

The MemoryRouter Claude Code guide documents different controls. An empty .memoryrouterignore file disables the integration for a sensitive project. You can also set "enabled": false in that project's .memoryrouter.json, or start Claude Code with MEMORYROUTER_DISABLE=1.

It does not document <private> as a block-exclusion format. Do not treat a claude-mem tag as a MemoryRouter storage instruction.

MemoryRouter's automatic Claude Code capture keeps the typed user prompt and final user-visible answer for a completed turn. It omits tool traces and intermediate reasoning, but that narrower record does not make sensitive text in an ordinary prompt safe to save. Local recovery checkpoints can also contain prompt text.

For work that must stay outside MemoryRouter, disable the integration before starting that work. If you added the optional MCP connection, review that separately: it is an independent tool surface, not something to assume a hook setting has disconnected. The installation guide has separate removal steps for hooks and MCP.

A repository label is not a private compartment

The reason I use MemoryRouter is the shared vault. Supported clients connected to it can recover context from work done elsewhere, without copying notes between assistants.

That also sets the boundary. MemoryRouter's Claude Code settings scope controls where hooks are installed, not which part of the vault they can search. The repository tag helps identify captured work; it does not isolate that project's memories from the rest of your vault.

If your rule is "this client project must never enter my personal memory," excluding the project fits. If your rule is "remember this conversation except the marked paragraph," claude-mem's documented private tags address that requirement directly. MemoryRouter's documented project switch is not an equivalent replacement.

Check exclusion without using a real secret

Before changing systems, use an invented sentence such as "The practice release label is copper meadow 62."

Use a disposable test setup with no other clients writing. First confirm that an unmarked control sentence saves with capture enabled.

With claude-mem, wrap the practice sentence in a private block and follow the guide's database checks for stored prompts and observations. With MemoryRouter, test the project-disable control you intend to use and inspect the vault's stored record in the dashboard. Do not use a failed recall question as proof of exclusion. A search can miss something that was saved.

The MemoryRouter Claude Code integration is for work you want available in your shared vault. Decide which projects belong there before enabling automatic capture.

Start a shared vault for the projects you choose