X-RayView

X-RayView

X-RayView reviews a GitHub pull request inside VS Code or Cursor. Agents on your computer read the change. You keep the findings you agree with, then you post the review. Nothing goes to GitHub until you press Post now, unless Post all findings when finished is checked beside Run.

This guide is also on the web: xanadupia.github.io/xrayview.

Four steps: open a pull request, agents read the change, you decide what to keep, then post the review to GitHub

Start here

You need:

Install X-RayView from the Extensions view. The id is aliqaryan.xrayview. Cursor installs it from Open VSX. VS Code installs it from the Visual Studio Marketplace. Reload the window when the editor asks.

Then:

  1. Click the X-RayView icon in the activity bar.
  2. Run X-RayView: Choose Agent Harnesses… and pick Cursor, Claude Code, Codex, or Pi, then a model. Claude Code, Codex, and Pi also ask for a level.
  3. Open a pull request and press Run.

If the sidebar stays empty, run gh auth login, then Refresh.

Automatic runs are on. About two minutes after the first start, agents begin on pull requests that request your review by name. Turn off xrayview.agents.autoRun before that if you want to press Run yourself.

The review page

The review page: Post review in the bar, your decision under the title, the model line with Change, and the findings

What you seeWhat it means
Post reviewYou have not posted yet. Opens a preview, then Post now sends it.
Update reviewYou already posted. The button is no longer filled in. It sends another review.
The line under the titleWhat you did, such as "You approved this 2 hours ago". It stays there after the pull request is merged.
ChangeOpens the model picker. The line next to it is the model that already ran.
Run agents / RerunRuns the agents. While they run, the button says Agents are running, and clicking it shows what each agent is doing.
Post all findings when finishedThe checkbox beside Run. Check it, then run the agents, from Run or from OK after you pick a model. When that run finishes, every open finding is added as its suggested comment and the review is posted to the pull request. It posts as comments. It does not approve or request changes. Uncheck it before the run finishes to keep the findings here. A run that starts on its own is left for you to post.
The arrow beside itOpens Choose model…, with what the agents will run on under it, such as Codex · gpt-6-astra · medium, and Agent activity…. Both are there before and after a run, and while the agents run.
A findingKeep it, reword it, or dismiss it. Only what you post is visible to the author.
Add all N to my reviewUnder the briefing's findings list, and as Add all N on each finding. Adds every open finding at once, each as its suggested comment on its line, at its level. Undo in the message takes them all back out. Edit or delete any of them before you post.

Comments stay on this computer until you post them.

Every comment has a level, High, Medium, or Low. On GitHub it opens the comment as a colored priority tag, as Greptile's comments do: P1 for High, P2 for Medium, P3 for Low. Pick it under the kind of comment when you write one.

CommentLevel it starts at
From an agent findingThe finding's severity
BlockingHigh
Suggestion, question, or a plain commentMedium
Nit or praiseLow

Replies post as written, since the thread's first comment has the level. When X-RayView reads a pull request, its own P1, P2, and P3 tags and Greptile's P0 and P1 (High) and P2 (Medium) show as the level on each thread.

Pick a model

Choose Agent Harnesses… is the picker. Choose model… under the arrow beside Run agents, and Change on the model line, open it too. Its top rows are Cursor Agent, Codex, and Claude Code. Pick one, then a model, and every agent runs on it. For Pi, use Default for all agents.

For Codex and Claude Code, Change installed version… at the bottom of the model list picks another installed copy, or installs one.

After you pick, X-RayView says what the agents will use, such as "Claude Code agents will use Opus 5.5 at high effort." Press OK to run them again on the open pull request.

One agent can use a different model from the others. That model's name is stored on that agent and wins over the default.

What runs by itself

Agents start on their own only when a pull request requests your review by name, when it opens and after each push. A two-minute pause folds a burst of pushes into one run. Drafts are skipped. Each pull request gets at most five automatic runs. A pull request over 100 files or 5,000 changed lines waits until you press Run.

If the pull request is already approved, X-RayView asks once per push: Skip this PR, Run anyway, or Always skip approved.

With several windows open, one window starts the automatic runs. A pull request's agents run in one window at a time. The others say they are running in another window.

If something looks wrong

What the sidebar shows

A pull request appears in the first group it fits.

GroupWhat is in it
Review requested from youYour review is requested by name. Automatic runs use this group only.
Assigned to youYou are an assignee.
You reviewedStill open, not yours, and you have reviewed it.
You're a code ownerIt changes files you or a team of yours own.
Your teams' requestsA review is requested from one of your teams.
Your pull requestsYou opened it.
WatchedOpen pull requests in repositories you list.
Opened hereOpened from Open a Pull Request… or a link.
Others you could reviewUp to 10 more open pull requests in those repositories.
Recently merged or closedOnes you reviewed or wrote, for the last 3 days.

The icon on a row is the pull request: green is open, a draft icon is a draft, purple is merged, and red is closed. The colored dot beside it is the risk: green is low, orange is medium, and red is high. The full score is in the row's tooltip. While agents are running, the icon is a spinner.

Each row also says where X-RayView's review stands, right after the pull request's state:

Row saysWhat it means
✓ reviewed, 13 findingsThe agents reviewed the latest commit.
reviewed, new commitsThe agents reviewed an older commit. Rerun reviews the latest.
not reviewedThe agents haven't reviewed it yet.
reviewing 2/5, review queuedA review is running or waiting to start.
review failedThe last review failed. The tooltip has the error.

The tooltip says it in full on its X-RayView line, such as "Reviewed a9dca66 3 hours ago: 13 findings." On the review page, the same state is a pill beside the risk score, such as X-RayView reviewed · 13 findings or X-RayView reviewing · 2/5. Click it to open Agent activity.

