Sessions, reviews, and rounds
A session holds all of your review state for a working directory: comments, reviewed marks, plans, and submission history. Sessions persist to disk so your work survives restarts. A review is the full arc from when you start looking at code to when you approve it. Within a review, you go through multiple rounds of back-and-forth feedback:- You review the diffs and leave comments
- You submit with Request Changes — this creates a snapshot of the current state
- The agent addresses your feedback and makes more changes
- You review just the new changes (round 2) and submit again
- Repeat until you’re satisfied, then submit with Approve
Reviewed state
Every file in the sidebar has a reviewed state: either reviewed (green checkmark) or unreviewed (empty circle). You toggle this withr, and filter the sidebar with / to show only unreviewed or reviewed files.
There are two layers to reviewed state:
- Draft — while you’re working through files, pressing
ris a working indicator. It helps you track your progress during a round. The sidebar filter works with it immediately. - Committed — when you submit a review, monocle captures a snapshot. This snapshot is the “real” reviewed state that drives automatic change detection on the next round.
Snapshots and change detection
When you submit a review with Request Changes, monocle creates a snapshot — a record of every file’s content at that moment. On the next round, monocle compares each file against the snapshot:- File changed since the snapshot — automatically marked as unreviewed
- File unchanged since the snapshot — stays marked as reviewed
- New file not in the snapshot — marked as unreviewed
- Deleted file — removed from reviewed state
How snapshots are stored
Monocle uses git’s object store to efficiently track file state. When a snapshot is created, each file’s content is written to git’s object store viagit hash-object, and the resulting SHA is stored in monocle’s database. This means:
- Only a 40-character hash is stored per file, not the full content
- Git handles compression and deduplication automatically
- Works with both committed and uncommitted files — the snapshot captures whatever is on disk
What marks files as reviewed on submit
You can control which files are marked as reviewed when you submit a review with themark_reviewed_on_submit config option:
| Value | Behavior |
|---|---|
"all" (default) | All files are marked as reviewed. Assumes you’ve seen everything. |
"commented" | Only files you left comments on are marked as reviewed. |
"manual" | Only files you explicitly toggled with r are marked as reviewed. |
Snapshot lifecycle
Snapshots accumulate across rounds within a review:- Request Changes — creates a new snapshot for the current round
- Approve — wipes all snapshots. The review is complete.
- Change base ref — wipes all snapshots. You’ve changed context, so old snapshots are no longer meaningful. Monocle shows a confirmation dialog if you have active snapshots.
Viewing changes since a prior round
Open the ref picker withg b and you’ll see a Since Review section listing your prior review rounds:
Snapshots only appear in the ref picker after you’ve submitted at least one review with Request Changes. If you haven’t submitted yet, you’ll only see commits.
Edge cases
- Rebases and force-pushes — snapshots store content hashes, not commit references. They are completely immune to rebases, unlike GitHub’s “changes since last review” which breaks on force-push.
- File renames — the old path shows as deleted, the new path shows as new. Both are marked as unreviewed so you can review the rename.
- Binary files — content hashes detect changes, but monocle shows “binary file changed” instead of a diff.