While the assistant works you get a live diff in the editor. When the task ends you get a card listing every file the run touched, with keep or revert for the whole run or for one file at a time.

## While it works

When the assistant writes or edits a file you have open, that pane switches to a side by side diff with **Keep** and **Revert**. Repeated edits to the same file chain together, and Revert takes you back to the content from before the run started.

Drawings get a visual review. You see the rendered canvas with an After and Before flip, the diagram source diff when the drawing came from a diagram, and a raw view as a fallback.

## When the task finishes

Each run produces one **changeset**, a single reviewable unit covering every file that run created or changed. An unreviewed changeset shows up as a review card under the messages in the panel, and it is still there when you reopen that conversation tomorrow.

| Action | What it does |
|---|---|
| **Keep all** | Marks the changeset reviewed and clears the diffs. Nothing changes on disk, because the changes are already saved |
| **Revert all** | Restores every file in the run to its pre-run content, and deletes files the run created |
| Per file revert | Restores that one file and leaves the rest of the run alone |
| Per file delete | Removes a file the run created |

Any of these marks the changeset reviewed, and the card goes away. The per file diff in the review panel compares the captured version against the file as it is right now, so it includes any edits made since the run.

## Keep and Revert act on saved changes

> [!IMPORTANT]
> **By the time you see a diff, the change is already saved.** The assistant's tool call wrote the file on the server, and the editor shows you what it did. Keep and Revert are review actions on an applied change, not an accept or reject of a proposal.

This is safe because both directions are recoverable:

- Every write, including the assistant's, captures a version of the previous content. See [[How Versioning Works]].
- Reverting is itself a write, so Monofile versions it too. If you revert a run and change your mind, the content you reverted away from is still in the file's history.

If a run is about to do something large, asking the assistant for a checkpoint first gives you one named point to return to. See [[Checkpoints]].

## If a file changed after the run

Reverting a whole run can conflict. That happens when a file in the changeset changed after the run finished, whether by you, by a later run, or by another device. Monofile refuses the revert and shows a banner listing the files that changed, with a **Force** option.

> [!WARNING]
> Forcing the revert throws away the later changes to the listed files. Usually the better move is to revert the files that did not change and handle the rest by hand from their version history. See [[Reverting Safely]].

## Reviewing later, or somewhere else

Review state lives on the server, so it survives refreshes and reaches other devices.

- A run you never watched, because you closed the tab or it happened on your phone, still shows its review card when you open that conversation.
- Opening a file that a recent unreviewed run touched shows the same Keep and Revert diff in its editor pane, even with the chat closed.

The desktop app runs the same assistant, but the review surfaces are currently web only. Open the conversation in the browser to see the diffs and to keep or revert a run.

## Next steps

:::cards
- [[Changesets]] — Runs grouped into one reviewable, revertable unit.
- [[Reverting Safely]] — Restore a file or undo a whole run, and what happens on a conflict.
- [[Approvals]] — Why some actions pause for approval, and how to answer them.
- [[Long-Running Tasks]] — Durable runs that survive reloads and closed tabs, and how to watch or stop them.
:::