The view menu groups by relationship, repository, or author. Filter… is one checklist. My pull requests shows only ones you opened. Each of status and author has its own All. Check any of the rest, then press Return. The list only contains the pull requests it has already loaded, including recently merged and closed ones.

The agents

Five agents ship. The guide checks the description, sets a reading order, and draws the flow. Architecture, correctness, tests, and security look for problems. You can add more with X-RayView: New Agent….

On Claude Code, the agents that look for problems hand over to Claude Code's own /code-review. It runs once, at the effort level you picked, and its findings show under one Code review agent. The guide keeps its own instructions, and agents on Cursor, Codex, or Pi run as usual. /code-review reads the diff with git in Claude Code's sandbox, which writes nothing and reads only the checkout and its git history. X-RayView: Show Agent Log has its report.

To watch the agents work, click Agents are running, or open the arrow beside Run agents and choose Agent activity…. The agents are listed the way GitHub lists a pull request's checks: a line that sums them up, such as "1 failing, 1 in progress, 2 successful agents", then each agent under its status with its harness, model, and time. Click an agent's name, or open its ⋯ menu and choose View details, to see its log. All agents goes back. In the log, what the agent says stands as text, and the commands, reads, and searches between those messages fold into one line, such as "Ran 2 commands, read cart.js". Open that line for each step, and open a command for its output. The activity stays after the run until the next one. Pi reports its work when it finishes, so its steps don't show.

The first run writes ~/.xrayview (XRAYVIEW_HOME moves it): agents.yml for the list, and one instruction file per agent. Customize Agents… opens those files. Changes apply on the next run.

What leaves this computer

Stays here: drafts, agent results, run logs, and ~/.xrayview. The review page does not load remote images, fonts, or scripts. There is no telemetry.

Leaves:

Agents do not post to GitHub by themselves. A pull request's own Cursor hooks, rules, and AGENTS.md do not run. Your own ~/.cursor rules still apply. Before posting, X-RayView refuses a review that looks like it contains a private key or token.

X-RayView adds no charge of its own. Usage counts against the account of the program that ran.

Commands

CommandWhat it does
Open a Pull Request…Open a review from a GitHub link or owner/name and a number.
Choose Agent Harnesses…Pick Cursor, Claude Code, Codex, or Pi, then a model.
Run Agents / Stop AgentsStart or stop the agents.
Show Agent LogTokens, cost, errors.
Customize Agents…Open the agent files.
Copy Agent Review as MarkdownCopy the findings for another agent. It includes code. Paste it only where that code may go.
Copy Link to This ReviewCopy an aliqaryan.xrayview link.
Show Review Metrics / Delete Review MetricsA local log of reviews you posted. It is never uploaded.

Open a Pull Request… is ⌥⇧⌘P on macOS and Ctrl+Shift+Alt+P on Windows and Linux.

Settings

Diffline's diffline.* settings do not apply here.

SettingDefaultWhat it does
xrayview.harnessclaudeDefault program: claude, codex, pi, or cursor
xrayview.cursor.path / .model / .extraArgscursor-agent / empty / noneCursor Agent CLI and model
xrayview.claude.path / .model / .extraArgsclaude / sonnet / noneClaude Code
xrayview.codex.path / .model / .extraArgscodex / empty / noneCodex. Empty model uses the CLI's default
xrayview.pi.path / .model / .thinking / .extraArgspi / empty / empty / nonePi. Model looks like provider/id
xrayview.agents.autoRunonAutomatic runs when your review is requested by name
xrayview.agents.enabledemptyOnly these agent ids. Empty runs every enabled agent
xrayview.agents.maxParallel5Agent processes at once
xrayview.agents.quietPeriodSeconds120Wait after a push before an automatic run
xrayview.agents.maxAutomaticRuns5Automatic runs per pull request
xrayview.agents.skipDraftsonNo automatic runs on drafts
xrayview.agents.autoRunMaxFiles / autoRunMaxLines100 / 5000Larger pull requests wait for Run
xrayview.agents.approvedPullRequestsaskask, skip, or run
xrayview.agents.timeoutMinutes20Stop an agent that runs longer
xrayview.watch.repositoriesnoneAlso list open pull requests in these owner/name repositories
xrayview.watch.pollSeconds60How often to check GitHub. At least 15
xrayview.watch.recentlyClosedDays3How long merged or closed pull requests stay listed. 0 hides them
xrayview.sidebar.groupByrelationshiprelationship, repository, or author
xrayview.sidebar.mineoffOnly pull requests you opened
xrayview.sidebar.authoremptyGitHub logins to show. Empty shows everyone
xrayview.sidebar.statusemptyStatuses to show: open, draft, merged, closed. Empty shows all of them
xrayview.sidebar.sortByriskrisk, created, or updated
xrayview.metrics.enabledonRecord the local metrics log
xrayview.clonesnone"owner/name": "/path/to/clone"

The other xrayview.watch.* switches turn each sidebar group on or off. They are on by default.

X-RayView and Diffline

X-RayView is Diffline 0.3.2 by Armin Karimi, plus Cursor as a way to run the agents. You can install both. They do not share settings, reviews, or links. If automatic runs are on in both, both can start agents on the same pull request.

X-RayViewDiffline
Extension idaliqaryan.xrayviewarminkarimi.diffline
Settingsxrayview.*diffline.*
Agent files~/.xrayview~/.diffline

Comments that span several lines, file-level comments, and editing a comment after it is posted are not supported yet.

License

MIT. Copyright (c) 2026 Ali Qaryan for the Cursor agent runner and this edition. Copyright (c) 2026 Armin Karimi for Diffline, which X-RayView is built from.