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
{
"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
| Field | Type | Effect |
|---|---|---|
| daily_cap | amount | Maximum total moved per rolling 24h. Resets continuously, not at midnight. |
| per_tx_cap | amount | Hard ceiling on any single transaction, regardless of headroom under daily_cap. |
| allow | action[] | Action types permitted at all: transfer, swap, approve, sign. Absent ⇒ denied. |
| allowlist | address[] | Destinations/contracts the presence may interact with. Empty ⇒ nowhere. |
| confirm_over | amount | Anything above this pauses for your explicit yes before it executes. |
| deny | rule[] | 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.
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
yuzu wallet policy edit # opens the document
yuzu wallet policy showOr 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.
