FINANCIAL CONTROLS FOR AUTONOMOUS AGENTS

Give your agenta budget, not your wallet.

Create programmable wallets with spending limits, scoped permissions, approvals and live expense tracking on Robinhood Chain.

Research Agent

0x81…3A1
ACTIVE

Spent

$184

Budget

$500/month

Permissions

  • Compute
  • APIs
  • Trading
  • Transfers

Latest

  • OpenAI$4.20
  • Compute$12.40
  • Data$8.00
Example policy receipt. A $4 API purchase passes every check and is approved. A $50 transfer to an unknown wallet fails its checks and is blocked.

Policy receipt

The missing middle

NO ACCESSorFULL ACCESS

The agent cannot pay for anything. A person stops to buy every API call it needs.

The agent holds a private key. One bad instruction can empty the wallet.

Those are the two settings an agent gets today. AgentSpend is everything between them.

  1. Agent walletA smart account you own.
  2. Session keyScoped, expiring, revocable.
  3. PoliciesWhat it may do, signed by you.
  4. BudgetPer transaction, day, week and month.
  5. Allowed actionsNamed contracts, assets and recipients.
  6. Live monitoringEvery request, as it happens.
  7. Audit trailWho did what, and why it was allowed.

How it works

Set the rules once.
Read the statement after.

  1. Step 1

    Set the budget

    Create a wallet for the agent and fund it. Choose what it can spend per transaction, day, week and month, who it can pay, and when its key expires. You sign the policy from your own wallet, and the limits go onchain.

    ResearchBot policy

    AWAITING SIGNATURE
    Per transaction
    $200
    Daily
    $250
    Weekly
    $400
    Monthly
    $500
    Wallet
    0x81…3A1
    Funded
    500 USDG
    Allowed vendors
    OpenAI, GPUFarm, Data provider
    Allowed assets
    USDG, ETH
    Unknown recipients
    Blocked
    Human approval
    Above $100
    Session key
    Expires in 7 days

    Your wallet signs every limit above, and nobody can widen them without your signature.

  2. Step 2

    The agent spends

    The agent names a vendor and an amount. AgentSpend checks the request, signs it and sends it, so the agent never touches a private key. The expense lands on the statement, categorized.

    Above your threshold, it waits for a person. Your approval is a wallet signature, and the agent's reason is shown but never trusted on its own.

    Expenses

    Example statement

    TODAY

    • 12:42OpenAI API creditsResearch Agent$4.20APPROVED
    • 11:18Cloud computeBuilder Agent$12.40APPROVED
    • 10:04NVDA Stock TokenTrading Agent$48.20APPROVED
    • 09:32Unknown transferRecipient not approved$240.00BLOCKED
    Spent today
    $64.80
    Stopped before it left the wallet
    $240.00
    APPROVAL NEEDED

    ResearchBot wants to spend $180

    Vendor
    GPUFarm
    Agent's reason
    “Run 4-hour GPU job”
    Policy
    Requires approval > $100
  3. Step 3

    Every spend is explained

    Every request gets a receipt: what was asked, what each rule said, what it cost in USD at the time, and which transaction paid for it. Blocked attempts get one too. Export it all as CSV or JSON for your books.

    OpenAI API credits

    Today at 12:42

    $4.20

    APPROVED
    Agent
    Research Agent
    Wallet
    0x81…3A1
    Vendor
    OpenAI
    Amount
    4.20 USDG
    USD value at time
    $4.20
    Category
    AI/API
    Gas
    Paid by wallet
    Tx hash
    0x4be1…c07a
    UserOperation
    0x9d02…71fe
    Session key
    0x3ac4…e210
    Approver
    Policy, no human needed
    Agent's reason
    “Summarizing 40 papers”

    Transaction simulation

    Leaves the wallet
    4.20 USDG
    Reaches
    OpenAI
    Approvals changed
    None
    • Agent is active
    • Session key is active
    • Within key validity window
    • Contract allowlisted
    • Contract not blocklisted
    • Function allowed
    • Asset allowedUSDG
    • Recipient validOpenAI
    • No unlimited approval
    • No dangerous function
    • USD value is reliable
    • Under per-transaction limit$4.20 of $200
    • Under daily budget$4.20 of $250
    • Under weekly budget$61.60 of $400
    • Under monthly budget$184 of $500
    • Under daily transaction limit3 of 50 today
    • Balance available
    • Simulation succeeded
    • Onchain rules agree
    APPROVED
  4. Step 4

    Stop it instantly

    Freeze ends autonomous spending the moment you press it, with no wallet prompt. The session key is revoked onchain and its key material is destroyed. Your funds stay where they are, and you can move them yourself.

    ResearchBot

    0x81…3A1
    ACTIVE
    • Autonomous spending stopped
    • Waiting requests cancelled
    • Session key revoked onchain
    • Key material destroyed
    • Funds still in your smart account

