Skip to content

Checkpoints and agent sessions

When you work on a branch on your own Mac, alone or with Claude Code or Codex, Revue keeps a history of the work as checkpoints and follows each agent session in the checkout. This page explains when that happens and what the session states and Addressed mean.

The sidebar of a local branch: a connected Claude Code session above the Checkpoints list, with agent turns, a push, a rebase-only checkpoint and a local commitThe sidebar of a local branch: a connected Claude Code session above the Checkpoints list, with agent turns, a push, a rebase-only checkpoint and a local commit

On a local branch, snapshots are called checkpoints. They’re the same thing: a checkpoint is a snapshot of local work. Revue records one when:

  • The branch moves. When Revue reads the branch and finds its tip or its base has changed since the last checkpoint, after a commit, an amend or a rebase, it records a new one. A rebase that changed no code is marked Rebase only, and a rebase that did is marked Rebase.
  • The pull request gets a push. A branch with a pull request also lists each push GitHub saw, marked Push.
  • An agent finishes a turn. With the Claude Code plugin, Revue captures the working copy the turn ended on and records it as a checkpoint labelled with Claude’s last message. A turn that ends on an API error is recorded too, without the error as its label. Codex has no hooks, so it records one only when it runs revue checkpoint.
  • You run revue checkpoint. It records the working copy as it is now. --message gives it a label.

Checkpoints need a branch. When HEAD is detached, or the branch has no commits yet, none are recorded and Revue shows only the live working copy.

A claude -p run stops its background hooks when it ends, so its last turn is recorded when the next Claude Code session in the same checkout starts or ends a turn. That checkpoint has no label. It’s recorded only while the commit it was made on is still checked out, and a turn older than 7 days isn’t recorded at all.

A checkpoint isn’t a commit you can restore. It’s a record you can diff: pick one, or two for a range, the same way you pick snapshots of a pull request.

A Claude Code session in a checkout Revue knows registers itself when it starts, and a Codex session when it runs revue agent attach. The sidebar of a local tab shows it with its state, and the context bar shows it as a chip while the sidebar is hidden.

State What it means
Working A turn is running. Comments you send wait until it ends.
Idle The session is waiting and listening, so comments you send reach it at once.
Idle (no recent activity) A turn started, but Revue has heard nothing for over 10 minutes: no prompt, no turn end and no tool call. Claude Code runs no hook when you press Esc, so an interrupted turn reads this way, and so does one tool call that runs longer than that. The session hasn’t ended.
Not listening The session’s wait for comments timed out. Comments you send arrive with your next prompt.
Disconnected The session ended, or Revue hasn’t heard from it for 12 hours. It’s shown, but comments aren’t sent to it.

The chip shortens the long one to “Claude quiet” so it fits.

Sending a comment never interrupts a turn. The comment waits until the turn ends and no tool call is running, or until your next prompt if the session stopped listening.

When the agent deals with a comment, it replies in the thread and marks it Addressed with revue resolve. Addressed is the agent’s word, not a verdict: check the change, then either

  • Resolve it (⇧E), which closes it on this Mac, or
  • choose Not addressed (E) to put it back in the agent’s list.

Only you resolve a thread. An agent can mark it addressed but never resolve it.

Local comments stay on this Mac and never go to GitHub. They say Not sent, never Pending.