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

# Prove a fix with a video

> Record a fix running and post the Jam on the pull request. The Jam carries the browser's console logs and network requests.

A pull request that carries a 20-second video of the fix working is faster to review than one that says "tested locally". `jam record` records the screen while a check runs, uploads it, and prints a Jam link. Put that link on the pull request.

<Info>
  `jam record` runs on macOS and Linux. Install the CLI and run `jam skills install` first. See [Get started](/docs/cli#quickstart). Run `jam doctor` to check that recording works on your machine.
</Info>

## Ask your agent

```text wrap theme={"theme":"css-variables"}
Fix this and show me it works: https://jam.dev/c/abc123
```

The words `show me`, `prove`, and `record` tell the agent to use the `jam-proof` skill. It picks what to record, records the check, and hands back the link.

## Pick what to record

Pick the first option that shows the change. Each one further down puts more of your machine in the video.

| Target | Flag | Use it when |
| - | - | - |
| A browser page | `--cdp <port>` | The change is on a web page. Works headless. |
| One window | `--pid`, `--app`, or `--window-id` | You need the address bar, a native dialog, or an app that is not a browser. |
| A whole display | `--display` | On a CI runner or a machine nobody is using. Linux needs an X11 display. |

Whenever the target is a browser, add `--cdp`, also when you pass a window or display flag. The Jam then carries the browser's console logs and network requests next to the video, so a reviewer can check the request that used to fail. Without `--cdp`, the Jam is video only.

## Record a command

Start a browser with a debug port, then wrap the check in `jam record run`. The recording stops when the command exits.

```bash theme={"theme":"css-variables"}
agent-browser open https://example.com/checkout
jam record run --cdp "$(agent-browser get cdp-url)" --url https://example.com/checkout --title "Checkout completes after fix" -- bun run e2e/checkout.ts
```

The check must drive the browser that `--cdp` points at. A check that launches its own browser runs out of view: the video shows the agent-browser page, and the Jam has none of the check's console or network. The CLI passes the recorder's address to the wrapped command in `JAM_CDP_PROXY`. Connect the check there, and its clicks and typing also show up as user actions in the Jam:

```ts e2e/checkout.ts theme={"theme":"css-variables"}
const browser = await chromium.connectOverCDP(process.env.JAM_CDP_PROXY!);
const page = browser.contexts()[0].pages()[0];
```

The CLI uploads the video with the console and network, and prints the receipt:

```text theme={"theme":"css-variables"}
id: def456
url: https://jam.dev/c/def456
durationMs: 20480
```

The wrapped command keeps its own exit code. A failing check still fails, and still leaves a Jam. To connect Puppeteer or another driver, see [Record an agent's browser](/docs/cli-record-browser#playwright-and-puppeteer-scripts).

## Record steps you run yourself

When there is no single command to wrap, bracket the steps:

```bash theme={"theme":"css-variables"}
jam record start --cdp "$(agent-browser get cdp-url)" --title "Checkout completes after fix" --json
# drive the page through the cdpProxy address the receipt printed
jam record stop <session>
```

Run `jam record status` to check the recording without stopping it. Run `jam record cancel` instead of `stop` to throw it away without uploading.

## Make it readable

* Make the title the claim: "Deep link scrolls to comment 6", not "proof".
* Start from a known state. Reload the page or restart the app first.
* Keep it short. Thirty seconds that show the change beat five minutes.

## Next

* For every `jam record` flag, receipt field, and status, see [Record a window or the desktop](/docs/cli-reference#record-a-window-or-the-desktop).
* To record tests in CI, follow [Record end-to-end tests](/docs/cli-e2e-tests).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.