Honest vs. typical

Four moments where an agent UI can tell someone something that isn’t so. On the left, a plain rendering of what an agent UI typically shows. On the right, the Candor component with the same data, working: each one is also an example you can copy from its docs.

The typical side isn’t any one product. It’s the simple version most of us would write first, and it’s fine until the data stops being clean. The rules behind the right side are on the principles page.

01An approval for a change that moved

An agent asked to add a region column to customers. While the request waited, the agent revised the migration so it also drops the old country column. Nobody has looked at the new version.

Typical

Approval needed

Add region to customers

A region column on customers, shown on the customer page and backfilled from billing country.

RejectApprove
The buttons approve whatever the change is now, not the version the person read.

Candor

The request carries the hash of the change that was asked about. The change no longer matches it, so the request is refused by the system and says why, and the new version needs its own approval.

Docs:Approval requestMetadata diffPrinciple:Approve the exact change

02A run that went quiet

A backfill was reported as running. Its last event arrived 14 minutes ago, and nothing since: the worker may have stopped, or may be stuck.

Typical

Backfill order totalsRunning…
The spinner keeps turning because nothing told it to stop, so it says “Running” about a run nobody has heard from.

Candor

Once a running run has been silent longer than staleAfter, it stops saying running. It says when it was last heard from and that it may have stopped.

Docs:Run heartbeatTask trayPrinciple:Unknown stays unknown

03A restore that missed a shell change

After a checkpoint, the agent ran npm install ioredis@5. The person restores the checkpoint. The files are put back, but the installed package is still in node_modules.

Typical

Restored

Your workspace is back to “Added tests for burst traffic”.

It says everything is back. The package the agent installed is still there.

Candor

Before the restore, the dialog lists the commands that ran since the checkpoint and says their effects stay. After it, the result shows what was checked and flags what doesn’t match.

Docs:Restore dialogCheckpoint listPrinciple:Say what can and can't be undone

04A cost the SDK didn’t report

A run used a hosted model and a self-hosted embedder. The SDK’s result had token counts for both and no cost for either.

Typical

Add region to projects

Hosted model
182,400 in · 9,820 out · $0.00
Self-hosted embedder
48,000 in · $0.00
Total
$0.00
A missing cost is added up as zero, so the run looks free.

Candor

Each model’s cost reads “Not measured”, and so does the total, with the reason beside it. A receipt where only some costs were reported labels its total as partial.

Docs:Run receiptPrinciple:Unknown stays unknown