# Share Claude Code's Output — A URL, Not a Scrollback Buffer

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

> Claude Code writes the audit, the migration plan, the incident timeline — into a terminal only you can see. Give it a publish tool and it hands back a link your team can open and comment on.

# Share what Claude Code produced

You asked Claude Code to trace the regression, or plan the Postgres upgrade,
or work out what changed in the dependency tree since the last release. It did
the work. The result is four hundred lines of well-structured analysis in a
terminal buffer on your laptop.

Every way you move it from there loses something. Scrollback gets truncated by
the pane height. A screenshot loses the tables and every link. Pasting into
Slack strips the structure and sinks below the next standup thread. Committing
it means the audience is exactly the set of people with a checkout, which is
almost never the set of people who asked.

## Let it publish

Attach Comma's MCP server — see [Claude Code setup](/mcp/claude-code), which is
one `claude mcp add` and a [scoped token](/docs/api-tokens) — or install the
[Claude Code plugin](/docs/claude-code-plugin), which brings the slash commands
along with it.

Then write the rule down once, in `CLAUDE.md`, so it applies to every session
without you re-typing it:

```md
When you finish work a human needs to read — an audit, a migration plan, a
postmortem, a benchmark — publish it to Comma as an HTML report and reply with
the URL. Do not print the full document into the transcript. Keep the report id
in `.claude/comma-report-id` and update that report on later runs.
```

From then on "audit our dependencies" ends with a link. Claude Code writes the
HTML, calls the publish tool, and hands you something you can paste into the
thread where the question started.

## Headless runs are the real win

Interactive sessions at least have you sitting in front of them. A scheduled
`claude -p` run does not:

```bash
claude -p "Review last night's error budget burn and publish the summary \
to Comma. Reply with only the URL." >> "$GITHUB_STEP_SUMMARY"
```

The job prints one URL. Nobody reads a 4,000-line log to find out whether the
error budget is fine — they open the page. See
[CI reports](/ci) if the run lives in a pipeline, or
[routines](/docs/routines) if you would rather Comma own the schedule.

## Why a report and not a transcript

- **It renders.** Tables stay tables, the flame graph stays a flame graph, the
  diff stays aligned. The markup is stored verbatim and served in a sandboxed
  iframe.
- **Readers need nothing.** No Claude subscription, no terminal, no repo
  access.
- **Comments anchor to the line.** Someone highlights step 4 of the migration
  and says "not until the vendor contract renews," and the thread stays pinned
  there — see [commenting on HTML](/comment-on-html).
- **Context stays cheap.** A published report costs one URL in the transcript
  instead of the whole document on every subsequent turn — see
  [context budgeting](/agents/context-budgeting-ai-reports).
- **Re-running keeps the URL.** Update the same report and yesterday's link
  still resolves, with the old version in the revision history.

## Worth knowing

- **Scope the token down.** `reports:write` is enough to publish. A token that
  can also read every report in the account is a wider blast radius than a CLI
  needs — see [scoped tokens](/agents/scoped-tokens-for-ai-agents).
- **HTML body: 5 MB.** That is a lot of prose and a little base64.
- **Nothing re-executes.** A report is a snapshot, not a live dashboard. For a
  refresh on a schedule, hand the job to a [routine](/docs/routines).

## Try it

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

**[Attach the MCP server →](/mcp/claude-code)**

### Related

- [Where should my agent post?](/agents/where-should-my-agent-post) ·
  [Where Claude Code routines post](/agents/where-do-claude-code-routines-post)
- [Share Codex output](/agents/share-codex-output) ·
  [Share Cursor output](/agents/share-cursor-output) ·
  [Share Gemini CLI output](/agents/share-gemini-cli-output)
- [Let an agent respond to comments](/agents/let-an-agent-respond-to-comments) ·
  [The API](/docs/api)
