Errors & Policy Violations
Why was my transaction rejected with SIGIL_POLICY_VIOLATION?
Why was my transaction rejected with SIGIL_POLICY_VIOLATION?
A
SIGIL_POLICY_VIOLATION means your proposed transaction was successfully processed, but it deterministically breached a rule in your ASSURANCE.md policy. This is not a bug; it is the firewall working as intended.To diagnose:- Read the
messageorreasonfield in the JSON-RPC error response. - Open your
ASSURANCE.mdand locate the breached constraint. - Verify your request’s
amount,targetAddress, andchainIdmatch the policy.
I'm getting SIGIL_VALIDATION errors. What's wrong?
I'm getting SIGIL_VALIDATION errors. What's wrong?
SIGIL_VALIDATION_* errors mean your request failed schema validation before policy evaluation even began.Common culprits:framework: Must be exactly"agentkit"or"eliza"."coinbase-agentkit"will fail.txCommit: Must be a lowercase 64-character hex string. Remove the0xprefix.chainId: Ensure you are targeting an allowlisted chain (1, 8453, 42161, 10, 137, 56, 999).
What does the JSON-RPC error response look like?
What does the JSON-RPC error response look like?
Policy and validation failures on the
/rpc and /bundler endpoints are returned as standard HTTP 200 JSON-RPC errors.Example:Attestation Verification
My attestation expired before I could use it. What do I do?
My attestation expired before I could use it. What do I do?
Attestations expire exactly 60 seconds from issuance. This strict window prevents replay attacks.
- Discard the expired token. It will be rejected.
- Request a new attestation by calling
POST /v1/authorizeagain. - Ensure your agent is not performing blocking operations (like heavy LLM reasoning) between receiving the attestation and submitting the transaction.
Can I cache and reuse an attestation for multiple transactions?
Can I cache and reuse an attestation for multiple transactions?
No. Attestations are single-use. They are cryptographically
bound to a specific
txCommit or userOpHash. Submitting an
attestation with a different transaction hash will instantly fail
validation.How do I locally verify the Ed25519 signature?
How do I locally verify the Ed25519 signature?
Intent Attestations are standard Ed25519-signed JWTs. You can verify them using the
jose library and Sigil’s public JWK endpoint.Key Custody & Security
Does Sigil store my private keys?
Does Sigil store my private keys?
Never. Sigil is explicitly non-custodial.We do not hold your private keys, custody your treasury assets, or issue long-lived credentials to your agents. Sigil operates strictly as an authorization firewall. The agent proposes, Sigil authorizes, and your own key infrastructure (e.g., Fireblocks, AWS KMS) physically signs the transaction.