# haystack verify

Verify a change by running it in matched cloud environments, or bisect a historical regression to the commit that caused it.

## How a run works

A run builds two universes per test case, one on the base revision and one on the head revision, from the same seeded starting point. The only difference between them is the change under review, so any difference in behaviour is attributable to it.

Results land on a page you can open, and every verdict is backed by the output the run captured.

## Starting a run

```bash
haystack verify                            # what you are changing right now
haystack verify --base main --head HEAD    # a specific range of commits
```

Run it from inside your repository. With no arguments it verifies what you are changing. `--base` and `--head` pin the exact commits to compare.

The run starts, prints its id and results URL, and opens the results page in your browser. Pass `--no-open` to skip that.

## Options

| Flag | Purpose |
|---|---|
| `--repo <path>` | Repository to analyze, when you are not running from inside it |
| `--base <ref>` | Base revision to compare from |
| `--head <ref>` | Head revision to compare to |
| `--intent-transcript <file>` | Coding-agent transcript, used as evidence of what the change intended |
| `--server <url>` | Control-plane URL. Defaults to http://127.0.0.1:3000 |
| `--token <token>` | Bearer token when the control plane requires auth, or HAYSTACK_VERIFY_TOKEN |
| `--no-open` | Do not open the results page |
| `--json` | Machine-readable run id, status and results URL |

## Next

- [Working with runs](/docs/verify-runs)
- [Agents](/docs/verify-agents)
