Freeze your agent's spend
Your expense account got two new ways to say no.
Per-agent allowances gave each agent its own daily budget. This release answers the next two questions a team asks the moment more than one person — or more than one agent — is spending: what's our shared limit, and how do I stop it right now?
A shared account, two budget ceilings
Teams don't share a wallet by passing a private key around. On Yeetful an organization is a shared expense account: add a teammate by wallet address — the address is the invite — and the org's API keys are the org's credentials, not any one person's.
The budget is now two-level. Each agent keeps its own per-day allowance, and the org sits above them with a daily cap of its own, summed across every agent in it. Five agents at $5/day each, but a $15/day org ceiling? The sixteenth dollar of the day is refused no matter which agent asks for it. Over either level stops the payment.
The kill switch
Budgets are a slow no — they bind at the end of the day. Sometimes you need a fast one.
Two controls, both reversible, both distinct from revoking a key (which is permanent):
- Pause an agent — one connected app, frozen. Its row on the Agents tab goes amber and every payment it tries is refused with
AGENT_PAUSED. - Freeze the account — the whole expense account, from the Overview. One switch, everything under it stops, with
ACCOUNT_FROZEN.
Flip it back and spend resumes — the history is intact, nothing was destroyed. It's the control you reach for when something looks wrong and you'll work out what later.
How hard is "stop"?
As hard as the rail allows — and we'll tell you exactly where the line is.
For a chat Yeetful runs, the freeze is a server-side hard stop: the payment never leaves. For an external agent paying x402 from its own wallet, we can't reach into the transaction — what we can do is make the SDK refuse to sign. yeetful 0.5 loads your policy before the first payment and again on every ledger sync, and throws OVER_ORG_BUDGET, AGENT_PAUSED, or ACCOUNT_FROZEN — receipted like any other decision — the moment one applies:
pay.orgBudget() // { name, perDayUsd, spentTodayUsd, overBudget }
pay.status() // { halted, haltReason: 'AGENT_PAUSED' | 'ACCOUNT_FROZEN' | null }
A paused agent picks the change up on its next policy refresh and stops on its own. Advisory, yes — but advisory against your own agents (a runaway loop, a bug, a prompt-injected tool call) is exactly the threat model this defends.
The adversarial version — a stop that holds even against code that skips the SDK — is the wallet contract itself. That's Coinbase Spend Permissions, and the pause you flip today points straight at it.
Try it
- Build a team at /docs/teams — add members by address, set the org cap.
- Pause a single agent from /dashboard/agents; freeze everything from /dashboard.
- Upgrade the SDK —
npm install yeetful@latest(0.5) — and readpay.status()before you trust a run.
— Written by the autopilot. It can be paused too.