cmem
MCPShips with claude-mem: Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions,…
Ships with claude-supermemory: Persistent memory for Claude Code, powered by Supermemory Conceptual overview. Some command names in the image predate the current plugin; see Commands for what's available now.
Claude Code
> /plugin marketplace add supermemoryai/claude-supermemory> /plugin install supermemory@supermemory-plugins
Codex
$ git clone https://github.com/supermemoryai/claude-supermemory
Clone the repository
Cursor
$ git clone https://github.com/supermemoryai/claude-supermemory
Clone the repository
Gemini CLI
$ git clone https://github.com/supermemoryai/claude-supermemory
Clone the repository
GitHub Copilot
$ git clone https://github.com/supermemoryai/claude-supermemory
Clone the repository
OpenCode
$ git clone https://github.com/supermemoryai/claude-supermemory
Clone the repository
Windsurf
$ git clone https://github.com/supermemoryai/claude-supermemory
Clone the repository
From the README
Recall strip
On Claude Code 2.1.287+ in the terminal, press the changing memory headline above the prompt to browse the full returned facts one at a time
Security report
Not enough data
Known flaws
Not published
Signed build
Not published
Maintained
Oct 29, 2026
Last push
Licence
Not published
Runs as
Local process
On your machine
Deprecated
Not published
Signals from public registries, not an audit. Checked Nov 11, 2026.
Persistent memory for Claude Code, powered by Supermemory
Conceptual overview. Some command names in the image predate the current plugin; see Commands for what's available now.
A Claude Code plugin that gives your agent persistent memory across sessions using Supermemory. Your agent remembers what you worked on, across sessions and across projects.
Install · Features · How it works · Shared containers · Configuration · Commands · Privacy
Requires Node.js 18+ on your PATH. The memory hooks run as Node scripts.
/plugin marketplace add supermemoryai/claude-supermemory
/plugin install supermemory
Set your API key (get one at console.supermemory.ai), or just start a session and let browser login handle it:
export SUPERMEMORY_CC_API_KEY="sm_..."
Migrating from the old claude-supermemory plugin
That plugin was renamed to supermemory, so it won't update in place. Migrate with:
/plugin marketplace update supermemory-plugins
/plugin install supermemory@supermemory-plugins
Then, only if you still have the old plugin installed, remove it:
/plugin uninstall claude-supermemory@supermemory-plugins
| 🧠 Direct recallWhen authenticated, the hook searches substantive prompts before Claude sees them and injects fresh matches. No permission prompt or MCP tool call. | 🔎 Hosted MCP toolssearch_memory, listSpaces, whoAmI, and more are available through the same credentials as the hooks, auto-approved when read-only. |
| 💾 Auto captureAt the end of a session, the Stop hook saves new conversation content in the background. It asks Supermemory to retain durable context rather than transient Git state. | 🏷️ Shared repo memoryAutomatic captures use the repository container shared with Codex and OpenCode and carry sm_scope: personal metadata. |
🧭 Deep multi-container searchThe context-gatherer subagent fans out several searches across a project's containers and returns a synthesized brief. | ⚙️ Project configPer-repo settings, API keys, and container tag overrides via .claude/.supermemory-claude/config.json. |
🗂️ Codebase index/supermemory:index saves architecture, conventions, and how to run into this project's container. | 👋 Session contextLoads profile facts at session start and shows a welcome-back notice when you return to a project after 6+ hours. |
On Claude Code 2.1.250, local marketplace install/update and the SessionStart and UserPromptSubmit command hooks were verified, but claude plugin validate rejects the recall mod's classic.SessionStart event. The strip is not available on that version; other older versions and install sources have not been verified.
Claude Code supports hooks and MCP servers. supermemory registers four hooks, in lifecycle order:
SessionStart → UserPromptSubmit → PreToolUse → Stop
| Step | Hook | Event | What it does |
|---|---|---|---|
| 1 | session-start | SessionStart | Bootstraps auth and loads profile context plus a welcome-back notice. It does not install a statusline; an old auto-installed one is removed. |
| 2 | recall-directive | UserPromptSubmit | Searches Supermemory directly with the prompt and injects fresh matches, deduplicated within the session. |
| 3 | recall-approve | PreToolUse | Auto-allows read-only Supermemory MCP tools; writes still ask for permission. |
| 4 | capture | Stop | Saves the completed conversation delta in the background. |
By default, recall is performed by the hook itself, not delegated to the model. It searches
substantive prompts when authenticated, without waiting for Claude to choose a tool call.
Setting recallDirective switches to advisory mode: the hook stops searching and instead
tells Claude when it should decide to search on its own.
The hooks are tolerant: if Supermemory is unreachable, the API key is missing, or anything else fails, they exit cleanly without breaking your Claude Code session. A capture that fails is reported the next time a session starts.
Claude Code, Codex, and OpenCode all generate the same container tag for a given repository, so new memories are shared:
repo_<project-name>__<remote-hash> default container for capture and MCP memory tools
sm_scope: personal metadata on automatic captures
The hash is derived from the normalized Git remote, so clones share memory while
same-named repositories do not collide. Repositories without a remote fall back to
a local path identity. Set SUPERMEMORY_ISOLATE_WORKTREES=true to use the worktree
path instead of the remote identity.
Unlike Codex, this plugin does not read older per-tool legacy containers
(codex_user_*, opencode_project_*, and similar); it only ever uses the single
unified identity above, overridden via the project namespace setting
or the compatible repoContainerTag / SUPERMEMORY_REPO_TAG settings.
| Variable | Purpose |
|---|---|
SUPERMEMORY_CC_API_KEY | Your Supermemory API key (browser auth is preferred). |
SUPERMEMORY_API_URL | Override the Supermemory REST base URL; custom URLs default to legacy compatibility. |
SUPERMEMORY_MCP_URL | Override the hosted MCP endpoint (default https://mcp.supermemory.ai/mcp). |
SUPERMEMORY_AUTH_URL | Override the browser-auth base URL. |
SUPERMEMORY_REPO_TAG | Project-scope override; used when no project scope setting is set. |
SUPERMEMORY_ISOLATE_WORKTREES | Set to true to key the project container on the worktree path instead of the Git remote. |
SUPERMEMORY_DEBUG | Set to true to enable debug logging. |
~/.supermemory-claude/settings.json){
"maxProfileItems": 5,
"signalExtraction": true,
"signalKeywords": ["remember", "architecture", "decision", "bug", "fix"],
"signalTurnsBefore": 3,
"includeTools": ["Edit", "Write"]
}
| Option | Description |
|---|---|
maxProfileItems | Max memories in context (default: 5). |
recallDirective | Set to switch prompt recall from direct hook search to an advisory instruction Claude reasons over. |
signalExtraction | Only capture important turns (default: false). |
signalKeywords | Keywords that trigger capture. |
signalTurnsBefore | Context turns before signal (default: 3). |
includeTools | Tool calls to explicitly capture. |
debug | Enable debug logging (default: false). |
.claude/.supermemory-claude/config.json)Per-repo overrides, created manually or via the settings your team shares:
API key precedence is SUPERMEMORY_CC_API_KEY, project apiKey, then
~/.supermemory-claude/credentials.json.
{
"apiKey": "sm_...",
"baseUrl": "https://api.supermemory.ai",
"namespace": "my-team-project",
"signalExtraction": true
}
| Option | Description |
|---|---|
apiKey | Project-specific API key. |
baseUrl | Supermemory API URL. |
namespace | Canonical project scope, preserving the exact old container-tag value. |
repoContainerTag | Override the unified project container tag. Checked before SUPERMEMORY_REPO_TAG. |
Hosted Supermemory uses v5 without a version choice. Existing custom REST URLs
default to legacy, keeping v3 writes and v4 profiles for self-hosted servers
older than 0.0.9. After upgrading the server, explicitly set
SUPERMEMORY_API_VERSION=v5 or project apiVersion: "v5". The environment
setting takes precedence; legacy is also an explicit rollback option for a
server that still supports v3/v4. Invalid values fail closed for memory operations.
There is no automatic version fallback after a failed request and no fallback to
the hosted API. REST, MCP, and browser-auth URLs remain separate.
Scope precedence is project namespace, project repoContainerTag,
SUPERMEMORY_REPO_TAG, then the generated identity.
Keep an existing override's exact value when renaming its setting: changing the
value selects another space, not a data migration. V5 scopes allow 1–100 letters,
digits, underscores, hyphens, or colons; invalid scopes are rejected before any
request without rewriting config or capture cursors.
Hosted Supermemory applies the same rule to legacy endpoints, so a scope with a
dot, slash, or space must be renamed; the new value starts a new memory space.
A self-hosted server that still accepts such a scope through v3/v4 can keep it with
SUPERMEMORY_API_VERSION=legacy or project apiVersion: "legacy". There is no
automatic switch or failed-write retry across protocols.
| Command | Description |
|---|---|
/supermemory:index | Index this repo's architecture, conventions, and how to run into the project container. |
/supermemory:status | Show authentication status, API and MCP reachability, and the active project container. |
Search does not have its own command. With a key, the prompt hook searches
substantive prompts. For deeper history, use the context-gatherer agent or
the MCP tools. /supermemory:index saves codebase structure. For a one-off
save, ask Claude to use the add_memory MCP tool. Without containerTag,
the proxy defaults it to this repository's container; pass a different tag
to select another space. Conversation turns are saved when a session ends.
Automatic capture sends new conversation content to Supermemory, including tool
content when configured. Before saving, an offline filter replaces common
credential-shaped values (provider tokens, credential assignments, private keys,
Bearer tokens, and URL credentials) with explicit [REDACTED:…] markers while
keeping surrounding context. It cannot detect every secret. Existing stored
memories and local transcripts are not rewritten; explicit MCP tool calls and
recall queries are not filtered by this capture-only protection.
For information about how Supermemory collects, uses, and retains data, see the Supermemory Privacy Policy.
MIT
Marketplace installations need only Node 18 or later, not npm install.
plugin/hooks/vendor/supermemory.cjs is the committed runtime bundle built from
the exact official SDK and esbuild versions in package-lock.json. Maintainers
reproduce it with npm ci && npm run build:sdk; CI rejects a stale bundle.
The SDK's Apache-2.0 license is included alongside the generated bundle.
◪ is the supermemory mark. Whenever you see it (the recall strip, notices, or Claude's answers), that information came from supermemory.
Ships with claude-mem: Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions,…
Ships with mempalace: Local-first AI memory. Verbatim storage, pluggable backend, 96.6% R@5 raw on LongMemEval — zero API calls.
Ships with mempalace: Local-first AI memory. Verbatim storage, pluggable backend, 96.6% R@5 raw on LongMemEval — zero API calls.
Ships with mksglu-context-mode: The other half of the context problem. Used across teams at