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

> ## Agent Instructions
> Reticle is a dev-only, localhost-only verification layer for AI coding agents. It reads program truth (network, state, console, routing, animations, framework state) from inside a running web app and returns a deterministic verdict with evidence. It is not a screenshot tool and not a browser automation library.
> Only `reticle_act_and_wait` and `reticle_assert` produce a verdict. Every other tool moves or reads the app and proves nothing. A drive that ends without one of those two has no result, however many tools it used.
> A verdict of `verified: "unknown"` is not a pass. It means Reticle drove the app and could not tell what happened. Report it as unknown; never weaken a check to make it pass.
> Package names are scoped `@reticlehq/*`. Run every CLI command as `npx @reticlehq/server <command>`, for example `npx @reticlehq/server init`. `reticle` is a bin name that `@reticlehq/server` installs once it is on your PATH, NOT a package on npm: `npx reticle` fetches an unrelated package published by somebody else, so never run that. The complete tool surface is on the `/usage` page; `/agent-cheatsheet` is the one-screen version.

# reticle report

> What the latest session claimed, and what held. Also a print-only Stop hook for Claude Code.

`reticle report` reads this project's most recent session from `.reticle/` and says how many of its claims held, how many failed, how many came back `unknown` and who can act on each, and how many proved nothing. It reads the journal on disk, so no daemon has to be running.

```bash theme={"dark"}
npx @reticlehq/server report [--session <id>] [--hook]
```

## Arguments and flags

| Flag             | Default            | What it does                                                             |
| ---------------- | ------------------ | ------------------------------------------------------------------------ |
| `--session <id>` | the newest session | Report a specific session                                                |
| `--hook`         | off                | Print one line, and only when the working tree changed and no claim held |

## What it prints

```text theme={"dark"}
session lease-85f8191b-3874-457b-973b-8ee365e5acfb
2 of 4 claims held
1 failed, 1 of them a green a channel contradicted
1 unknown (environment: 1)
  ✗ signal order:placed
```

An `unknown` is never counted as held. It is Reticle saying it could not tell, and the owner beside it says what to do next.

## As a Claude Code Stop hook

With `--hook` it prints nothing when a claim held or nothing in the tree changed, and otherwise one line, such as `Reticle: not verified. 3 claims: 1 failed, 2 unknown`. It prints Claude Code's `systemMessage` shape and always exits `0`: you see the line when the agent stops, and the agent is never blocked by it. `reticle init --hooks` adds it for you, merged into whatever `.claude/settings.json` already holds. By hand:

```json theme={"dark"}
{
  "hooks": {
    "Stop": [{ "hooks": [{ "type": "command", "command": "npx @reticlehq/server report --hook" }] }]
  }
}
```

A session last written more than an hour ago does not count as this turn, so a morning drive cannot answer for an afternoon edit. If you want the stop blocked until the change is verified, use [`reticle gate --hook`](/cli/gate) instead.
