Rewind a conversation
Return to an earlier message when you want to take the conversation in a different direction. Rewind creates a retained conversation branch and restores the selected message as an unsent draft.
Rewind to a message
Once the current turn has finished, open the rewind picker in either of two ways:
- Run the
/rewindcommand. - Press
Esctwice in quick succession from an empty composer. The firstEscshows Esc again to rewind.
Then work through the picker:
- Select a previous message with
UpandDown. You can also useCtrl+P,Ctrl+N,Home, andEnd. - Press
Enterto open the action screen. - Review any warnings, leave Rewind conversation selected, and press
Enteragain. - Edit the restored message in the new branch, then submit it when you're ready.
Press Esc to leave the message picker. From the action screen, Esc returns to the picker. You can also select Never mind to cancel.
Both entry points require the idle main conversation. The double-
Escgesture also needs an empty composer: anEscthat interrupts a running turn, closes another surface, or acts on a draft does not start the gesture.
Understand the new branch
Suppose the original conversation contains three inputs:
textA → B → C
If you rewind to B, Muse Code creates a child session with the context before B:
textBranch context: AComposer draft: B
The selected input is not submitted automatically. You can revise it before you continue.
The source session keeps A → B → C and remains available through /resume. The child is also a normal retained session, so you can resume it later or rewind it again. Muse Code displays a divider when it moves your terminal into the branch:
text• You're continuing from this point in a new conversation
The earlier scrollback above that divider remains visible for orientation. Only the history before the selected input enters the child model's context.
Keep workspace changes separate
Rewind changes conversation history only. It does not restore, revert, or delete workspace files.
Any shell commands, subagents, workflows, approvals, or deliveries that still belong to the source session continue there. The action screen warns you when Muse Code detects active background work. The new branch does not receive those live task handles.
Review the working copy before you continue if the discarded conversation turns changed files. Restore code separately with your source-control tools when needed.
Read rewind availability
The picker labels each prior input:
- Exact: Muse Code can recreate the branch and restore the selected input without known loss.
- Review required: Muse Code can create the branch, but part of the selected input is unavailable. The action screen describes the missing attachment or skill. Replace or remove any missing-content marker before you submit the restored draft.
- Blocked: Muse Code cannot prove that the branch would preserve valid history. Select the row to read the reason. Pressing
Enterdoes not continue from a blocked row.
Some inputs do not appear as rewind targets. Rewind uses complete top-level turn boundaries. Mid-turn steering, pending queued input, local slash commands, and active turns are not separate rewind points.
Muse Code can also block a point when:
- The point is older than retained history.
- The conversation contains Goal history that cannot cross the selected boundary.
- A required attachment in the retained prefix is unavailable.
- The retained tool history cannot be replayed safely.
- The original input or plugin binding cannot be reconstructed safely.
Older sessions can contain messages that predate rewind support. Muse Code identifies those messages in the picker or explains that the conversation has no supported rewind points.
Know the session requirements
Rewind is available only in interactive terminal sessions with session logging enabled. It is unavailable in sessions started with muse --no-session-log.
Open the picker with the /rewind command, or with the double-Esc gesture from an empty composer. Either way, the main conversation must be idle.
Next steps
- Learn how to resume and fork retained sessions in working with the agent.
- Manage source-session work through background tasks.
- Coordinate independent branches with session messaging.