Give someone outside your organisation one conversation, in full, and nothing else. They get a URL. They see the sitting as the console draws it — messages, reasoning, folded tool calls, per-turn cost — and there is nothing else on the page to reach.

Why a flat file

A rule that allows one session id on the live console can be wrong later. The store would still be reachable. A minted share holds no connection to the store. One HTML file. CSS and script inside it. Unplug the network and it still renders. What the reader can see is what is in the file.

Turn it on

Sharing is off unless the dashboard is given a host and a credential. No configuration means no tab, no button, no write routes. Set both in the environment (prefer env over flags — a token on a command line lands in shell history):
export ASSAY_SHARE_URL=https://share.assay.solutions
export ASSAY_SHARE_TOKEN=# the token you were issued for publishing
assay dashboard
Both halves or neither. One alone is refused at startup.

Mint

The share icon is top-right on a session page. The dialog states what minting does. A second mint is a second public copy at a new address. Taking one down does not affect the other. After a successful mint: the address, Copy link, Open.

What a share carries

Three checkboxes, all on by default:
Off means
Include tool callsHeading survives (“14 tool calls · Bash ×9”). Payloads do not.
Include agent reasoningFold still counts reasoning turns. Text is gone.
Rewrite machine paths to ~/Users/<name>/… becomes ~/…
Withheld content is not in the file. An omission announces itself. A withheld turn is omitted, never “no content”. The banner states what was left out. Path rewriting is not a secret scanner. Secrets in tool output are why you may leave tool calls out of a share you intend to publish widely. Mint, read the page, then leave it published. Optional Stops working on date. That date is the end of that day in your zone. The host enforces it.

What this is not

Subagent messages travel folded, with the same reader switch the console has. That is readability, not disclosure. To leave content out, use the three checkboxes.

Manage

Dashboard → Shares.
VerbThe pageThe recordThe link
Unpublishkeptkeptstops (404)
Publishkeptkeptworks again
Deletedestroyeddeleteddead forever
Unpublish is reversible and takes one click. Delete asks first. Delete takes both the page and the record. There is no verb that drops one and keeps the other. Unpublished, deleted, and never-existed are the same 404.

Point an agent at a share

A share is five files, not one. The page is for a person. Long HTML is too large for an agent.
URLWhat it is
<link>The page. Accept: application/json → the manifest
<link>/agent.txtThe protocol, in plain language
<link>/outline.jsonThe conversation without the working-out. Read this first
<link>/manifest.jsonSession card + one row per turn, with byte ranges
<link>/turns.jsonlEvery turn in full, one JSON object per line
curl <link>/outline.json
curl <link>/manifest.json
curl -H 'Range: bytes=914-1612' <link>/turns.jsonl
turns.jsonl is line-delimited so a byte range returns whole records. A turn with no text says why (contentState: shredded, omitted, …). Never an empty string standing in for erased text.

Limits you must know

  • Shred cannot reach a minted page. Delete shares for that principal first.
  • The page is a point in time. Later turns, later cost corrections, later labels are not in it. The mint instant is on the page.
  • Unpublish is not recall. It stops the URL. It cannot affect a copy someone already saved.