Receipt Signing
Every receipt is signed with HMAC-SHA256. The signature covers every field — tampering with any value, even whitespace, invalidates it.EnactClient:
EnactClient raises on startup if missing.
Verifying a Receipt
Dev/Test Mode
For local development, you can bypass the length requirement:HITL Token Security
Human-in-the-loop approval tokens are:- HMAC-signed and bound to a specific run ID
- One-time-use (clicking approve cannot be replayed)
- Auto-expiring after
timeout_seconds - Action-bound: approving run A cannot approve run B
Signature Contract
Receipts are signed over canonical JSON:sort_keys=True, separators=(",", ":"). This ensures the same payload always produces the same signature regardless of key ordering or whitespace variations.