Cryptographic Verification
Verify an Axiom receipt
Independent cryptographic verification. No account required. The same check a regulator or auditor would run.
How verification works
Axiom uses HMAC-SHA256 to sign every receipt at the moment of execution. Here's what happens step by step:
- Inputs are hashed. The skill name and all input parameters are serialized in canonical JSON (keys sorted alphabetically) and hashed with SHA-256. This produces a deterministic, tamper-evident fingerprint of exactly what the agent called.
- Output is hashed. The tool's output is similarly serialized and hashed with SHA-256. Any change to the output — even a single character — produces a completely different hash.
-
The receipt is signed. Axiom constructs a payload string:
skill_name|timestamp|inputs_hash|output_hashand computes an HMAC-SHA256 signature using a server-side secret key. The signature is stored alongside the receipt. -
Verification is timing-safe. When you verify, the server recomputes the expected signature from the stored fields and compares it to the stored signature using Node.js
crypto.timingSafeEqual()— resistant to timing attacks. If they match byte-for-byte, the receipt is valid.
A valid signature means: the receipt was produced by Axiom's signing infrastructure, the inputs and output have not been altered, and the timestamp is the original execution time. Axiom does not currently anchor to a public blockchain; the verification chain of trust runs through Axiom's signing key.
VERIFICATION ALGORITHM (PSEUDOCODE)
payload = skill_name + "|" + timestamp + "|" + inputs_hash + "|" + output_hash expected = HMAC-SHA256(payload, server_secret_key) valid = timingSafeEqual(expected, stored_signature)
Verify offline with the open-source verifier
MIT-licensed, dependency-free. Run it in your own environment — no Axiom infrastructure required.