Skip to content
| Marketplace
Sign in
Visual Studio Code>AI>X-RayViewNew to Visual Studio Code? Get it now.
X-RayView

X-RayView

Preview

Ali Qaryan

| (0) | Free
Review GitHub pull requests in VS Code or Cursor. Agents run on your computer, and you post the review.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

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.

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:

  • VS Code 1.95 or later, or Cursor
  • GitHub CLI, signed in: gh auth login (cli.github.com)
  • git
  • One program that can run the agents: Cursor Agent, Claude Code, Codex, or Pi

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 see What it means
Post review You have not posted yet. Opens a preview, then Post now sends it.
Update review You already posted. The button is no longer filled in. It sends another review.
The line under the title What you did, such as "You approved this 2 hours ago". It stays there after the pull request is merged.
Change Opens the model picker. The line next to it is the model that already ran.
Run agents / Rerun Runs the agents. While they run, the button says Agents are running, and clicking it shows what each agent is doing.
The arrow beside it Opens 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 finding Keep it, reword it, or dismiss it. Only what you post is visible to the author.
Add all N to my review Under 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.

Comment Level it starts at
From an agent finding The finding's severity
Blocking High
Suggestion, question, or a plain comment Medium
Nit or praise Low

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.

  • Cursor lists the models on your Cursor account. The first row keeps whatever cursor-agent used last. Pick a model by name if you care which one reviews.
  • Codex lists the models that CLI provides, then a reasoning level such as medium or high.
  • Claude Code lists its models with their versions, such as Opus 5.5 and Sonnet 5.5, then an effort level from low to max. Each row is Claude Code's short name, such as opus, so it moves to the newest version when Claude Code updates. To keep one version, set xrayview.claude.model to its full id, such as claude-opus-5-5.
  • Pi lists the models it is signed in to, then a thinking level.

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

  • The sidebar is empty. Run gh auth status, then gh auth login. Team requests and code owners also need gh auth refresh -s read:org.
  • An agent program is not found. Choose Agent Harnesses… says so, and can install Codex or Claude Code. Or set xrayview.cursor.path, xrayview.claude.path, xrayview.codex.path, or xrayview.pi.path to the full path. Sign in by running that program once. For Cursor: cursor-agent login.
  • Cursor cannot use a model. Open Choose model… beside Run agents, or Choose Agent Harnesses…, and pick a model from the list.
  • Agents fail or find nothing. X-RayView: Show Agent Log lists the agents, errors, tokens, and cost.
  • Agents are running in another window. Stop them there, or wait.
  • A link does nothing. Use cursor://aliqaryan.xrayview/... in Cursor and vscode://aliqaryan.xrayview/... in VS Code. A Diffline link does not open X-RayView. Pasting the GitHub URL into Open a Pull Request… works in either editor.

What the sidebar shows

A pull request appears in the first group it fits.

Group What is in it
Review requested from you Your review is requested by name. Automatic runs use this group only.
Assigned to you You are an assignee.
You reviewed Still open, not yours, and you have reviewed it.
You're a code owner It changes files you or a team of yours own.
Your teams' requests A review is requested from one of your teams.
Your pull requests You opened it.
Watched Open pull requests in repositories you list.
Opened here Opened from Open a Pull Request… or a link.
Others you could review Up to 10 more open pull requests in those repositories.
Recently merged or closed Ones 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 says What it means
✓ reviewed, 13 findings The agents reviewed the latest commit.
reviewed, new commits The agents reviewed an older commit. Rerun reviews the latest.
not reviewed The agents haven't reviewed it yet.
reviewing 2/5, review queued A review is running or waiting to start.
review failed The 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:

  • GitHub, through gh and git. The only write is Post now: your review, then any replies and thread resolutions you queued.
  • The model provider, through the program you picked. Agents send the diff, the title, the description, the review threads, and the files they read.

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

Command What 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 Agents Start or stop the agents.
Show Agent Log Tokens, cost, errors.
Customize Agents… Open the agent files.
Copy Agent Review as Markdown Copy the findings for another agent. It includes code. Paste it only where that code may go.
Copy Link to This Review Copy an aliqaryan.xrayview link.
Show Review Metrics / Delete Review Metrics A 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.

Setting Default What it does
xrayview.harness claude Default program: claude, codex, pi, or cursor
xrayview.cursor.path / .model / .extraArgs cursor-agent / empty / none Cursor Agent CLI and model
xrayview.claude.path / .model / .extraArgs claude / sonnet / none Claude Code
xrayview.codex.path / .model / .extraArgs codex / empty / none Codex. Empty model uses the CLI's default
xrayview.pi.path / .model / .thinking / .extraArgs pi / empty / empty / none Pi. Model looks like provider/id
xrayview.agents.autoRun on Automatic runs when your review is requested by name
xrayview.agents.enabled empty Only these agent ids. Empty runs every enabled agent
xrayview.agents.maxParallel 5 Agent processes at once
xrayview.agents.quietPeriodSeconds 120 Wait after a push before an automatic run
xrayview.agents.maxAutomaticRuns 5 Automatic runs per pull request
xrayview.agents.skipDrafts on No automatic runs on drafts
xrayview.agents.autoRunMaxFiles / autoRunMaxLines 100 / 5000 Larger pull requests wait for Run
xrayview.agents.approvedPullRequests ask ask, skip, or run
xrayview.agents.timeoutMinutes 20 Stop an agent that runs longer
xrayview.watch.repositories none Also list open pull requests in these owner/name repositories
xrayview.watch.pollSeconds 60 How often to check GitHub. At least 15
xrayview.watch.recentlyClosedDays 3 How long merged or closed pull requests stay listed. 0 hides them
xrayview.sidebar.groupBy relationship relationship, repository, or author
xrayview.sidebar.mine off Only pull requests you opened
xrayview.sidebar.author empty GitHub logins to show. Empty shows everyone
xrayview.sidebar.status empty Statuses to show: open, draft, merged, closed. Empty shows all of them
xrayview.sidebar.sortBy risk risk, created, or updated
xrayview.metrics.enabled on Record the local metrics log
xrayview.clones none "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-RayView Diffline
Extension id aliqaryan.xrayview arminkarimi.diffline
Settings xrayview.* 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.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft