Personal mode
How do I keep my Claude Code sessions after 30 days?
Personal mode copies your Claude Code and Codex sessions into Inhold on your own disk. Any agent can search them over MCP, but never read back a secret.
Inhold is being built. No customers yet. Repo goes public 9 Nov 2026.
Why
Your agent forgets, on purpose
Claude Code deletes session transcripts after 30 days, because they can hold secrets. That also deletes the fix you found last month and the reason you chose one library over another. Personal mode keeps that history on your laptop and lets the agent search it, with the secrets labelled and held back.
It is free and open source under Apache-2.0. It is the same service, policy check and audit log we sell to agent vendors, with a policy made for one developer.
Set up
Three commands
pip install -e . inhold init --personal # makes ~/.inhold, prints MCP commands inhold import claude-code --repo . # sessions, memory, CLAUDE.md inhold import codex # ~/.codex/sessions
Then run the claude mcp add or codex mcp add line that init printed. --repo also brings in that repo's CLAUDE.md and AGENTS.md. Run import again whenever you like: only new turns are added.
What happens
One session, two reads
We imported a two-turn synthetic session. The first turn pastes an AWS key (the example key from AWS's own docs). The second records the fix.
$ inhold import claude-code ./sessions
{"files": 1, "items": 2, "denied": 0}
coding agent, purpose dev, searches "Postgres client Dockerfile"
[internal] assistant: Retried. The fix was pinning the Postgres client to 16 ...
coding agent, purpose dev, searches "AWS_SECRET_ACCESS_KEY"
no results
you, purpose vault, search "AWS_SECRET_ACCESS_KEY"
[SECRET] user: The staging deploy failed. Use AWS_SECRET_ACCESS_KEY=...
From our run on main 98cf618, 31 Oct 2026, through the Python service the MCP tools call. The turn with the key is labelled SECRET. The agent's purpose cannot read SECRET, so that turn never reaches it; the turn next to it still does. You can read it under the vault purpose. Every import, search and read writes an audit row.
Limits
What it does not protect
- The boundary holds for what the agent asks Inhold for. An agent with a shell running as you can still read local files, including
~/.inholdand the raw transcripts. - The MCP command
initprints carries the agent token, so the token lands in your agent's config. - Secrets are found by pattern. A password with no
=or:after its name is not caught. - Import reads only the local paths above. Tool calls and tool output are skipped.
Questions
Questions
Does personal mode send my sessions anywhere?
No. It reads local files and writes to a SQLite database in ~/.inhold. It makes no outbound calls.
Can the coding agent read a secret I pasted into a session?
Not through Inhold. The turn is labelled SECRET and the agent's purpose cannot read that label. An agent with a shell as you can still read the files on disk.