Security

Two locks on every spend.

Funds stay in your smart account, and the owner keeps ultimate control. A spend has to pass both locks, and the first one does not depend on us.

Lock 1, onchain

Hard limits in the contract

A policy module on your smart account checks every operation against rules you signed. These limits hold even if AgentSpend itself is down or compromised.

Expiry
A session key stops working on the date you set.
Spend caps
Per transaction, daily, weekly and monthly, in USD.
Allowed contracts
Only the contracts you list.
Allowed selectors
Which functions it may call on those contracts.
Allowed assets
Only the tokens you list.

Lock 2, offchain

A policy engine in front of it

Before anything is signed, AgentSpend works out what the request really does and what it is worth, then asks a person when your rules say so.

Live USD valuation
Every spend priced at the current rate.
Simulation
What the transaction would really do, before it is signed.
Approvals
Above your threshold, a person decides.
Anomaly alerts
Spend spikes and repeated blocks reach you.

When something goes wrong

The agent is tricked or goes off script
It can only ask. A request outside the rules fails both locks and lands on your statement as blocked.
An agent credential leaks
The agent never gets the owner key, or any chain key. A stolen credential can only make requests, and each one still faces the policy.
Someone asks for a Permit signature
Session keys can never sign Permit approvals. The module refuses every signature request made on the account's behalf.
AgentSpend is down
Nothing gets signed, so nothing gets spent. The owner can recover funds directly, with no AgentSpend service involved.
AgentSpend is compromised
The onchain limits still hold. The worst case is what you signed: allowed recipients, inside the caps, until the key expires. Your wallet can revoke the key at the contract.

Built on ZeroDev Kernel v3.1 and ERC-4337 on Robinhood Chain.

For developers

The agent asks.
The policy answers.

The SDK's sessionKey is a scoped API credential. It reaches one agent's wallet, budget and expenses, and it holds no chain key.

Using an MCP client instead? @agentspend/mcp gives an agent the same requests as tools, with no master wallet access.

Read the docs
pay.ts
import { AgentSpend } from "@agentspend/sdk";

const spend = new AgentSpend({
  agentId: process.env.AGENTSPEND_AGENT_ID,
  sessionKey: process.env.AGENTSPEND_API_KEY,
});

await spend.pay({
  vendor: "gpufarm",
  amount: "15",
  asset: "USDG",
  purpose: "compute",
});
The same payment over HTTP
POST /v1/payments
Authorization: Bearer as_live_…
Idempotency-Key: job-2291-gpu
Content-Type: application/json

{
  "agentId": "7c1e4a52-…",
  "vendorId": "gpufarm",
  "amount": "15",
  "currency": "USDG",
  "purpose": "compute"
}
Response, shortened
{
  "intentId": "c41d7f06-8b13-4e2a-b5f4-6a90e17d3c28",
  "status": "APPROVED",
  "decision": "APPROVED",
  "estimatedUsdValue": "15000000",
  "estimatedUsd": "15",
  "policyChecks": [
    { "id": "recipient_allowed", "label": "Recipient valid", "status": "PASS" },
    { "id": "daily_budget", "label": "Under daily budget", "status": "PASS",
      "detail": "$8.20 used + $15.00 of $250.00" },
    { "id": "onchain_policy", "label": "Onchain rules agree", "status": "PASS" }
  ],
  "risk": "LOW",
  "findings": []
}

Give your agenta budget, not your wallet.