> ## 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 capsules

> List the saved fail-to-pass bug capsules recorded from failed assertions.

`reticle capsules` lists what is in `.reticle/capsules`. A capsule is a minimal failing reproduction plus the consequence that should have held. Replay one with the `reticle_flow_replay` tool.

```bash theme={"dark"}
npx @reticlehq/server capsules
```

No flags.

## What it prints

One `reticle_capsules` line: a `count` and an array. Real capture from this repository, trimmed to three of the sixty-three entries:

```json theme={"dark"}
{
  "event": "reticle_capsules",
  "count": 63,
  "capsules": [
    {
      "id": "1786713193695-e23",
      "origin": "failed-assert",
      "expected": "declared consequence",
      "observed": "no element matched {\"role\":\"dialog\"} in state 'visible'",
      "steps": 1
    },
    {
      "id": "1786696531874-e103",
      "origin": "failed-assert",
      "expected": "signal auth:granted",
      "observed": "signal \"auth:granted\" never fired",
      "steps": 1
    },
    {
      "id": "1785653101906-e3",
      "origin": "failed-assert",
      "expected": "declared consequence",
      "observed": "not settled: 236 request(s) still in flight",
      "steps": 1
    }
  ]
}
```

| Field      | Meaning                                          |
| ---------- | ------------------------------------------------ |
| `id`       | Capsule id, timestamp plus a cursor              |
| `flow`     | Present when the capsule came from a named flow  |
| `origin`   | How it was captured, for example `failed-assert` |
| `expected` | The consequence that was declared                |
| `observed` | What actually happened                           |
| `steps`    | How many steps the reproduction is               |

## Exit codes

| Code | Meaning                                                                  |
| ---- | ------------------------------------------------------------------------ |
| `0`  | Listed, even when the count is zero                                      |
| `1`  | The capsule store could not be read. Logged as `reticle_capsules_failed` |

## Worked example

```bash theme={"dark"}
npx @reticlehq/server capsules | jq '.capsules[] | select(.origin == "failed-assert") | .observed'
```
