Verify

Drop a receipt. See the proof.

Verification recomputes every signature and hash — PASS means every change was signed by the exact registered identity and nothing was altered after the fact.

The offline verifier — how a receipt gets checked

Local build

Export a receipt from a session on the local agent host, then run the verifier — sixty-five lines of plain Node, no packages, no network. It recomputes the hash chain and every Ed25519 signature. Exit 0 means PASS. If a single byte was changed after signing, the exact check that broke is named.

$ node verify-receipt.js session-receipt.json
events=12 chainOK=12 sigOK=12 diffOK=12 unsigned=0 attestation=present
PASS: VERIFIED — 12 events, tip 9f2a1c7b4e08…
On pass

Verified. Every change was signed by the exact agent identity Token Holder registered, and nothing was altered after the fact.

On fail

This receipt was altered after signing — the failed check is named. Do not trust these changes.

Roadmap · designed surface

A drag-and-drop verifier is on the roadmap; the offline script above is the way to verify today.

When it ships it will run entirely in the browser tab — same math, same verdict, nothing uploaded.

Honest scope

Tamper-evident, trusted-operator forensics: alterations are detectable and provable — the receipt is not “unalterable.” Verification needs no vendor server in the loop, so the proof does not depend on trusting us. Two limits worth stating plainly: signed receipts come from the local agent host, which has no download link yet, and the hosted service's own audit export carries a chain rather than a signature.