Browse docs
Docs

Checkpoints, stop & rewind

Every message is a checkpoint — stop mid-run, continue later, or rewind the thread to an earlier state.

Every message you send is a checkpoint: a point in the conversation you can come back to. Threads & branches states the rule; this page is the detail — what a checkpoint is made of, and what you can do with one.

The shape of a turn

Each turn runs as a completion stream — a single execution attempt, described in more detail on how the lead agent works. A stream ends when the agent finishes, when you stop it, when it errors, or when it loops. The raw message log is written to disk after every stream, so a refresh, a crash, or a server restart never loses history.

you send ──▶ checkpoint ──▶ stream (one attempt) ──▶ commit on the thread's branch
                  ▲
                  └── rewind puts you back here

Stop and continue

You can Stop a stream mid-run — when the agent has clearly gone the wrong way, or when you've seen enough to redirect it. Nothing is lost: continuing later starts a fresh stream that picks up exactly where it left off, with the work already on disk.

Queue while it works

You don't have to wait for the agent to finish to say the next thing. Messages you send while it's working queue in the composer and land as the next turn, in order. Drafts persist per thread, so switching threads mid-sentence doesn't cost you the sentence.

Rewind

Rewind restores the conversation to an earlier checkpoint so you can take a different path from there — a different approach, a different framing, a correction you'd rather make before the agent built on it than after.

It's an iteration tool for work that hasn't shipped, and it's safe for one specific reason: agent output is committed per turn on the thread's own branch (git & commits). Stepping back and going again only rewrites that branch's story. Nothing has reached your default branch, because reaching your default branch takes a pull request.

After a merge, fork instead

Once a thread's PR has merged, rewind can't un-merge anything — the change is in your default branch and belongs to its history now. Continue in a fork: a fresh thread that inherits the whole conversation on a new branch, with its own PR lane.

That's the division of labor worth remembering. Rewind is for redirecting work in flight. A fork is for work that has already landed.