Ferry icon

Ferry

Your Claude Code chats aren't gone. They're attached to an account you're not signed into.

Ferry lists every Claude account on your machine, moves chats between them, finds the CLI, VS Code and Cursor chats no account lists, and keeps an archive the 30-day cleanup can't touch.

Download for macOS Universal · 6 MB Download for Windows x64 · 6 MB View source MIT · free forever

v1.6.2 · macOS 11+ and Windows 10+ · no account, no telemetry, nothing leaves your network

Every feature, on example data: a chat moved out of a signed-out account, a CLI chat added to one, Cursor chats converted both ways, a folder fixed, a download, a restore, a backup, and a chat sent to another computer on the same Wi-Fi.

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 accountEvery Claude account signed into this machine, including ones you're signed out of, with all their chats.
Tell them apartA nickname, the Claude display name or the email, remembered even after you sign out. A green dot marks the one you're signed into. Nickname any account and it sticks.
CLI and VS Code chatsSessions you ran with claude or in VS Code that no account lists. Read them, then Add to account and Claude lists them.
CursorCursor conversations converted into Claude chats in the folder they were worked in, and Claude chats converted back with Convert.
Fix a chat's folderA chat started without a folder shows No folder in Claude. Point it at the one it belongs to, and Claude names it there.
Read any chatThe conversation with real Markdown — tables, code blocks, lists, quotes — plus the tool calls Claude made. The app shows a chat's first 800 messages; Download saves all of it.
Copy or movePick an account in Send to and choose Copy or Move, or drag the chat onto it. Copy keeps the original where it is.
Rename and searchClick a chat's title to rename it; filter an account's chats by title.
DownloadSave a whole Claude, CLI or VS Code conversation as Markdown, plain text or JSON, to any folder you choose.
Delete and undeleteDelete only removes the chat's record, never the conversation. Restore brings it back from another account or from a backup.
Back upOne button archives every chat and every transcript, subagent transcripts included.
Send nearbySend a chat from an account, Cursor, the CLI or VS Code to someone else's Ferry on the same Wi-Fi, Mac or Windows. You both check the same six-digit code before anything moves, receiving works with Claude open, and it's off until you turn it on.
ZoomCtrl/Cmd + and −, or Ctrl/Cmd + scroll; Ctrl/Cmd 0 resets. The level is remembered.

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.

LayerWhere it livesScope
Chat metadataclaude-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.

Ferry leaves your conversations alone. It writes the small metadata record, and snapshots every file before changing it. Only two things write a conversation: converting a Cursor chat into Claude, and receiving a chat over Nearby. Fixing a chat's folder gives its existing transcript a second name under the new folder (a hard link, or a copy on a disk that refuses links). Receiving is the one write to Claude's files allowed while the Claude app is open; everything else there waits until you quit it. Converting a chat into Cursor only needs Cursor closed.

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 import 17b163e1 work@       # add a CLI chat to an account
python3 ferry-cli.py folder "auth refactor" ~/code/api   # set a chat's folder
python3 ferry-cli.py cursor-import 4191e56f work@        # Cursor -> Claude
python3 ferry-cli.py cursor-export "the title"           # Claude -> Cursor
python3 ferry-cli.py ui                          # the same interface in a browser (all but Nearby)
python3 ferry-cli.py ui --demo                   # try it on example data

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 (%LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude\claude-code-sessions\ if Claude came from the Microsoft Store, and %LOCALAPPDATA%\Claude-Data\*\claude-code-sessions\ once a newer Claude has moved it there), 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?

Not over the internet. Ferry reads and writes local files. Its one network feature, Nearby, only talks to other Ferry apps on private and link-local addresses on your network, is off until you turn it on, and sends a chat only after both people confirm the same code. The transfer is encrypted.

The Claude app doesn't list the chats I ran in the terminal or in VS Code. Where are they?

On disk, in ~/.claude/projects, like every other chat. They just have no per-account record, and that record is all the app lists from. Ferry shows them under not in an account; Add to account writes the record, and Claude lists the chat from then on. The transcript isn't touched, so claude --resume still finds it.

The other computer doesn't show up in Nearby.

Turn Nearby on at both ends. The first time, allow Ferry on the local network (macOS) or through the firewall (Windows), and make sure Windows has the Wi-Fi set to Private. Some office and café networks block discovery: then type the address the other person's Nearby menu shows into the box at the bottom of Send to.

Why does my Mac or PC warn me when I open it?

Neither build is code-signed. On macOS 15 and later, open Ferry once, then click Open Anyway in System Settings → Privacy & Security (on macOS 14 and earlier, right-click the app → Open). On Windows, SmartScreen → More info → Run anyway. Once each. If Windows says Smart App Control blocked an app, there is no Run anyway: use the CLI's ui command, which serves the same interface, or turn Smart App Control off in Windows Security.

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.