yuzu.docsSiteOpen app
Docs/Wallet & Base/Spend policy
Wallet & Base

Spend policy

The contract between you and the presence. It cannot spend outside it, and it cannot edit it.

The policy is the whole of your control surface over a presence's money. Until one exists, spending is off. Once it does, every action — conversational, API, or autonomous — is checked against it before it touches the chain. There is no path around it.

The shape

policy
{
  "daily_cap": "0.25 ETH",
  "per_tx_cap": "0.05 ETH",
  "allow": ["transfer", "swap"],
  "allowlist": ["0xYourSafe…", "0xDexRouter…"],
  "confirm_over": "0.02 ETH",
  "deny": ["approve:unlimited"]
}

Fields

FieldTypeEffect
daily_capamountMaximum total moved per rolling 24h. Resets continuously, not at midnight.
per_tx_capamountHard ceiling on any single transaction, regardless of headroom under daily_cap.
allowaction[]Action types permitted at all: transfer, swap, approve, sign. Absent ⇒ denied.
allowlistaddress[]Destinations/contracts the presence may interact with. Empty ⇒ nowhere.
confirm_overamountAnything above this pauses for your explicit yes before it executes.
denyrule[]Hard blocks that override allow — e.g. unlimited approvals, even on allowlisted routers.

The confirmation pause

confirm_overis the middle ground between "blocked" and "autonomous". An action above the threshold is fully prepared, then held. The presence asks — in chat if you're there, as a push if you're not — and waits without losing the thread or the plan. Approve and it proceeds from exactly where it paused.

held
presence · ready to swap 0.08 ETH → USDC on 0xDexRouter…
         ·that's over your 0.02 confirm line — yes?
you · yes
presence · done — 0x7a…f3, block 19,402,144

A standing instruction can tighten this further and outranks anything said in the moment — "never over 0.05 without asking, even if I told you to earlier today" holds even mid-conversation.

Precedence

When rules interact, strictest wins, evaluated in this order:

  • deny — an explicit block ends it. Nothing overrides a deny.
  • standing instruction — a pinned preference can only tighten, never loosen, the policy.
  • caps & allowlist — must all pass.
  • confirm_over — if still permitted but over the line, it pauses for you.

Setting it

shell
yuzu wallet policy edit       # opens the document
yuzu wallet policy show

Or PUT /v1/wallet/policy API · Memory & wallet. Policy changes take effect on the next action; an in-flight confirmation already shown is honoured under the policy it was raised with.