
Refusal.eth
Deny-by-default spending firewall: prove policy before an agent can sign.
Demo
About
AI agents can be prompt-injected into unsafe spending when policy is readable context and signing is unconditional. REFUSAL.eth makes refusal the default: an agent identity is resolved, a sealed policy is evaluated, and only an explicit ALLOW receipt can reach a downstream signer. Revocations, allowlist misses, limit breaches, and human denials become named, inspectable refusal proofs instead of silent failures. The public console exposes deterministic allowlist-miss and limit-breach paths, while the repository honesty table separates verified local behavior from sponsor integrations still awaiting live evidence.
How it's made
The verified build is a Next.js/TypeScript proof surface with viem-based ENS resolution, a Solidity RefusalGateway, and one shared deterministic gate mirrored in the CRE workspace. The contract binds verdicts to deadline and nonce, rejects zero keys and empty names, and prevents case-variant revocation bypasses; parity tests compare the web mirror and canonical gate. The CRE handlerInTee retrieves a sealed policy and private intent inside the TEE, with an official CLI simulation recorded; production deployment is not claimed. Privy remains an adapter boundary until a funded wallet, policy/quorum flow, approval, and Sepolia receipt are evidenced. make verify runs 11 Forge tests, 15 gate assertions, 20/20 parity, ENSv2 checks, and claim auditing.