EV gives the same change a fresh review context. Let your coding agent run the common review-fix-repeat loop, or open the review in Desktop when you want to inspect and curate the result yourself.

## Before you start

You need:

- [EV installed](/docs/getting-started/installation/) on an Apple Silicon Mac
- a Git or jj repository containing the work you want reviewed
- a base branch or ref to compare it with, such as `origin/main`
- a terminal opened at that repository

## Let your coding agent run the loop

EV includes an optional workflow skill for Codex and Claude Code. EV Desktop offers to install it when it detects a supported agent, or you can install it from the terminal:

```sh
# Codex
ev agent setup codex

# Claude Code
ev agent setup claude
```

The command shows its plan and asks before writing to your agent configuration.

Then invoke the workflow in your coding agent:

| Agent | Invocation |
| --- | --- |
| Codex | `$ev-review` |
| Claude Code | `/ev-review` |

The workflow asks EV to review the change in a separate context, reads the findings, fixes valid issues, records decisions, and reviews again when needed. You stay in the coding-agent conversation instead of moving findings between tools by hand.

:::tip
You can ask for a narrower pass in the same prompt—for example, “Use `$ev-review` and focus on authentication and error handling.”
:::

## Review with Desktop

Use Desktop when you want to read the evidence and make the final decisions yourself:

```sh
git fetch origin --quiet
ev review -b origin/main --desktop
```

`-b origin/main` reviews your current work against its base on `origin/main`. EV opens the review in Desktop, runs the selected review skills, and places each finding beside the relevant code and evidence. Replace `origin/main` with the remote base branch your work actually uses.

Work through the result:

1. Read the summary and findings.
2. Address a valid issue in the code, then choose **Resolve** to record that outcome.
3. Use **Dismiss** for a false positive, accepted risk, or deliberate decision not to fix it. Add a reason so the decision remains useful later.
4. Add your own comments where the automated review missed context.
5. Choose **Submit review**.

The waiting terminal receives the review as Markdown. Desktop also copies that Markdown to the clipboard, ready to paste into a coding-agent conversation.

:::note
**Resolve** records that a finding has been addressed. It does not ask an agent to make the change for you. Fix the issue—or decide how it should be handled—before recording the outcome.
:::

## Run an automated review directly

Agents and scripts can call EV without opening Desktop:

```sh
git fetch origin --quiet
ev review -b origin/main --stream --auto
```

- `--stream` emits newline-delimited JSON for an agent or script to consume.
- `--auto` selects relevant reviewer skills from the files in the change. AI review already runs by default.
- Using the remote ref avoids comparing against a stale local base branch.

## Choose what to review

Comparing the current work with its remote base is a common starting point, but it is only one review scope. Run `ev review` without a scope option for an interactive choice, or select one directly:

| Scope | Command |
| --- | --- |
| Current work against a base branch | `ev review -b origin/main` |
| Uncommitted changes against `HEAD` | `ev review --working-copy` |
| One commit | `ev review --commit <sha>` |
| Current work against an exact ref | `ev review --from <ref>` |
| Exact committed range | `ev review --from <base> --to <tip>` |

Add `--desktop` to inspect and curate the review in Desktop, or `--stream --auto` for an agent-friendly automated run.

See [Choose a review scope](/docs/guides/review-scopes/) for the differences between base branches, exact refs, commits, ranges, working-copy reviews, and supplied diffs.

## What EV keeps

The review is stored locally with its scope, evidence, findings, comments, and decisions. That durable record lets the next pass distinguish a new issue from something you already fixed or deliberately dismissed.
