# Share a Qodo Review or Test Report — A Link Reviewers Can Answer

Canonical: https://commareports.com/agents/share-qodo-output
Published: 2026-09-09

> Qodo's review and test-generation output lands in a PR comment or an IDE pane and scrolls away. Publish the full analysis to a URL with anchored comments the agent can read back.

# Share a Qodo review or test report

Qodo produces two things worth reading and one place to read them. The
line-level suggestion belongs in the pull request, and that works well. The
broader output — the cross-file risk review, the coverage gap analysis, the
summary of what the generated tests actually cover — is a document, and a
document inside a PR thread is a document that collapses behind "show more",
scrolls away, and vanishes when the branch merges.

The people who need the document are also frequently not on the PR. A tech lead
tracking test coverage across services, an engineering manager looking at review
findings by theme, a security reviewer checking one module — none of them want
to reconstruct it from thirty inline comments.

## Publish the analysis

Where the agent runs interactively, attach Comma's [MCP server](/mcp) with a
[scoped token](/docs/api-tokens) and give it the standing rule:

```md
When you produce an analysis rather than a suggestion — a coverage gap summary,
a cross-file risk review, a test plan — publish it to Comma as an HTML report
and reply with the URL. Keep line-level suggestions in the pull request.

Update the report id in `.comma-report-id` rather than creating a new report.
```

Where it runs in CI, the publish is one call in the job that already produced
the output — see [publishing from CI](/ci):

```bash
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html qodo-review.html \
        --arg title "Review — $(git rev-parse --short HEAD)" \
        '{title: $title, html: $html}')"
```

## Why a report and not a thread

- **It survives the merge.** A PR thread is gone when the branch is; a report
  URL is still there next quarter with its revision history.
- **It renders as a document.** Coverage tables stay tables, file trees stay
  trees — see [sharing a coverage report](/share-coverage-report) for the
  drill-down case specifically.
- **Comments anchor to the finding.** "This branch is unreachable, ignore it"
  stays attached to that row — see [commenting on HTML](/comment-on-html).
- **The agent reads the replies**, so dismissed findings inform the next run —
  see [letting an agent respond to comments](/agents/let-an-agent-respond-to-comments).
- **Trends need one URL.** Revisions at a single address are what turn a
  coverage number into a coverage trend.

## Worth knowing

- **Scope the token down.** `reports:write` for the publish; `comments:write`
  only if the agent should reply — see
  [scoped tokens for AI agents](/agents/scoped-tokens-for-ai-agents).
- **Publish on failure too.** A review that only publishes on green builds
  misses every run that mattered. Make the step unconditional.
- **Multi-file HTML output** — an `index.html` with a directory beside it —
  needs the folder treatment, see
  [sharing an HTML folder](/share-html-folder).
- **Refresh on a schedule** with a [routine](/docs/routines) if the point is a
  weekly picture rather than a per-commit one.

## Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision
history.

**[Publish your first report →](https://commareports.com/)**

### Related

- [Share a coverage report](/share-coverage-report) ·
  [Share a SonarQube report](/share-sonarqube-report)
- [Publish from CI](/ci) · [Where should my agent post?](/agents/where-should-my-agent-post)
- [Give an agent feedback](/agents/give-an-agent-feedback) · [The API](/docs/api)
