Milepost – plain-Markdown long-term memory for Claude Code Milepost, a free open-source plugin for Claude Code, provides persistent long-term memory by automatically writing a plain-markdown diary of milestones, decisions, and status updates during sessions. The tool stores data in user-owned markdown files without databases or lock-in, enabling Claude to recall context across sessions for long-running projects. A milestone-triggered, in-session work diary that gives Claude Code persistent, plain-markdown memory across sessions — no database, no lock-in, fully greppable. Keywords: Claude Code memory · persistent memory for Claude Code · long-term memory plugin · AI agent diary · session memory · markdown work log · Claude Code plugin · agent context persistence · milestone logging milepost is a free, open-source Claude Code https://code.claude.com plugin that turns Claude into an agent with a memory. As you work, Claude automatically writes a diary of meaningful milestones — completed deliverables, key decisions and why they were made , blockers, and changes in direction — plus a living STATUS.md of where things stand. Everything is stored as plain markdown files you own , so you can grep it, git it, export it, or read it in any editor. No SQLite, no vector DB, no cloud, no lock-in. Pick up a long-running task days or weeks later and Claude already knows what you did, what you decided, and what's next. /plugin marketplace add sashamitrovich/milepost /plugin install milepost@milepost Claude Code is brilliant within a session — and forgetful between them. Close the terminal and the reasoning, the decisions, the dead-ends you already ruled out are gone. For a quick edit that's fine. For a project you return to over weeks , it means re-explaining context every single time. Existing memory tools each force a trade-off: Database-backed memory e.g. claude-mem captures everything automatically — but your memory lives in SQLite + a vector store. Hard to read, harder to export, easy to get locked into. Session-end / manual diaries e.g. claude-diary write plain markdown — but only when you run a command, or after a session is already over. milepost takes the third path: plain markdown, written as you go, triggered by milestones — not by a clock, a command, or a database. Deciding "a real milestone just happened" is a judgment call — and only the model can make it. So milepost isn't a dumb cron job; it's two cooperating parts: | Part | What it is | What it does | |---|---|---| 🧠 Policy | A global instruction added to ~/.claude/CLAUDE.md | Tells Claude when a milestone is worth recording and how to write it — using its normal file tools, inline, while working. | ⏱️ Nudge | A throttled Stop hook default: once / 15 min | Quietly reminds Claude to check for unrecorded milestones on long sessions, so logging stays consistent without nagging every turn. | 📖 Recall | A read-only SessionStart hook | At the start of every session, surfaces the current project's STATUS.md back into context matched via a canonical, git-root-aware project slug , plus a one-line index of your other tracked projects — so prior work and next steps are visible without asking, and the injected context stays small no matter how many projects you track. Never writes to the diary. | 🛡️ Secret guard | A PreToolUse hook on Write / Edit / Bash | Mechanically blocks any diary write containing secret-shaped content API keys, tokens, private keys, JWTs, credential assignments, URLs with embedded passwords and tells Claude to rewrite the entry referencing secrets by location, never by value. The policy alone asks nicely; this enforces it. | The result: automatic, milestone-aware journaling that doesn't interrupt your flow and doesn't depend on you remembering to run anything. Per project, in a folder you fully control: ~/.claude/memory/milepost/