web3wagmi
← All standards

ERC-8354 Confidential Agent Policy Verdicts

DraftERCcreated 2026-07-16requires ERC-165, EIP-712, ERC-721, ERC-1271, ERC-7812, ERC-8004

A pre-execution allow/deny interface for agent actions, proven in zero knowledge against a policy never disclosed on-chain.

Authors: Muhammad Zidan Fatonie (@mzf11125), Faisal Firdani (@zexoverz), Maulana Asykari Muhammad (@WeissCurry)

ERC-165 interface ids

Computed here as the XOR of the selectors each interface defines.

IPolicyDomainRegistry0x0771fc05
IPolicyGuarded0x8f0183bd

Functions this standard introduces (9)

0x8b5c79b1consume((uint256,bytes32,bytes32,bytes32,address,uint64,bytes32,uint8,uint8),bytes,bytes)
0xd7525232consume((uint256,bytes32,bytes32,bytes32,address,uint64,bytes32,uint8,uint8),bytes)
0xee9eee3ecurrentRoot(bytes32)view
0x00e35488domain(bytes32)view
0xd631b77aisConsumed(bytes32,bytes32)view
0xe90c46b3isRootAcceptable(bytes32,bytes32)view
0x8f0183bdpolicyDomain()view
0x3c624403verdictDigest((uint256,bytes32,bytes32,bytes32,address,uint64,bytes32,uint8,uint8))view
0x608759aaverify((uint256,bytes32,bytes32,bytes32,address,uint64,bytes32,uint8,uint8),bytes)view

Inherited (1)

0x01ffc9a7supportsInterface(bytes4)ERC-165

Events (6)

Topic0 is the keccak256 hash of the signature, which is what a log filter matches on.

0x043d376a16173c8f6152b7eeb0253930f255487e1a9604b6f9fd930b7733d8c1VerdictConsumed(bytes32,uint256,bytes32,bytes32,bytes32)
0x011b0b88ff6b9175768cadfb1629ecf54374e89d24757317e8f1c464563768f6DomainRegistered(bytes32,address,address,bytes32)
0x6f40d03dac9ffcc3cf04388088609f9c89d8fdc00692016f1e0964cec5f74fe6DomainRootUpdated(bytes32,bytes32,uint64,uint64)
0x2138de13934e1076a43150b9c11d73e77184d0eea276a8acadd25ed240fe99e2DomainProgramUpdated(bytes32,bytes32,bytes32)
0x8732d4c0d5763fbb2c5f0be0336b1f69e9f98dd88c12238239d5234b91e3a256DomainIdentityRegistryUpdated(bytes32,address,address)
0x67f192f0f5858717879e0f47f0c1bd3d31e7bddefd7b8f3fd7c1cb62a429c138DomainRevoked(bytes32)

Custom errors (10)

0x189e31ebAgentUnknown(uint256)
0x832c91c1VerdictExpired(uint64)
0x5a28a91fVerdictReplayed(bytes32)
0x905c74a0ExecutorMismatch(address,address)
0xc0a739a8ExecutorAuthInvalid()
0xf42e0b48PolicyRootRejected(bytes32)
0x93ba490fDomainInactive(bytes32)
0xe2d8f251VerdictDenied()
0xfcc51aefVerdictKindMismatch(uint8,uint8)
0x09bde339InvalidProof()

Depends on (6)

Proposals this one names in its requires field.

What the specification covers

Compare with

Parsed from the canonical specification · discussion