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
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