Command line
The revue command opens checkouts and pull requests in the app, installs Revue’s git hooks, and gives coding agents
the comments you send them. Install it from Setup or with Revue › Install Command Line Tool, which writes a small
script to /usr/local/bin/revue that starts Revue.
The app answers the commands that open things. Every other command goes to revue-server, a helper inside the app,
so revue hooks status and revue-server hooks status are the same command.
Open things in the app
Section titled “Open things in the app”revue [PATH]Opens the current folder, or PATH, in Revue, starting the app if it isn’t running, then returns. A checkout opens on
its current branch, with its stack and snapshots. If a tab already shows it, Revue switches to that tab. revue stack
does the same as revue.
To compare two revisions of a checkout, name it with --repo and add --compare:
revue --repo PATH --compare FROM TOrevue --version prints the version, and revue --help prints a usage summary.
--new-tab and --new-window
Section titled “--new-tab and --new-window”Add --new-tab to open a new tab even when one already shows the checkout, or --new-window to open a new window.
revue relaunch
Section titled “revue relaunch”revue relaunch [same arguments as revue]Quits the running app so the copy you installed starts again with your windows and tabs, then opens what you named,
as revue would. Use it after replacing Revue.app by hand.
Pull request targets
Section titled “Pull request targets”revue --pr
Section titled “revue --pr”revue --pr OWNER/REPO#NUMBER [one target]Opens a pull request without a checkout. Add at most one target to open it at one thing:
--threadID: a review thread, by its GitHub node ID.--commentID: a review comment, by its node ID or the number in a#discussion_rlink.--reviewID: a submitted review, by its node ID or the number in a#pullrequestreview-link.--itemID, with--sourceNAME: a result from an agent source. Without--source, every source is searched.--pathFILE, with--lineN,--sideLEFT|RIGHTand--headSHA: a file, or a line in it. The side isRIGHTunless you say otherwise, and--headnames the commit the line number is for.
--view backport opens the pull request in the backport comparison, and can go with any target.
A Revue link does the same as --pr. Copy one with Edit › Copy Revue Link to Thread, and open it with:
revue 'revue://pr/OWNER/REPO/NUMBER?thread=ID'--pr and a Revue link open on their own, so they can’t be combined with a checkout path or --repo.
Sign in to GitHub
Section titled “Sign in to GitHub”revue auth
Section titled “revue auth”revue auth loginSigns in to GitHub with a code from the terminal and saves the token as token in Revue’s data folder. It needs a
config.json in that folder naming a GitHub OAuth app, so it’s for scripted setups. Most people sign in from Setup
or Settings › Accounts. See Sign in to GitHub.
Git hooks
Section titled “Git hooks”revue hooks
Section titled “revue hooks”Run these inside a checkout. With neither flag, they act on both hooks.
revue hooks install [--rewrite-log] [--change-id]revue hooks uninstall [--rewrite-log] [--change-id]revue hooks status [--rewrite-log] [--change-id]revue hooks print --rewrite-log|--change-id--rewrite-logis git’spost-rewritehook. It logs each amend and rebase, so a change keeps its snapshots and comments when you rewrite it.--change-idis acommit-msghook that adds a Gerrit-styleChange-Idtrailer to each commit. Under jj, installing it is refused, because jj tracks changes itself.statusprintsinstalled,absentorforeignfor each hook. Foreign means a hook Revue didn’t write is there. Revue never overwrites one, and prints the line to add to your own hook instead.printwrites one hook’s script to the terminal, so you can share it.
If core.hooksPath points somewhere else, install says so, because git won’t run the hooks it installed. See
Keep track of changes through rebases.
Agent commands
Section titled “Agent commands”Coding agents run these in a checkout to read the comments you send them. Claude Code’s plugin runs them for you (see Claude Code plugin), and Codex runs them when you ask (see Use Revue with Codex). They work whether or not the app is running.
revue comments
Section titled “revue comments”revue comments [--json] [--since <cursor>] [--all] [--session <id>]Lists the comment threads sent to this session, with where their lines are now. --json prints them for a program,
with a cursor to pass to --since next time. --all lists every local thread in the checkout.
revue reply
Section titled “revue reply”revue reply <id> <<'EOF'What you changed and where.EOFReplies on a thread. Give the text after the ID, or leave it out (or write -) to read it from standard input. A
quoted heredoc, as above, stops the shell changing the text. A resolved thread takes no replies until you reopen it
in Revue.
revue resolve
Section titled “revue resolve”revue resolve <id> [--message <text>]Marks a thread addressed, with an optional last reply. It doesn’t resolve the thread: you check the change and resolve it in Revue.
revue checkpoint
Section titled “revue checkpoint”revue checkpoint [--message <text>] [--quiet] [--leftover]Records the working copy as a checkpoint, labelled with the message. Checkpoints need a branch, so with a detached
HEAD it prints that nothing was recorded. --leftover records only turns that earlier sessions captured but never
recorded, and --quiet prints only errors.
revue agent
Section titled “revue agent”revue agent attach [--agent claude-code|codex] [--name <title>]revue agent await [--timeout <seconds>]revue agent prompt | stop | tool | detachWhat the plugin’s hooks run. Codex runs revue agent attach --agent codex --name Codex at the start of a task, so
Revue shows its session. The others follow a Claude Code session’s turns and wake it when comments arrive.
revue agents
Section titled “revue agents”revue agents install [--dry-run] [--yes]revue agents uninstall [--dry-run] [--yes]revue agents statusInstalls, updates or removes the Claude Code plugin, and prints its state. Install and uninstall show their plan and
ask first. --dry-run only prints the plan, and --yes skips the question. See
Claude Code plugin.
For developers
Section titled “For developers”These serve Revue’s review API and run its AI review outside the app, for scripts and Revue’s own tests. The app never needs them.
revue serve
Section titled “revue serve”Serves every tracked repository on 127.0.0.1:8787 and syncs them from GitHub every minute. It prints REVUE_READY
and the address once it’s listening.
revue track
Section titled “revue track”revue track <owner/repo>Copies a GitHub repository into the data folder and adds it to what revue serve syncs.
revue ai-review
Section titled “revue ai-review”revue ai-review <owner/repo> <pr> <toSeq> [fromSeq]Runs an AI review of a tracked pull request’s snapshot toSeq, or of what changed since snapshot fromSeq.
revue ai-review-backport
Section titled “revue ai-review-backport”revue ai-review-backport <owner/repo> <backportPr> <sourcePr[,sourcePr...]|auto> [backportSeq]Reviews a backport against the pull requests it came from. auto finds them.
revue gql-schema
Section titled “revue gql-schema”Prints the review API’s GraphQL schema.
The app also takes flags that only development builds and tests use: --server with --group and --snapshot,
--demo, --demo-files, --visual-fixture and --benchmark. See
Environment variables for the variables these commands read.
Exit codes
Section titled “Exit codes”| Command | 0 | 1 | 2 |
|---|---|---|---|
revue, revue --pr, revue relaunch |
Opened | The app couldn’t open it | A mistake in the arguments |
revue hooks, revue auth and the developer commands |
Done | The command failed | A mistake in the arguments |
| The agent commands | Done | The command failed, or a mistake in the arguments | Only revue agent await: new comments arrived |
Run by one of the plugin’s hooks outside a checkout Revue knows, the agent commands exit 0 and do nothing.