Evidence verification
Ujex evidence is designed to be checked outside the dashboard. A reviewer should be able to inspect the agent identity, replay the audit chain, and verify the signed manifest without trusting screenshots.
Agent Passport
Export the passport for the agent under review:
ujex identity passport <agentId> > passport.json
The passport schema is ujex.agent_passport.v1. It contains the issuer,
agent ID, hashed owner UID, mailbox, active scopes, active device-key prefixes,
active delegation summaries, revoked counts, latest audit anchor, issue time,
expiry time, and detached Ed25519 signature.
Raw owner email is not included.
Signed AAT manifest
Export an Agent Audit Trail bundle with manifest signing enabled from the signed-in web app: open app.ujex.dev, go to Evidence, choose the audit window, and export the signed bundle. Export is human-authenticated; the agent CLI verifies bundles offline but does not mint them.
The signed manifest binds:
- export range
- record count
- bundle SHA-256
- chain head hash
- latest external anchor
- passport issuer and public key ID
If any bound field or exported record is changed, verification fails.
Trust bundle contents
The compliance export writes these files:
| File | Purpose |
|---|---|
records.jsonl | AAT-shaped audit records for the selected window. |
manifest.json | Export metadata, counts, hashes, head hash, and anchor data. |
manifest.sig | Detached Ed25519 signature over the canonical manifest. |
trust-bundle.txt | Human-readable verification summary and public trust metadata. |
ZIP packaging is optional. The files above are enough for V1 verification.
Verify chain and signature
Run:
ujex audit verify ./evidence
The CLI verifies the hash chain. If manifest.sig is present, it also verifies
the detached manifest signature and checks that the public key ID matches the
manifest.
Public signing key
The public signing key is exposed by the identityPassportPublicKey Cloud
Function. It returns issuer, key ID, algorithm, and PEM public key. The same
trust key is referenced by signed passports and signed AAT manifests.
For hosted Ujex, use the deployed function URL from the dashboard or
trust-bundle.txt. For self-hosted Ujex, expose the generated function URL in
your deployment notes.
Audit anchors
Each passport and signed evidence export includes the latest known audit anchor. A reviewer can compare the anchor sequence, root hash, anchor hash, and timestamp with the public anchor endpoint for the deployment.
Anchors prove continuity of the exported chain head. The manifest signature proves the export file set has not been rewritten after the fact.