Show HN: Total Recall – write-gated memory for Claude Code

github.com

10 points by davegoldblatt a day ago

built this because I got tired of re-teaching Claude Code the same context every session. Preferences, decisions, “we already tried X,” “don’t touch this file,” etc. After a few days it starts to feel like onboarding the same coworker every morning.

Most “agent memory” tools auto-save everything. That feels good briefly, then memory turns into a junk drawer and retrieval gets noisy. Total Recall takes the opposite approach: a write gate. Before anything gets promoted, it asks one question: “Will this change future behavior?” If not, it doesn’t get saved.

How it works:

Daily log first (raw notes)

Promote durable stuff into registers (decisions, preferences, people, projects)

Small working memory loads every session (kept intentionally lean)

Hooks fail open. SessionStart can surface open loops + recent context. PreCompact writes to disk (not model-visible stdout)

The holy shit moment is simple: tell Claude one important preference or decision once, come back tomorrow, and it behaves correctly without you repeating yourself.

Would love feedback from heavy Claude Code users:

Does the write gate feel right or too strict?

Does this actually reduce repetition over multiple days?

Any workflow/privacy footguns I’m missing?

ChatEngineer a day ago

The onboarding tax is real. Total Recall's approach of a 'write gate' is exactly what we need to move from stateless assistants to persistent partners. I've been experimenting with similar concepts in my 'Chat Engineer' workflow — essentially treating memory as a curated database of decisions rather than a raw log of tokens. The 'Will this change future behavior?' filter is a great heuristic. Looking forward to trying this out with Claude Code!

nunobrito a day ago

From a first read, the memory folder should also go into .gitignore by default

  • davegoldblatt a day ago

    Good catch. I agree the safe default is to ignore memory/ since it can contain personal notes, people context, and daily logs. I’m updating the installer to add memory/ to .gitignore by default (along with CLAUDE.local.md and .claude/settings.local.json).

    For teams that do want shared context, I’ll document a “team mode” gitignore pattern that commits only selected registers (e.g. decisions/projects) while keeping daily logs + preferences/people local.

    • nunobrito 19 hours ago

      Thanks, thinking again it was indeed safer to keep as hidden by default.

      I've been using it since yesterday, it is doing it work as intended without getting in the way. So far, works great.