Curated persistent memory for Claude Code sessions — evaluate facts with a write gate, auto-load working memory, and promote important information to durable registers without bloat.
Show what memory files are loaded and available in the current session.
Mark memory entries as superseded. Preserves history, does not delete.
Add durable IDs to memory entries. Required before /recall-maintain can run.
Scaffold the Total Recall memory directory structure in this project.
Quick append to daily log without write gate evaluation.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A memory system for Claude Code that remembers what matters and forgets what doesn't.
Claude Code forgets everything between sessions. Every time you start a new conversation, it's like talking to someone with amnesia. You end up repeating yourself:
This gets old fast.
It gives Claude Code a notepad that carries over between sessions, but a picky notepad. Not everything goes in. Before anything gets saved permanently, it has to pass a simple test: will this matter tomorrow?
A preference you'll have for months? Saved. A decision you made and why? Saved. The fact that you ran a test five minutes ago? Not saved. The system keeps itself clean so Claude isn't wading through junk to find what's relevant.
Think of it like a kitchen with four storage areas:
Counter (CLAUDE.local.md): The stuff you reach for every day. Loads automatically, every session. Kept small on purpose, around a page of text.
Pantry (memory/registers/): Organized by category. Your preferences, key decisions, project details, people you work with. Claude checks here when it needs something specific.
Daily notebook (memory/daily/): Timestamped scratch notes from each day. Everything gets written here first. You decide later what's worth keeping permanently.
Storage closet (memory/archive/): Old stuff that's done or outdated. Still searchable, but never loaded automatically.
The key idea: notes hit the daily notebook first, then you promote the keepers. Claude doesn't get to decide on its own what's important enough to remember permanently. You do.
/plugin marketplace add davegoldblatt/recall-marketplace
/plugin install recall@recall-marketplace
git clone https://github.com/davegoldblatt/total-recall.git
cd total-recall
./install.sh /path/to/your/project
After installing, restart Claude Code or run /hooks to activate.
Here's your day-to-day:
Claude notices something worth remembering. It writes to your daily notebook and tells you. You don't have to do anything.
You want Claude to remember something. Just say "remember this" or use the write command:
/recall-write Dave prefers concise error messages, no stack traces in prod
End of day (or whenever). Review what piled up and promote the good stuff:
/recall-promote
Find something from last week. Search across everything:
/recall-search authentication decision
You correct Claude. The correction updates everywhere at once: daily notebook, registers, and the counter. The same mistake won't happen again.
| Command | What it does |
|---|---|
/recall-init | Set up the memory folders for the first time |
/recall-write <note> | Save a note (checks if it's worth keeping, suggests where) |
/recall-log <note> | Quick note to the daily notebook, no questions asked |
/recall-search <query> | Search everything |
/recall-promote | Review daily notes, move the keepers to registers |
/recall-status | Health check. Is everything working? |
/recall-maintain | Clean up stale or duplicate entries |
/recall-forget <query> | Mark something as outdated |
/recall-context | Show what memory Claude has loaded right now |
If installed as a plugin, commands are namespaced: /recall:recall-write instead of /recall-write.
This is the core idea. Before anything gets promoted to permanent memory, it has to pass at least one of these checks:
If none of those are true, it stays in the daily notebook and eventually ages out. This keeps memory lean. No junk drawer.
If you tell Claude it got something wrong, it doesn't just say "sorry" and move on. It updates the daily notebook, the relevant register, and the counter, all in one shot. The old information gets marked as superseded (not deleted) so there's a trail of what changed and when.
Only two things, every session:
| What | Where | How |
|---|---|---|
| The rules (write gate, correction protocol) | rules/total-recall.md | Claude Code loads all rules files automatically |
| Counter / working memory | CLAUDE.local.md | Claude Code loads this automatically |
npx claudepluginhub davegoldblatt/total-recallPersistent memory system for Claude Code with enforced context
Universal memory runtime — cross-session cognitive memory for Claude Code. Remembers decisions, patterns, and context across coding sessions.
Persistent memory for Claude Code. Capture work across sessions and recall relevant context.
Multi-tiered memory and knowledge base with semantic search, auto-compaction, and built-in evaluation. Works across Claude Code, Copilot CLI, OpenCode, Cline, and Cursor.
Persistent memory across Claude Code sessions using Cognis
Persistent memory for AI coding agents. Survives across sessions and compactions.