# Share Devin's Output — When the Work Happened in Someone Else's VM

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

> Devin works in a cloud workspace and reports back through its own session view. For the write-ups that are not pull requests, one API call gives the result a URL your whole team can read.

# Share what Devin produced

Devin runs in its own cloud workspace and reports back inside its own session
view. That works well while the work is happening and badly afterwards, because
the audience for the result is rarely the set of people with a seat.

For code, the pull request is the answer and always has been. For everything
else — the audit of every third-party call, the reason the flaky test is flaky,
the plan for splitting the monolith — a PR is the wrong container. Nobody is
merging a plan.

## One call, from wherever the run ends

The workspace has outbound network, so the publish is a single request:

```bash
curl -sS -X POST https://commareports.com/api/v1/reports \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --arg t "Third-party call audit" --rawfile h report.html \
        '{title:$t, html:$h}')" | jq -r '.url'
```

Put that in the repo as a script and the instruction becomes short enough to
live in the session's standing knowledge: _finished documents get published
with `scripts/publish-report.sh`; reply with the URL._ Full shape in
[the API docs](/docs/api); the token comes from
[API tokens](/docs/api-tokens) and belongs in the workspace secret store.

## Or do it from the workflow

If the run ends in a pull request anyway, publishing from CI and linking the
report from the PR body keeps both halves in their right container — the diff
in the PR, the reasoning on a page that non-engineers can open. See
[GitHub Actions reports](/ci/github-actions-html-report).

## Why the session view is not enough

- **Access is the product's, not yours.** A published report has its own
  access setting, including link-shared and password-protected.
- **It renders and it lasts.** The page is a snapshot with revision history,
  not a transcript inside a session that ages out.
- **Comments anchor to the finding.** Reviewers mark the claim they doubt — see
  [commenting on HTML](/comment-on-html).
- **The link survives the session.** Six weeks later, the decision has a
  citation.

## Worth knowing

- **`reports:write` is the scope.** Tokens are revocable, expirable and
  rate-limited per token — see
  [scoped tokens](/agents/scoped-tokens-for-ai-agents).
- **5 MB of HTML** per report body.
- **Nothing re-executes** on open.

## Try it

Free — unlimited reports, commenters and revisions.

**[Read the API docs →](/docs/api)**

### Related

- [Where should my agent post?](/agents/where-should-my-agent-post)
- [Share Jules output](/agents/share-jules-output) ·
  [Share OpenHands output](/agents/share-openhands-output) ·
  [Share Replit Agent output](/agents/share-replit-agent-output)
- [CI & pipelines](/ci) · [Scoped tokens](/agents/scoped-tokens-for-ai-agents)
