Security
How the proof works
Every authorize decision appends a receipt to a per-workspace hash chain: hash = SHA256(prev_hash ‖ canonical receipt), HMAC-signed server-side. GET /api/verify-chain recomputes the entire chain from stored rows — editing any stored amount, vendor or decision breaks verification at that sequence number. Approval releases a one-time spend token (stored only as a hash, redeemable exactly once, bound to vendor + amount). Frozen agents are refused at the engine, not the UI. License keys follow the fleet pattern: HMAC-signed, hash-stored, revocable.