Provide an export/handover path before dropping support for a machine
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Summary
When Claude Code stops running on a machine, the user loses the only tool that knows where their work and memory live — on that machine, at that moment, with no warning and no export path. The data isn't locked in, but the index to it is.
Request: a first-class "compile everything and hand it over" command, and ideally a warning before support is withdrawn.
What happened
I run Claude Code across two Macs. The older one (macOS below the current floor as of a recent release) stopped being able to run Claude Code from one day to the next. That machine held:
- ~2 months of accumulated project memory in
~/.claude/projects/*/memory/ - several projects that existed only there
- a
CLAUDE.md-driven working setup built up over many sessions
None of it was deleted. All of it was still on disk. But the agent that had been the working index to all of it was gone, and I had to ask Claude on my other machine — which had never seen that filesystem — where its own memory directory lived and what shape it was in.
Why "your data isn't locked in" isn't the answer
It's true that memory is plain markdown and projects are just files. That's good design and I'm glad of it. But it misses the failure mode:
The agent is the index. After a couple of months, what's valuable isn't only the files — it's knowing which of them matter, which are stale, what was decided and why, and which folder is the current head. Claude Code accumulates exactly that, and it evaporates from the user's reach at the moment support drops, while the bytes sit there untouched.
Put another way: the loss isn't storage, it's retrieval. And it lands precisely when you can no longer ask the thing that knows.
What I'd like
1. An export command. Something like:
claude export --out ~/handover
Collecting, at minimum:
- every
~/.claude/projects/*/memory/folder, keyed by project so nothing gets mixed - discovered
CLAUDE.mdfiles - a manifest of project paths worked in, with last-session dates
- deliberately not session transcripts or auth state unless explicitly asked for
2. A deprecation warning with a deadline. "This machine will stop being supported after version X — run claude export before then." A single line at session start for a few releases beforehand would have made this a non-event.
3. Failing both, documentation. The memory path is not obvious, and the natural instinct — grab all of ~/.claude — sweeps up session transcripts and auth state that shouldn't travel or land in a repo.
Additional wrinkle worth knowing about
My first recovery attempt went via Google Drive, which stores unopened files as placeholders. The copy produced intact directory trees with the contents silently missing — one folder was 717 MB containing three files. Anyone hitting this problem is likely to reach for a cloud sync as the fix, and it fails quietly in a way that looks like success. An export command producing one self-contained archive would sidestep that entirely.
Workaround, for anyone finding this
I ended up writing the tool myself. It runs on any Mac with a shell, needs no Claude Code, and does three things:
--memory— copies~/.claude/projects/*/memory/plus discoveredCLAUDE.mdfiles into one folder, keyed by project, and takes nothing else from~/.claude--archive— tarballs each project with build artifacts and secrets excluded--push— secret-scans each project, thengit init+gh repo create --private+ push
It's ~200 lines of bash. That it needed writing at all is the point of this issue.
Environment
- Affected machine: older Intel MacBook, macOS below the current supported floor
- Working machine: macOS 15.6
- Claude Code via the desktop app
Proposed Solution
1. claude export
claude export --out ~/handover
Produces one self-contained folder (or tarball) containing:
- every
~/.claude/projects/*/memory/directory, keyed by project so nothing gets mixed - discovered
CLAUDE.mdfiles, with their originating paths preserved in the filename - a manifest: project paths worked in, first and last session dates, session counts
- not session transcripts and not auth state, unless explicitly requested with a flag
That last exclusion matters. The obvious user instinct is to copy all of ~/.claude, which sweeps up transcripts and credentials — exactly the things that shouldn't travel between machines or land in a repo.
2. A deprecation warning with a deadline
When a machine is approaching the supported floor, one line at session start for a few releases beforehand:
This machine will stop being supported after vX.Y. Run `claude export` before then.
This alone would have made my case a non-event. The problem isn't that support ended, it's that it ended without notice and without a route out.
3. claude export should work on an unsupported machine
Ideally the export path keeps working — as a minimal, dependency-free mode — even once the full agent won't run. If it stops working at the same moment as everything else, it isn't a failsafe.
Why this is worth building rather than documenting
The memory format is stable and the paths are knowable, so this is a small feature. But the user who needs it is by definition the user who can no longer ask Claude how to do it, on the machine where the answer lives. A documented path helps someone who already knows to look. A command helps someone who has just been locked out.
Alternative Solutions
_No response_
Priority
Critical - Blocking my work
Feature Category
CLI commands and flags
Use Case Example
_No response_
Additional Context
_No response_