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

# Send feedback

> Report a bug or share product feedback with the hiloop team, from the CLI or the API.

Hit a bug, or have an idea? Send it from right where you are. Every report is stored under your
organization and surfaced to the hiloop team for review; the same endpoint accepts a quick free-form note
and a fully structured bug report.

## From the CLI

The quick form takes just a title:

```sh theme={null}
hiloop feedback "sandbox exec help text is confusing"
```

A bug-shaped report carries the structured fields:

```sh theme={null}
hiloop feedback "tail panics on terminal resize" \
  --surface telemetry \
  --severity high \
  -m "resizing the terminal kills the stream" \
  --expected "the tail reflows" \
  --actual "panic and non-zero exit" \
  --repro "start a tail, then resize the window" \
  --evidence run-01ABC --evidence evt-42
```

* `--surface` names the part of the product the report is about: `cli` (the default), `api`, `web`,
  `sandbox`, `telemetry`, `annotations`, `docs`, or `other`.
* `--severity` (`critical`, `high`, `medium`, `low`) marks a bug's impact. Omit it for general
  feedback that is not a bug.
* `--evidence` (repeatable) attaches run, event, or artifact ids, linking the report to the exact
  telemetry you were looking at.
* `--fingerprint` sets a stable deduplication key (for example `cli/tail-resize-panic`) so repeat
  reports of the same finding are grouped together.

Your CLI version is attached automatically. On success the CLI prints the stored report's id and
whether it has already been surfaced to the team:

```text theme={null}
Sent feedback 0d9f7c2e-4b1a-4f6e-9c3d-8a2b5e7f1a90 — surfaced to the hiloop team.
```

A report that could not be surfaced immediately is still stored — it prints as
`stored for review`, and the command still succeeds.

## From the API

Agents and automation post the same shape to `POST /v1/feedback` — an agent that hits a bug inside
its sandbox can report it with its own credential:

```sh theme={null}
curl -sS -X POST "${HILOOP_API_URL}/v1/feedback" \
  -H "Authorization: Bearer ${HILOOP_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "tail panics on terminal resize",
    "surface": "cli",
    "severity": "high",
    "body": "resizing the terminal kills the stream",
    "expected": "the tail reflows",
    "actual": "panic and non-zero exit",
    "repro": "start a tail, then resize the window",
    "evidence": ["run-01ABC", "evt-42"],
    "fingerprint": "cli/tail-resize-panic"
  }'
```

The response is the stored report's id plus the relay state:

```json theme={null}
{ "id": "0d9f7c2e-4b1a-4f6e-9c3d-8a2b5e7f1a90", "relayed": true }
```

`relayed: false` means the report is stored but has not yet reached the team's review channel —
never that it was lost.

Only `title` and `surface` are required. `title` caps at 300 characters; `body`, `expected`,
`actual`, and `repro` at 10,000 each; up to 50 `evidence` entries of at most 256 characters each.
The organization always comes from your credential, never from the request body.
