The problem
You sign into Claude Code with a second account — a work one, a new subscription, a client's — and your history vanishes. So you start over and re-explain the whole project to the model.
Nothing was deleted
Claude Code stores chat metadata per account. Sign into a different one and the old chats stop being listed, even though every conversation is still sitting on your disk.
Transcripts expire
Old transcript files get pruned on a timer. A chat can outlive its own content: the title is still there, the conversation isn't.
Deletes can come back
The desktop app reconciles its own state. A chat you restore by hand can be removed again later, without warning.
What Ferry does
| See every account | Every Claude account signed into this machine, including ones you're signed out of, with all their chats. |
|---|---|
| Tell them apart | Email for the account you're signed into. Connectors, date range and project folders for the rest. Nickname any account and it sticks. |
| Read any chat | The full conversation with real Markdown — tables, code blocks, lists, quotes — plus the tool calls Claude made. |
| Copy or move | Drag a chat onto another account, or use the buttons. Copy keeps the original where it is. |
| Download | Save a whole conversation as Markdown, plain text or JSON, to any folder you choose. |
| Delete and undelete | Deletes are reversible. Restore from another account or from the archive. |
| Back up | One button archives every chat and every transcript, subagent transcripts included. |
Why moving a chat is instant
Claude Code keeps your history in two separate layers, and only one of them is tied to an account.
| Layer | Where it lives | Scope |
|---|---|---|
| Chat metadata | claude-code-sessions/<account>/ | per account |
| Transcripts | ~/.claude/projects/ | shared by every account |
Because transcripts are account-agnostic, moving a chat only moves about 10 KB of JSON. A 45 MB conversation transfers in the same instant as a tiny one, and nothing is duplicated on disk.
There's a CLI too
Python 3 standard library only — no pip install, no virtualenv, no build step.
python3 ferry-cli.py list # every account and its chats
python3 ferry-cli.py vault # archive everything
python3 ferry-cli.py export "auth refactor" # save a chat to a file
python3 ferry-cli.py ui # the same interface in a browser
Run vault from cron or a scheduled task and your history is backed up nightly without opening anything.
Questions
Where does Claude Code store chat history?
Two places. Per-account metadata under Application Support/Claude/claude-code-sessions/ on macOS or %APPDATA%\Claude\claude-code-sessions\ on Windows, and the conversations themselves as JSONL files in ~/.claude/projects/.
I switched Claude accounts and my chats disappeared. Are they gone?
No. The transcripts are still on disk — only the per-account metadata changed. Ferry finds every account it can see and copies a chat into the one you're using now.
Can I recover a deleted Claude Code chat?
Usually. Deleting writes a small marker rather than erasing the conversation, so as long as the transcript hasn't been pruned, Ferry can restore it from another account or from its archive.
Does it send anything anywhere?
No. Ferry has no network code at all. It reads and writes local files, nothing else.
Why does my Mac or PC warn me when I open it?
Neither build is code-signed. On macOS, right-click the app → Open → Open. On Windows, SmartScreen → More info → Run anyway. Once each.
Does it work on Linux?
There's no Claude Code desktop app on Linux, so there are no per-account chat records to move. Only the archive half would apply.
Is this made by Anthropic?
No. Ferry is an independent open-source tool that reads local files written by Claude Code.