Skip to content

Claude Code memory: what it keeps, and what it can't see

Claude Code remembers CLAUDE.md and 200 lines of auto memory. It can't see what you read or decided on your Mac. One MCP command adds that, plus your list.

· Updated · 4 min read · By Sharpy

You open Claude Code, and the first five minutes go to explaining. What the gateway decision was on Wednesday. What the client asked for in the Telegram thread. Which of the three approaches you tried yesterday and rejected. The agent is capable and blank.

That is not because Claude Code has no memory. It has two, and both are about the repository. Here is what they hold, from the Claude Code documentation on 18 September 2026, and how to add the third one: what you saw.

What Claude Code remembers on its own

CLAUDE.md. Instructions you write, loaded at the start of every session: ./CLAUDE.md or ./.claude/CLAUDE.md for the project, ~/.claude/CLAUDE.md for you across projects, ./CLAUDE.local.md for private per-project notes, and a managed file for an organisation. The docs ask for under 200 lines per file; anything over 4 MiB is skipped. .claude/rules/ splits instructions into topic files, some scoped to file paths so they load only when Claude touches matching files.

Auto memory. Notes Claude writes itself: your role and preferences, corrections you give it, project decisions it cannot derive from the code, and where things live outside the repo. They go to ~/.claude/projects/<project>/memory/, one directory per git repository, with a MEMORY.md index. Only the first 200 lines or 25 KB of that index load at the start of a session; the topic files behind it are read on demand. /memory opens all of it in your editor, and it is plain markdown you can edit or delete.

Both are useful and both stop at the edge of the repository. Nothing in them knows what the client wrote in Telegram, what the team decided in Slack, or what the error in the other terminal said. Every session starts with a fresh context window, and everything outside the codebase has to be typed in again.

Sharpy fixes that part. It is a to-do list for Mac that writes itself from your Slack, mail, calls and the text on your screen, and it keeps that text in a local file on the machine. Its MCP server hands both to the agent: the list, and the memory behind it.

One command

claude mcp add sharpy -- /Applications/Sharpy.app/Contents/Helpers/sharpy-mcp

Then, on the first connection, Sharpy asks on its island whether this client may read your Mac; say yes once. That is the whole setup for Claude Code. In Sharpy, Integrations does the same for Claude, ChatGPT and Codex, Cursor and others in one click. Any other client takes the same binary as a stdio server with no arguments.

The server runs locally and reads the same data the app writes. There is no second copy, no sync, no account for the MCP itself. Sharpy has to be running. You can revoke a client in Integrations at any time.

What the agent can now do

The server exposes a handful of tools. In practice you never call them; you ask, and the agent picks.

  • list_work, add_work_item, update_work_item. Your to-do list: what is on it, what is next, add a task, mark one done. “What’s next on my list?” and “done, mark it” are one call each.

  • search_memory. Full-text search over everything captured, with a from/to window and an app filter. “Find where we agreed on the retry policy” returns the matching passages, each with its snapshot and session id, app, window title, URL and time.

  • get_recent_activity. The last minutes of screen activity, newest first: app, window, URL, seconds spent, an excerpt. No model involved, so it is the cheapest call. Made for “what was I just doing?”.

  • get_working_memory. The sessions of the last few hours (three by default) with the full text of the latest moment in each. The agent reads this to orient before it searches, or to load your context before writing in your voice.

  • read_session. One continuous stretch of work end to end: a whole email thread, a Slack channel, a coding session.

  • get_snapshots. The full text of specific moments by id, for quoting exact wording, numbers and dates.

  • list_followups. The promises and asks Sharpy found in your chats, mail and calls.

Every row carries a snapshot id. When the agent tells you “you agreed on Thursday 18:00”, it can open that exact moment and quote it, and so can you, in Sharpy.

Three ways people use it

Stop re-explaining. Start a session with “read my working memory, then plan the migration we discussed in Slack this morning”. The agent reads those sessions, searches for the Slack thread, and plans from what was said, not from your retelling of it.

Close the loop. “What’s next on my list?” The agent reads the top task, does the work, and marks it done in Sharpy when the pull request lands. The next task moves up.

Debug from what you saw. You hit an error at 14:07, took a screenshot in your head, and moved on. “What was the error I saw in the terminal around two o’clock?” The text was captured; the agent finds it.

Limits worth knowing

Sharpy captures the front window through macOS Accessibility. Native apps read well. Electron apps, which is most AI desktop clients and many chat apps, expose their text less cleanly, so some passages will be missing or partial. If a search comes back thin, the browser version of the same app usually reads better.

What the agent pulls into its context leaves the Mac with that context. Claude Code sends it to Anthropic; Cursor sends it to whatever model you picked. Sharpy itself masks card numbers, keys, phone numbers and codes before anything is stored, and never saves passwords, banking, logins or private windows. Narrow questions keep the rest narrow.

Sharpy runs on macOS 14 or later, on Macs with Apple silicon, and is free in early access. Join the waitlist: access goes out by email in waves, or at once when three friends join with your link. The setup per client and every tool by name are on the MCP page.

Questions

Does Claude Code have persistent memory?

Two kinds. CLAUDE.md files are instructions you write, loaded at the start of every session. Auto memory is notes Claude writes itself into ~/.claude/projects/<project>/memory/, with a MEMORY.md index of which only the first 200 lines or 25 KB load. Neither knows what you read in Telegram, decided in Slack or looked up in the browser. An MCP server like Sharpy's fills that gap by letting it search the text your Mac showed you.

Where are Claude Code memory files stored?

Project instructions live in ./CLAUDE.md or ./.claude/CLAUDE.md, personal ones in ~/.claude/CLAUDE.md, and per-project private notes in ./CLAUDE.local.md. Auto memory lives in ~/.claude/projects/<project>/memory/, one directory per git repository, shared by its worktrees. Run /memory in a session to open any of them.

What does the Sharpy MCP server expose?

Your to-do list (list_work, add_work_item, update_work_item), search_memory over everything captured, get_recent_activity for the last minutes, get_working_memory for the last few hours, read_session for one stretch of work end to end, get_snapshots for the full text of a moment, and the follow-ups Sharpy found. Every memory row carries a snapshot id so the agent can open and quote the source.

Does my screen history leave the Mac when Claude Code reads it?

The MCP server runs on your Mac and reads the local SQLite file. What the agent pulls into its context goes wherever that agent sends its context; for Claude Code that is Anthropic's API. Ask narrow questions and the agent pulls narrow results.

Does it work with Cursor and Claude Desktop?

Yes. Any client that speaks MCP over stdio can add the same binary. In Sharpy, Integrations writes the entry for Claude Code, Claude, ChatGPT and Codex, Cursor and a dozen others in one click; Claude Code also takes it from the command line.

Let Sharpy write tomorrow’s list.

Free in early access. macOS 14 or later, Apple silicon.