---
title: "Verify an agent&#x27;s UI change without pulling the branch"
canonical_url: "https://krowk.com/blog/verify-agent-ui-changes"
last_updated: "2026-09-02T08:09:59.487Z"
meta:
  description: "Have the agent capture the screen it changed and push it to a permalink. The reviewer judges from a card carrying the commit, branch and dirty flag instead of spending twelve minutes on a local run."
  "og:description": "Have the agent capture the screen it changed and push it to a permalink. The reviewer judges from a card carrying the commit, branch and dirty flag instead of spending twelve minutes on a local run."
  "og:title": "Verify an agent's UI change without pulling the branch"
---

**Written 26 August 2026**

# **Reviewing a UI change you never ran**

Rebuilding a branch to look at one screen is why the fourth pull request of the afternoon gets approved on the diff alone. The agent already had the app running.

[Screenshot into a PR](https://krowk.com/guides/screenshot-to-github-pr) [Read the docs](https://krowk.com/docs)

The bottleneck in agent-driven development is not the agent. It is you, opening a pull request that says a button moved, and having no way to see that the button moved.

What that costs, honestly measured: fetch the branch, install whatever the lockfile changed, run the migrations, start the app, log in, click through to the screen in question. Twelve minutes to confirm one change, on a good day, and you will not do it for the fourth pull request of the afternoon. So the fourth one gets approved on the strength of the diff.

## Invert it: make the agent produce the evidence

The agent already has the app running. It just started it to make the change. Having it capture the result costs seconds at the end of a task that already took minutes, and it is the one moment when the environment that produced the change still exists.

There is nothing to integrate. The agent needs one standing instruction, in CLAUDE.md, AGENTS.md, or a Cursor rule:

CLAUDE.md

```
After any visual change, capture it (screenshot if static, a short screen recording if it is an interaction) and publish it with the krowk skill. If the skill is missing or fails, run `krowk help --json`, then `krowk push FILE --title "what changed" --json`, and paste `paste.url` where you report the work.
```

Static change, screenshot. Interaction, short recording — a dropdown that closes wrong is not a still image, and a reviewer watching four seconds of video is faster than a reviewer reading a paragraph about the four seconds.

## What is left for the reviewer to do

Opens the pull request. The comment already has the picture in it, because GitHub renders an inline image and the block the push printed is that image. Under it, the caption the agent wrote and a link to the preview page.

The judgement is now the one you wanted to make: is this what the change should look like. Not: is this the right branch, is this build current, did it even run. The preview page answers those — repository, commit, branch, dirty flag, the agent and the model — so the reviewer checks them by reading rather than by investigating.

Of those, the dirty flag is the one reviewers underrate — enough so that it has [its own argument](https://krowk.com/blog/agent-output-provenance).

## Where this stops working

It does not review the change; it makes the change reviewable. A screenshot of the right screen in the wrong state still needs somebody who knows what the right state is.

It also does nothing about behaviour under conditions the agent did not think to reproduce — a screenshot is the happy path, taken by the thing that just wrote the happy path. Empty states, error states, the narrow viewport: if you want those, ask for them in the same instruction, because the agent will not volunteer them.

And a picture is not a test. This closes the gap between "the tests pass" and "it looks right", which is a real gap and a narrow one. It does not close the gap between "it looks right" and "it is right".

## **What the agent runs**

The first push needs no account. Inside a checkout the commit, branch and dirty flag come along without being asked for.

the agent, at the end of a task

```
$ krowk push after.png --caption "Cart total, after" --destination github
```

or straight onto the pull request

```
$ gh pr comment 412 --body "$(krowk push after.png --destination github)"
```

## **Make the agent show its work.**

One line in your agent instructions, and the evidence arrives in the pull request with the commit that produced it.

[Read the docs](https://krowk.com/docs) [Why provenance](https://krowk.com/blog/agent-output-provenance)