{"type":"article","schemaVersion":"1","slug":"arc-c31-agent-allowance","title":"A Funded Key Is Not a Budget. We Proved It on Arc Mainnet","description":"x402 lets an AI agent pay in USDC, but a funded key is not a budget. Agent Allowance is an onchain USDC budget vault on Arc mainnet: the owner funds once, funds vest linearly Sablier-style, and the agent claims only vested amounts to allowlisted payees inside a per-tx cap. Full lifecycle verified on explorer.arc.io.","status":"LIVE","topics":["agent-payments","onchain-allowance","arc-mainnet"],"concepts":["policy-in-code","linear-vesting","agent-allowance","evidence-over-promises"],"rules":[],"capabilities":["budget-enforcement","claim-verification","owner-clawback"],"actions":[{"type":"read","label":"Read article (Markdown)","url":"https://agentbadge.xyz/blog/arc-c31-agent-allowance.md"},{"type":"view-demo","label":"Agent Allowance landing","url":"https://agentbadge.xyz/hackathon/agent-allowance"},{"type":"contact","label":"Work with AgentBadge","url":"https://agentbadge.xyz/agent-guide/team/contact"}],"qa":[{"question":"What stops an agent from draining a funded vault?","answer":"Four onchain guards in BudgetVault: a payee allowlist set by the owner, a per-transaction cap, a vested-minus-claimed bound so unvested USDC is unreachable, and an owner-controlled pause plus cancel that returns all unvested funds."},{"question":"Is the lifecycle actually verifiable?","answer":"Yes. Approve, deposit, addPayee, setPerTxCap and three claims are all real Arc mainnet transactions linked in the article, including claim 0x5a29b4…509b5 at block 27082200. The vendor balance moved 99,020 to 99,135 units."},{"question":"How does it differ from Coinbase SpendPermission or Safe AllowanceModule?","answer":"Both bind spending to a spender or delegate without restricting recipients. BudgetVault adds a payee allowlist and a linear vesting schedule in one contract, following the session-key policy-in-code model plus Sablier-style cancel clawback."}],"claims":[{"id":"claim-1","text":"A BudgetVault on Arc mainnet processed three agent claims to an allowlisted vendor; the vendor USDC balance moved from 99,020 to 99,135 units.","status":"VERIFIED","evidence":[{"type":"transaction","url":"https://explorer.arc.io/tx/0x5a29b45d133338516ca88ad96017bc8ec79a8ef206b6d5767a74956f6c8509b5"}]},{"id":"claim-2","text":"The vault lifecycle — approve, deposit, addPayee, setPerTxCap — is a chain of onchain transactions on Arc mainnet (chainId 5042).","status":"VERIFIED","evidence":[{"type":"transaction","url":"https://explorer.arc.io/tx/0xaf0b2dd109690824f7d573df2563eb83b49fe2cb901952fccd4c1e98119d5a56"},{"type":"demo","url":"https://agentbadge.xyz/hackathon/agent-allowance"}]},{"id":"claim-3","text":"The contract passes 46 of 46 Foundry tests; source is public in the agent-budget-vault repository.","status":"VERIFIED","evidence":[{"type":"github","url":"https://github.com/spreadzp/agent-budget-vault"}]}],"canonical":"https://agentbadge.xyz/blog/arc-c31-agent-allowance","dates":{"published":"2026-10-21","modified":"2026-10-21"},"markdownUrl":"https://agentbadge.xyz/blog/arc-c31-agent-allowance.md","jsonUrl":"https://agentbadge.xyz/blog/arc-c31-agent-allowance.json","shortAnswer":"Agent Allowance is a USDC budget vault on Arc mainnet (chainId 5042). The owner deposits once, funds vest linearly, and the agent can only claim already-vested amounts to allowlisted payees within a per-transaction cap — plus owner pause and cancel with clawback of unvested funds. Three real claims moved the vendor balance 99,020 to 99,135 units; every lifecycle step is a verifiable transaction on explorer.arc.io.","technologies":["arc","USDC","ERC-8004","ERC-20","Solidity","Foundry","x402"],"entities":["budget-vault","vault-factory","payee-allowlist","vesting-schedule"],"economicContext":{"endpoints":{"landing":"https://agentbadge.xyz/hackathon/agent-allowance","vault":"https://explorer.arc.io/address/0x2860258CAf3e21c65517233aBa1e876D16D4Ff52","factory":"https://explorer.arc.io/address/0x5D1a014e1FFE3b777F0946C2dd75A7d3aecdacA4","repository":"https://github.com/spreadzp/agent-budget-vault","guide":"https://agentbadge.xyz/agent-guide/articles/arc-c31-agent-allowance"},"payment":{"supported":false,"currency":"USDC"}},"relatedResources":[{"type":"project","label":"Agent Allowance — hackathon landing","url":"https://agentbadge.xyz/hackathon/agent-allowance"},{"type":"github","label":"agent-budget-vault (Foundry)","url":"https://github.com/spreadzp/agent-budget-vault"},{"type":"guide","label":"C30 — machine-readable docs loop","url":"https://agentbadge.xyz/blog/arc-c30-agent-economy"},{"type":"guide","label":"C4 — agent wallet spending policies","url":"https://agentbadge.xyz/blog/arc-c4-agent-wallet"}]}