How to verify guardrail proof
Signed evidence envelopes prove that configured validators ran for a request without storing the raw prompt in the proof. This tutorial walks the Growth+ path from a live request through the Proof panel, Settings export, and offline valguard-cli verify-proof.
By the end, you will know:
- Where proof appears on request detail and what fields mean
- How to verify a signature in the UI and download JSON
- How to export a date window for auditors
- How to verify offline with the CLI using the same HMAC secret model
- What language to use (and avoid) when describing evidence to stakeholders
1Prerequisites
- Growth+ (or higher) with analytics enabled — Proof panel and export are gated on analytics
- At least one agent with validators that has recent traffic
- Optional:
valguard-clibuilt fromapps/proxyfor offline verify - Platform secret available to operators:
EVIDENCE_HMAC_SECRETor fallbackOUTBOUND_WEBHOOK_HMAC_SECRET
2Steps
Step 1: Open a request that ran validators
Go to Dashboard → Requests and open a completed request for an agent with output or input validation. Prefer a request that blocked or warned so verdicts are non-empty.
Step 2: Open the Proof panel
On request detail, find Proof. You should see policy snapshot hash, engine version, digests, ordered verdicts, and verify / download actions.
If the panel shows proof unavailable, the request may predate migration
000121, lack analytics entitlement, or failed to persist evidence. Send a new request after migrate and retry.Step 3: Verify the signature in the UI
Click Verify signature. A successful check confirms the HMAC matches the sealed payload for this org
key_id. A failure means wrong secret, tampered payload, or org mismatch — treat it as an incident, not a soft warning.Step 4: Download the envelope JSON
Click Download JSON and save the file. Do not reformat the JSON before offline verify; canonical bytes matter for HMAC.
Step 5: Confirm workspace evidence settings
Go to Dashboard → Settings → Guardrail evidence. Note the current
key_idand rotation notice. Key rotation is an operator action; envelopes remain verifiable under thekey_idthey were signed with.Step 6: Export an auditor window
Pick a
from/torange and export. Only admins can export. Use this for monthly packs or incident holds. Pair with the monthly auditor evidence export playbook when you need a narrative package.Step 7: Verify offline with the CLI
On a machine with the same evidence secret as the deployment:
cd apps/proxy go run ./cmd/valguard-cli verify-proof --file /path/to/envelope.jsonSuccess means the signature matches. It does not mean absolute non-repudiation or a compliance certification. Read how to prove AI guardrails actually executed for claim language.
Step 8: Hand off to a third party (optional)
If an external reviewer will verify, use third-party verifier handoff. Share the export and CLI steps. Do not claim Merkle or ZK verification unless that product exists.
3Diagram / Flow
4Configuration Examples
Ensure evidence secret is set on web and proxy (same value):
# Preferred dedicated secret EVIDENCE_HMAC_SECRET=... # Fallback if unset: OUTBOUND_WEBHOOK_HMAC_SECRET5Common Pitfalls
- Calling evidence “absolute non-repudiation” in customer or regulator copy
- Expecting Proof on Free plan without analytics
- Re-marshaling downloaded JSON before CLI verify
- Assuming missing envelopes mean validators did not run historically before migration
000121
6Next Steps
- Monitor flows for health score and league review
- Shadow mode rollout before tightening rules
- Pillar: How to prove AI guardrails actually executed