> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revyl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Proof of Changes

> Have an agent exercise every pull request on a live device and report back before a human reviews it

Every time someone opens a pull request (PR), Revyl can install that PR's
build on a live device, run through the changed flows, and post a verdict —
passed, failed, or inconclusive — on the PR. Reviewers get a live look at
whether the change actually works before they read a line of code.

## What You'll See

Once it's on, every PR with a build gets one comment that updates as new
commits land (or, if you've configured it that way, the same block on the
PR description instead). It includes:

* A verdict per build target — **Passed**, **Failed**, or **Inconclusive**
  * **Passed**: The agent exercised the change on a device and saw the expected behavior.
  * **Failed**: The agent observed the app and the change looks broken (or a required check failed).
  * **Inconclusive**: Nothing useful was observed — for example the device never started, or setup blocked the run before the change could be exercised.
* A short write-up of what was exercised and what the app did
* Screenshots of the moments that matter
* A link to the full session recording — no login required
* A **View proof logs** link, so you can watch the device live while the
  run is in progress

## Getting Started

1. Connect your repo via the [Revyl GitHub App](/integrations/github)
2. Turn on Proof of Changes through the dashboard or set
   `pr_review.actions.proof_of_changes: true` in a `.revyl/config.yaml` file within your repo

On your next pull request, Proof of Changes runs automatically.

If you cannot install the [Revyl GitHub App](/integrations/github) or you use a different SCM, you can use the Proof of Changes via Cursor Cloud guide to set up Proof of Changes without the App.

## Authentication and Session Prep

We recommend [bypassing authentication](/builds/auth-bypass-deeplinks) so
each run starts from a signed-in state. Set this up with the
[`auth_bypass`](/cli/device/auth-and-session-prep) field in your config.

To run a script before the device session starts — for example, seeding test
data — use the [`before_session`](/cli/device/auth-and-session-prep) field.

## Advanced Configuration

You can set additional configuration parameters from the PR-review settings
dashboard, or under `pr_review.actions` in `.revyl/config.yaml`.

By default, proof runs execute on the Revyl agent. To follow a run as a
Cursor Cloud Agent thread instead, connect a
[Cursor Cloud integration](/integrations/cursor/cloud-agents) and set
`proof_harness` to Cursor.

| Field                      | Role                                                                                   |
| -------------------------- | -------------------------------------------------------------------------------------- |
| `proof_of_changes`         | Turn proof runs on or off.                                                             |
| `proof_harness`            | Which agent runs proofs: Revyl (default) or Cursor.                                    |
| `status_in_pr_description` | Put the same preview and proof block on the PR description instead of a later comment. |
| `project_root`             | Checkout-relative directory that contains `.revyl/config.yaml`.                        |
| `checks`                   | Extra natural-language invariants verified every run, in addition to the diff.         |
| `system_prompt`            | Extra guidance prepended to proof runs.                                                |

See the full `pr_review.actions` field reference on the
[GitHub integration](/integrations/github#actions) page.
