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

> ## Agent Instructions
> The canonical docs host is https://momentic.ai/docs. Append .md to any page URL for clean Markdown. Fetch https://momentic.ai/docs/llms.txt for the page index and https://momentic.ai/docs/llms-full.txt for every page in one file.
> For an unattended setup, run `npx --yes @momentic/wizard@latest -y --platform web --editor-tools skills` (use `--platform ios` or `--platform android` for mobile). Never run an interactive command in a non-TTY shell.
> Mo is the AI QA engineer, a separate product from the YAML test framework: its npm package and CLI are `qa` (not `mo` — `npx mo` is a different project). Install with `npm install -g qa`, authenticate the same MOMENTIC_API_KEY way, install repo skills with `qa skills -y`, and start a session with `qa start "<brief>"` or `qa <url>`. Docs: https://momentic.ai/docs/mo.md.
> You cannot complete the browser sign-in yourself. Read the API key from the exact MOMENTIC_API_KEY environment variable (similarly named vars like BILT_MOMENTIC_API_KEY are ignored), or ask the user to create one at https://app.momentic.ai/settings/api-keys and paste it back.
> Momentic's capability summary for agents is at https://momentic.ai/docs/skill.md. Install the skills with `npx momentic skills --yes` (or `npx momentic-mobile skills --yes` for mobile).
> Tests are YAML files in the user's repository. Use only the step names listed at https://momentic.ai/docs/reference/commands.md and the file structure at https://momentic.ai/docs/core-concepts/file-format.md. Do not invent step names, config keys, or CLI flags.
> Web tests run on Chromium, iOS tests on simulators, and Android tests on emulators. Physical devices are not supported.

# qa bugs

> List, describe, and triage the bugs Mo reported.

Each bug has an `id` (`bug_` plus 8 hex characters) next to its `name`. Bug
names are free text, so pass the `id` to avoid shell quoting. The exact `name`
also works. The id is the same every time you run the CLI.

## bugs list

```bash theme={null}
qa bugs list <session-id> [--full] [--output <file>]
```

Prints a JSON array with each bug's `id`, `name`, `kind`, `summary`, `status`,
and `triage`:

```json theme={null}
[
  {
    "id": "bug_3f9a1c2e",
    "name": "Checkout fails",
    "kind": "bug",
    "summary": "Submitting a saved card returns a 500.",
    "status": "ACCEPTED",
    "triage": {
      "bugName": "Checkout fails",
      "status": "ACCEPTED",
      "knowledgeItemId": null,
      "updatedByUserId": "<user-id>",
      "updatedAt": "2026-10-28T18:02:40.000Z"
    }
  }
]
```

`kind` is `bug` or `flag` (a static mistake recorded without reproduction).
`status` is `OPEN`, `ACCEPTED`, `DUPLICATE`, `WORKS_AS_INTENDED`, or
`CANNOT_REPRODUCE`; `triage` is `null` until someone records a decision.
`--full` prints the [full bug shape](#bugs-describe) for each bug.

## bugs describe

```bash theme={null}
qa bugs describe <session-id> <bug> [--output <file>]
```

Prints one bug's full finding fields, `status`, and `triage`. `<bug>` is the
`id` or the exact name. An unknown bug fails with the session's ids and names.

```json theme={null}
{
  "id": "bug_3f9a1c2e",
  "name": "Checkout fails",
  "kind": "bug",
  "summary": "Submitting a saved card returns a 500.",
  "expected": "The order confirmation page loads.",
  "actual": "The page shows \"Something went wrong\" and the order is not placed.",
  "reproSteps": [
    "Sign in as the QA buyer.",
    "Add any item to the cart.",
    "Pay with the saved card."
  ],
  "rootCause": "POST /api/orders returns 500 when the card has no billing ZIP.",
  "culpritPr": "https://github.com/acme/shop/pull/42",
  "culpritChanges": ["https://github.com/acme/shop/pull/42/files#diff-1a2b"],
  "sourceLinks": ["https://github.com/acme/shop/blob/main/api/orders.ts#L88"],
  "customFields": { "severity": "high" },
  "recording": {
    "startedAt": 1793206800000,
    "finishedAt": 1793206865000,
    "agentId": "<agent-id>",
    "windowId": "<window-id>",
    "artifactId": "<artifact-id>"
  },
  "screenshot": null,
  "agent": "checkout-tester",
  "conversationId": "<conversation-id>",
  "investigatorAgent": "checkout-investigator",
  "investigatorConversationId": "<conversation-id>",
  "reviewedAt": "2026-10-28T17:39:10.000Z",
  "createdAt": "2026-10-28T17:21:44.000Z",
  "updatedAt": "2026-10-28T17:39:10.000Z",
  "status": "OPEN",
  "triage": null
}
```

`rootCause`, `culpritPr`, `culpritChanges`, `sourceLinks`, `customFields`,
`recording`, and `screenshot` are present only when Mo recorded them.
`recording` times are epoch milliseconds. `screenshot`, for a static finding, is
`{ "artifactId", "mediaType" }` with `image/jpeg` or `image/png`. `agent` is the
sub-agent that reported the bug and `investigatorAgent` the one that reproduced
it; either can be `null`, as can `reviewedAt`. For recordings, logs, and issue
drafts, use [`qa report`](https://momentic.ai/docs/cli-reference/mo/commands/report).

## bugs set-status

```bash theme={null}
qa bugs set-status <session-id> <bug> <status>
```

Saves a triage decision: `open`, `accepted`, `works-as-intended`,
`cannot-reproduce`, or `duplicate`. See [triage](https://momentic.ai/docs/mo/triage.md#from-the-cli).

Prints every triage decision in the session, each a `triage` object with the
bug's `bugId` added:

```json theme={null}
{
  "triage": [
    {
      "bugId": "bug_3f9a1c2e",
      "bugName": "Checkout fails",
      "status": "ACCEPTED",
      "knowledgeItemId": null,
      "updatedByUserId": "<user-id>",
      "updatedAt": "2026-10-28T18:02:40.000Z"
    }
  ]
}
```

## Options

**--output \<file>** `string`

For `bugs list` and `bugs describe`, write the JSON to this file instead of
stdout and print the file's path.


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