Allow forking a session as a new session from a checkpoint (branch, not in-place rewind)
Open 💬 0 comments Opened Jun 12, 2026 by ext-wki
Workflow that has no clean answer today
After a productive brainstorming session that produced a few tickets, I wanted to:
- Keep this session as an immutable snapshot I can revisit months later.
- Continue new work from a few turns back in the same context, without polluting the snapshot.
Today's primitives don't cover this:
/rewindis in-place / destructive — it mutates the same session file. The "preserve original + branch new" intent isn't expressible.claude --resume <id>lands at the end of the file. The moment I send a new message, the snapshot is gone.- Manual copy to a new UUID-named file in the project's session directory doesn't work cleanly:
sessionIdis baked into every record ("sessionId":"..."), so the filename and the embedded ID would diverge. Behavior on resume is undefined. - Manual backup to an external directory preserves the bytes but isn't directly resumable — restoring it later would overwrite any progress the live session has accumulated under the original UUID since the rewind point.
What I'd love
A /fork (or /branch) command that:
- Takes a checkpoint (same picker UX as
/rewind). - Creates a new session ID seeded from the chosen checkpoint.
- Leaves the original session untouched.
- Drops me into the new session.
Equivalent CLI form: claude --resume <id> --fork-from <checkpoint>.
Bonus: a "pin / mark as snapshot" annotation that lets a session show up in --resume listings with a label, so the bookmark survives garbage collection of old project sessions.
Why this matters
The "use the session as a starting template for related future work" pattern is genuinely common — design reviews, brainstorming that spawns multiple follow-ups, debugging sessions you want to come back to. Today the workaround is OS-level file backup, which is brittle and requires understanding the JSONL format and project-dir conventions.