Skip to content

Feature request: Fork or rewind a session from an earlier turn #537

Description

@andriusbug

Issue details

Problem:

Long sessions often reach a point where users want to try another approach or discard recent turns. Currently,
resuming or recovering a session does not provide an easy way to branch from—or return to—a specific earlier turn.

Proposed commands:

• /fork — Create and enter a new session starting at the selected turn. Preserve the original
session unchanged.
• /rewind — Move the current session back to the selected turn, removing subsequent turns from
active context.

Suggested behavior:

• /fork displays or returns both the source and new session IDs.
• /rewind asks for confirmation because it changes the current session.
• Turns can be selected through an interactive picker or stable turn identifiers.
• Tool calls, recovery checkpoints, compaction state, and attachments associated with retained turns are preserved.
• Neither command reverses external side effects such as file edits, commands, commits, or API calls.
• Rewound transcript data could remain recoverable internally, rather than being deleted immediately.

Examples:

─ text ───
/fork
/fork 12
/rewind
/rewind 12
──────────

Possible CLI equivalents:

─ bash ───────────────────────────────────
fx session fork --at
fx session rewind --to
──────────────────────────────────────────

Key distinction:

• /fork is nondestructive and supports exploring alternatives.
• /rewind changes the active history and supports abandoning an unsuccessful path.

This would provide lightweight conversation branching while making it explicit that session history and external
workspace state are separate.

Trace

No response

Sensitive information

  • I reviewed the information above and removed secrets and other sensitive data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions