
ERC-8478: x402 Payee Verification for ERC-8004 Agents
ERC-8478 is a draft Ethereum standard that binds the x402 payTo address to an ERC-8004 agent's identity, to stop payee redirection by a hijacked domain, proxy or injected tool result. A payTo must equal the agentWallet or carry an EIP-712 delegation signed by it, and the origin must be listed in the registration file. On Robinhood Chain, 5 of 5,575 x402-responding agents used their agentWallet as payTo (28 October 2026).
What it is
ERC-8478 is a draft Ethereum standard, posted on Ethereum Magicians, that ties the x402 payTo address to the seller's ERC-8004 identity. Today the payTo comes from the 402 response, and nothing links it to the paid agent. Whoever controls that response (a hijacked domain, a proxy in the path, or an instruction injected into a tool result) picks the recipient. The payment still settles and the resource may still be delivered. The page says a PR will follow, but no link was posted yet.
How it works
The 402 payment requirement names the seller in extra.erc8004: the identity registry as a CAIP-10 account id, plus the agentId. Existing clients ignore the field and keep working.
A payTo is bound to the identity in one of two ways:
- It equals the agent's
agentWallet, which ERC-8004 only lets be set with that wallet's own signature. - The
agentWalletsigned an EIP-712 payee delegation for that exactpayTo, network, asset and origin. Delegations are time-limited. Rotating theagentWalletrevokes every delegation it signed. Contract wallets sign through ERC-1271.
The resource's origin must also be listed in the agent's registration file. Without that check, any server could name a well-known agent, set payTo to that agent's wallet, pass the payee check and serve nothing.
A checker can be the payer, its wallet, the facilitator or a third party. It returns exactly one outcome and states the block it read:
verified-walletverified-delegationmismatchinvalid-delegationendpoint-unlistedno-agent-walletno-identitynot-read
There is no score, and not-read is never reported as verified. If the payment is already signed, the checker also compares the signed recipient and amount with the requirement, which catches a payment built from a different requirement.
What to do
The draft says a payer SHOULD sign only on verified-wallet or verified-delegation. It MUST NOT rely only on a facilitator named by the same 402 answer it is checking.
The reference implementation is toll (ERC-8004 agent #20030 on Robinhood Chain). An agent sends it the 402 payment requirement and gets the payee outcome before signing. The page does not give an endpoint or command.
Caveats
The measurement is from Robinhood Chain (chain 4663) on 28 October 2026. Of 20,046 registered agents, 5,575 answer with an x402 requirement, and only 5 use their registered agentWallet as payTo. The author says most mismatches come from one operator receiving into a single treasury, which is legitimate and is the case the delegation covers. The page does not count how many mismatches are malicious.
The author lists three open questions:
- Whether the identity belongs in
extra.erc8004or only in the registration file. - Whether short delegation validity is enough without a per-delegation revocation list.
- Whether the cross-network rule is too strict. For a payee on a different network than the registry, the
agentWalletis accepted only if it has no contract code on the registry's chain, and a delegation is required otherwise.
The author also runs toll, the only implementation named. The draft is a companion to ERC-8470 (launch observations).
Technologies named here
- Ethereum
- ERC-8004 agents (identity registry, agentWallet)
- Robinhood Chain
- toll
- x402
Standards and laws named here
- CAIP-10
- EIP-712
- ERC-1271
- ERC-8004
- ERC-8470
- ERC-8478
Techniques named here
- EIP-712 payee delegation
- payee redirection
- Payee verification against ERC-8004 agentWallet
- Pre-sign check
- Registration file origin listing check
- Signed payment comparison
Concepts named here
- agentWallet as identity anchor
- Cross-network payee
- Facilitator trust
- Fixed verification outcomes
- Identity naming in extra.erc8004
- Measured mismatch between payTo and agentWallet
- Payee redirection via the 402 response
Related in AI Security
