VCode home

Watch a pull request and wake the agent

Agents: claude, codex, opencode, cursor · On: phone, desktop · beta

VCode keeps an eye on a pull request for a tab. When a check fails, the branch starts to conflict, or a reviewer asks for changes, VCode sends that to the tab's agent as a message. The agent fixes it and pushes, and your phone gets a notification.

Why you would use it

The agent opened a pull request and finished its turn. CI runs for ten minutes after that, and a reviewer may come back an hour later. You do not want to sit and check. With a watch, the agent hears about each failure and gets back to work by itself.

How to use it

  1. In a tab, type /watch and the pull request's link or number in the message box (#draft), then send: /watch https://github.com/owner/repo/pull/12, or /watch 12 for a pull request in the tab's own repository. A toast reads watching PR #12 "<title>".

  2. The agent can start one too. VCode tells every agent to run v-code watch pr <link or number> after it opens or pushes to a pull request, so a tab that opens one usually watches it without you asking.

  3. Look at the status bar (#statusbar): each watched pull request is a segment, ⟳ PR #12 with a mark for how its checks stand.

    A tab with a watched pull request: a red PR #12 segment in the status bar and the wake-up message in the transcript.

  4. Tap the segment. A popup shows the title, the checks, a conflict if there is one, and how many wake-ups are used. Open on GitHub opens the pull request; Stop watching ends the watch.

    The popup for PR #12, with Cancel, Open on GitHub and Stop watching.

  5. Type /watch on its own to list the tab's watches in a toast, /unwatch 12 to stop one, or /unwatch on its own to stop every watch of the tab.

What you see

The segment, one per watched pull request:

Segment Means
⟳ PR #12 ✗ (red) A check failed, or the branch conflicts with its base
⟳ PR #12 … (amber) Checks are still running
⟳ PR #12 ✓ (green) Every check passed
⟳ PR #12 (amber) No checks yet

The transcript gets a row when a watch starts, Watching PR #12 "<title>", and one when it ends, Stopped watching PR #12: <why>. The why is merged, closed, stopped, 5 wake-ups used, or the words below about gh.

A wake-up is a row headed Pull request, with its first line in bold. VCode wrote it, not you, so it has no edit button. It lists what changed:

[PR #12 "Fix the build" needs you: https://github.com/owner/repo/pull/12
- Checks failed on abc1234: test https://…/job/1, lint https://…/job/2
- The branch conflicts with master.
- alice asked for changes: "first 200 characters of the review"
Fix each one and push to the branch; …]

If the agent is in the middle of a turn, the wake-up waits in the queue. If the tab is idle, it starts a turn.

With notifications on, your phone gets one titled <tab title> · PR #12 for each failure, conflict and change request, once when every check on a new commit passes (checks passed), and when the watch ends (merged, closed, stopped watching: 5 wake-ups used, or the gh words).

/watch and /unwatch toast what the computer answers. The refusals are:

Options and settings

Option Default What it changes
/watch <link or number> none Watches that pull request in this tab. A number, #12 or owner/repo#12 work too
/watch none Lists the tab's watches
/unwatch <number> none Stops that watch
/unwatch none Stops every watch of the tab
v-code watch pr <link or number> none The agent's way to start one; prints what it sees now
v-code watch stop [<number>] none The agent's way to stop one, or all
v-code watch list [--json] none The tab's watches

Limits and known gaps