cd /news/ai-agents/a-funded-key-is-not-a-budget-we-prov… · home › topics › ai-agents › article
[ARTICLE · art-154761] src=agentbadge.xyz ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

A Funded Key Is Not a Budget. We Proved It on Arc Mainnet

Agent Allowance, a USDC budget vault deployed on Arc mainnet (chainId 5042), completed its full lifecycle of real transactions on explorer.arc.io, including three claims that moved the vendor balance from 99,020 to 99,135 units. The vault lets an owner deposit once, vest funds linearly Sablier-style, and restrict an AI agent to claiming only vested amounts to allowlisted payees within a per-transaction cap, with owner pause and cancel that claws back unvested funds. The project frames the design as closing a gap in x402 agent payments, where a funded key gives an agent unlimited signing power rather than a bounded budget.

read6 min views1 publishedOct 21, 2026
A Funded Key Is Not a Budget. We Proved It on Arc Mainnet
Image: Agentbadge (auto-discovered)

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.

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 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.

x402 lets an AI agent pay for things in USDC. That part works. The part nobody ships is the one that matters to whoever holds the keys: if the agent holds a funded key, the only thing standing between your balance and a bad prompt, a bug or a compromised model is the agent itself. A funded key is not a budget. It is just money with a chatbot attached.

We built Agent Allowance to close that gap: an onchain USDC budget vault on Arc mainnet where the owner funds once, funds vest linearly Sablier-style, and the agent can only claim what has already vested, to allowlisted payees, inside a per-transaction cap. Every guard lives in the contract, not in a promise. The full lifecycle — deploy, deposit, allowlist, cap, claim — is a chain of real transactions you can open right now on explorer.arc.io.

This is C31 of the Arc Campaign series. C30 was about making our own docs machine-operable. This one is about the money side: how an agent's spending power gets encoded instead of hoped for.

What does "allowance" mean for an agent? #

Give a human assistant a company card and the card network carries the policy: limits, categories, revocation. Give an AI agent a private key with USDC on it and none of that exists. The key can sign anything, pay anyone, any amount, forever. Most agent-payment setups today stop exactly there — the agent gets a funded wallet and an API key.

An allowance fixes the semantics the same way an employment contract fixes a handshake: the owner defines a funded vault, a vesting schedule, a list of allowed payees and a per-transaction cap. The agent's spending power is bounded by all four at once. If the agent's key leaks, the blast radius is the remaining vested amount toward one allowlisted address — not the whole treasury.

How does BudgetVault enforce it onchain? #

The contract is deliberately small. One deposit starts a linear vest — the balance an agent can spend grows second by second, which is the same mental model Sablier Lockup uses for payroll streams. Claims go through claim(amount, payee), and the contract reverts unless four checks pass:

  • payee allowlist — the owner added the address viaaddPayee ; the agent cannot route funds to itself or anywhere new;
  • per-tx cap — one claim can never exceedperTxCap , no matter how much has vested;
  • vested − claimed — unvested USDC is unreachable even with a valid signature;
  • ** flag** — the owner can freeze claims instantly, andcancel() returns all unvested funds, the standard Sablier clawback semantics.

The lifecycle on Arc mainnet, transaction by transaction #

Talk is cheap; the explorer is not. The demo vault went through its full lifecycle on Arc mainnet (chainId 5042). Each step is a real transaction — open them and verify the calls yourself:

Step What happened Transaction
approve Owner approved 3 USDC to the vault 0xfb313a…0b1aa
deposit 3 USDC deposited; linear vesting started 0xaf0b2d…d5a56
addPayee Vendor address allowlisted 0x92a234…3787
setPerTxCap Cap set to 1 USDC per claim 0xc927d0…4a54
claim #1 Agent claimed to vendor (+55 units) 0xab1286…9013d
claim #2 Agent claimed again, this time from the UI (+30) 0x99a641…d0c6e
claim #3 Third claim (+30, block 27082200) 0x5a29b4…509b5

The vendor's USDC balance moved 99,020 → 99,135 units over the three claims — +115 total, all onchain, all explainable line by line. The vault sits at 0x2860258CAf3e21c65517233aBa1e876D16D4Ff52, deployed through the factory at 0x5D1a014e1FFE3b777F0946C2dd75A7d3aecdacA4. 46 of 46 Foundry tests pass.

How is this different from existing allowance primitives? #

We checked the obvious alternatives before writing a contract:

  • Coinbase SpendPermissionManager (Base) gives recurring allowances bound to aspender account — it does not restrict which recipients the spender may pay.
  • Safe's AllowanceModule handles delegate + amount + reset period, again without recipient restrictions.
  • ZeroDev / Biconomy session-key policies come closest: spend limits plus a contract allowlist in one policy. That pattern — "policy in code" — is the de-facto industry reference for agent spending, and it is the model BudgetVault follows.
  • Sablier Lockup contributes the vesting and thecancel() clawback semantics: keep what streamed, return what has not.

What we add is the combination in one small contract plus a vesting dimension those allowlist-only designs lack: the agent does not just have a cap, it has a schedule. Money that has not vested yet cannot be spent, stolen or argued about — cancel the stream and it goes back to the owner.

Three roles, one honest UI #

The demo interface is not a mockup — it is a three-role board wired to the live vault. The owner view shows funding, payee management, the cap, and cancel. The agent view shows vested and claimable amounts ticking in real time, the vesting schedule and the ERC-8004 agent identity (id 2, 0xcdd23d…869d) bound to the vault. The vendor view scans its own payee address and finds incoming payments with block numbers — no trust in the agent required.

The whole walkthrough is recorded: a 3-minute EN/RU demo video runs the loop end to end, and the hackathon landing at agentbadge.xyz/hackathon/agent-allowance carries the animated architecture diagram and every explorer link from the table above.

What we are not claiming #

  • Amounts are demo-sized. Three claims, 115 units of USDC. The mechanics are mainnet-real; the scale is intentionally trivial.
  • One payee, one agent, one vault. Multi-payee, multi-agent and operator-claim patterns (a SignedIntent handed to an orchestrator) are designed seams, not shipped features.
  • The UI is a demo harness. It proves the contract is usable by three roles; it is not a production custody product.
  • No audit. Foundry suite is green (46/46) and every write is on the explorer, but the contract has not seen an external audit. Do not point a treasury at it.

Try it yourself #

  • Walk the lifecycle: every row in the table links straight to a transaction
  • Read the contract: vault on explorer.arc.io
  • Watch the loop: the EN/RU demo video shows owner → agent → vendor end to end
  • Clone the repo and run forge test — 46/46 should pass

This is C31 in the Arc Campaign series. Earlier: C30 the machine-readable docs loop, C15 the x402 bazaar, C4 agent wallet spending policies. Series index at agentbadge.xyz/blog.

── more in #ai-agents 4 stories · sorted by recency
── more on @agent allowance 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/a-funded-key-is-not-…] indexed:0 read:6min 2026-10-21 · —