Export Claude Code sessions
One Markdown note per session, the original log beside it, kept after Claude Code deletes it.
A session, as a note.
A paragraph per turn with the time and a block id, tool calls folded to what they ran, edits as diffs. Thinking, tool results and the harness's own notices never land in the note.
---
agent: claude-code
session: "a87cea2b-6f0e-4b1c-9d2a-3e4f5a6b7c8d"
title: "fix the changelog header link"
project: "wander.md"
cwd: "/Users/anton/products/wander.md"
branch: "main"
model: claude-fable-5-1
started: 2026-08-23T20:33:00Z
ended: 2026-08-23T20:40:04Z
turns: 5
prompts: 3
tools: 4
files:
- "src/layout.astro"
---
**you** · 22:33 ^turn-1
see the changelog page, the header link goes to /contact
**claude** · 22:34 ^turn-2
I'll look at the live page first.
```tool Bash "find docs route" ^toolu_01A
ls src
```
```diff src/layout.astro ^toolu_01B
- <a href="/contact">contact</a>
+ <a href="/changelog">changelog</a>
```What comes out
One note per session under a folder per project, plus the original log under originals/. Names are the date, the time and the session's title.
Each turn is a paragraph with a block id, so another note can point at the exact exchange.
A tool call is a fence with what it ran and its short summary. Results, thinking and the harness's own notices are left out.
Every Edit and Write shows as a diff, and the front matter lists the files the session touched.
Images pasted into a session are written as files beside the note and embedded in the turn.
The JSONL log is copied byte for byte. Copy it back into ~/.claude/projects and claude --resume finds it, long after Claude Code has purged it.
A running session updates its note as the log grows; only logs that changed are read again, so 800 sessions sync in seconds.
How it works
- 1Connect Claude Code
A panel opens in your .claude folder: press Select this folder. Exporter reads only the projects folder inside it, with no permission prompt.
- 2Pick sessions
Every session is ticked. Pills show the recent, the busiest and the running ones, and a search field finds a session by its title, its first prompt or its project. Choose markdown, the original, or both.
- 3It syncs
Press sync now. Each session becomes a note under its project, and a session still running rewrites its note as you go.
How it works: Claude Code docsGuides: Keep Claude Code sessio
Questions
Still have questions? Get in touch
Where do the logs live?
What is free?
Is anything uploaded?
Against the alternatives
Claude Code has no export of its own; the logs are readable only with a script, and they are gone after thirty days.
| Feature | Exporter | A script over the JSONL | Copy and paste |
|---|---|---|---|
| Every session at once | Yes | Yes | No |
| Readable Markdown, one note per session | Yes | Manual | Manual |
| Tool calls and diffs kept, noise dropped | Yes | Manual | No |
| The original log kept past the purge | Yes | Manual | No |
| Kept in sync while a session runs | Yes | No | No |
| Price | 50 sessions free, then a one-time purchase | Free | Free |
Let Claude read its own history
Exported sessions are searchable over Exporter's local MCP server. Set it up.
Then ask: “What did we decide about the changelog header last month?” Claude reads the session as a note.
$ claude mcp add --transport http exporter http://localhost:8744/mcp