Spending limits for AI agents, enforced on chain.

Fund a leash for your agent's address. A contract enforces the daily cap, the allowlist and your stop switch. Every spend leaves a public receipt.

Leashwick
CA CA posted at launch
(Live receipts)

Loading receipts from the chain…

(00) About

An agent with a wallet can spend everything in it. Leashwick moves the limit into a contract, where no prompt, bug or bad tool call can change it.

What it is

A vault on Robinhood Chain. You open a leash for one agent address and fund it with ETH. The agent can send ETH only to addresses you allowlisted, only up to the daily cap, and only while you have not hit stop. You can withdraw at any time. The numbers below are read from the contract right now.

–Leashes opened
–ETH held in leashes
–ETH spent by agents
–ETH in fees for burn

Read from LeashVault on Robinhood Chain.

(01) How it works

From a wallet to a leash in four steps.

01 · open()

Open a leash

Name the agent address and a label. You become the leash owner, the only one who can change it or take money out.

02 · dailyCap

Set the daily cap

The most the agent can spend per UTC day. It resets at 00:00 UTC. Lower or raise it whenever you like.

03 · allowlist

Allowlist destinations

Up to 20 addresses the agent may pay. Anything else reverts. Fund the leash with ETH at open or later.

04 · spend()

Agent spends, chain keeps a receipt

The agent calls spend() from its own address. Each spend emits a public Receipt with amount, fee, memo and today's total.

(02) Rules

Rules the contract enforces, not a server.

  1. 01

    Daily cap

    Each UTC calendar day the agent can send up to the cap; the fee does not count toward it. The counter restarts at 00:00 UTC. A new cap applies at once, against what was already spent today.

    revert OverCap(remaining)
  2. 02

    Allowlist

    Only plain ETH, only to addresses you listed (max 20). No calldata, so the agent cannot call other contracts through the leash.

    revert NotAllowed(to)
  3. 03

    Stop switch

    You can stop a leash in one transaction. Every spend reverts until you resume it.

    stop(id) · resume(id)
  4. 04

    Withdraw any time

    The leash owner can pull ETH out at any time, also while stopped. It goes to the owner's address only. No admin key touches leash funds.

    withdraw(id, amount)
  5. 05

    Public receipt

    Every spend emits an event anyone can read: leash id, agent, destination, amount, fee, memo, UTC day and today's running total.

    event Receipt(…)
  6. 06

    0.25% fee, or none

    Charged on top of each spend from the leash balance, so the destination gets the exact amount. Waived when the leash owner holds the token minimum. Fees go to a burner that buys and burns the token.

    FEE_BPS = 25

(03) For your agent

One call. The contract says yes or no.

Give the agent its leash id and keep a little ETH on the agent's address for gas. It checks maxSpendNow(id), then calls spend(id, to, amount, memo). A memo is 32 bytes, public.

Full agent guide

(04) Receipts

Recent receipts, read straight from the logs.

Loading…

(05) Contract

Two roles. Nothing else has a key.

(Agent)

What the agent can do

Call
spend(id, to, amount, memo), nothing else
Destination
Allowlisted addresses only, plain ETH, no calldata
Amount
Up to what is left of today's cap (UTC day)
When stopped
Every spend reverts
Gas
Paid by the agent's own address

(Owner)

What the leash owner can do

Money
fund, withdraw any time (to the owner only)
Limits
setCap, allow, disallow (max 20 destinations)
Switch
stop, resume
Fee
0.25% per spend, waived at the holder minimum
Admin
No proxy, no pause, no rescue. Contract owner can only set the token address, once.

Not audited. The source is public and verified on Blockscout once deployed. Use amounts you can afford to lose.

(06) FAQ and risks

What it does, and what it does not.

Is the contract audited?

No. It is short and public, has no proxy and no admin over leash funds, but it has not been audited. Treat it as experimental and keep balances small.

How much can my agent spend?

At most the daily cap per UTC day, only to allowlisted addresses, only while the leash is running, and never more than the leash balance (fee included).

What if the agent's key leaks?

Whoever holds it can spend within the same limits: up to the daily cap, only to your allowlist. Caps reset at 00:00 UTC per calendar day, so up to 2× the cap can move around midnight. Press Stop as soon as you suspect a leak, then withdraw. The agent key can never withdraw or change the limits. The agent address is fixed per leash, so to rotate a key you open a new leash.

Can more than the cap move in one day?

The cap counts per UTC calendar day and resets at 00:00 UTC. So around midnight up to twice the cap can go out within a few minutes (a full cap at 23:59, another at 00:00). Set the cap with that in mind.

Can anyone else take my ETH?

Only the leash owner can withdraw, and only to their own address. A leash cannot be transferred to another owner. The contract owner's single power is setting the token address once.

Can I allowlist a contract?

Yes, but be careful. The vault sends plain ETH, so a contract that credits the sender (WETH, deposit or bridge contracts) credits the vault and the ETH is lost. Allow wallets, or contracts you know accept plain ETH for you. The console warns when a destination is a contract. Also avoid allowlisting the agent's own address unless you mean to let it pay itself.

Can the agent pay a contract or a token?

It can send plain ETH to any allowlisted address, contract or not, but with no calldata. It cannot call functions or move tokens through the leash.

Someone opened a leash naming my agent. Is that a problem?

Anyone can open a leash for any agent address, so lists by agent and the receipts feed can contain spam leashes with copied labels or phishing memos. Labels and memos are shown as plain text, never as links. Check the owner of each leash; agents should pick their leash by id, not by label.

Where do fees go?

0.25% of each spend, charged on top, accrues in the vault as pending fees. Anyone can call flushFees() to push them to the burner, and anyone can call buyAndBurn() on the burner, which buys the token and sends it to the dead address.

Which network?

Robinhood Chain. The console shows which network it is pointed at; the testnet build is for trying things before the mainnet vault is published.

(07) Start

Put your agent on a leash.

  1. 01Open a leash for your agent's address with a cap and an allowlist.
  2. 02Give the agent its leash id and a little ETH for gas.
  3. 03Watch receipts. Stop or withdraw whenever you want.

Token CA

CA posted at launch

Only trust the CA posted on leashwick.pro and @leashwick.