Skip to content

Agent policy

One policy per agent. The app edits it with PUT /v1/agents/:id/policy; the agent reads it with get_agent_policy. The engine that applies it is described in Policy decides.

Field Default (new agent) Meaning
mode always_ask always_ask: every payment needs your passkey. autonomous: payments within limits run without you (never swaps, never Cardano)
spendingEnabled false Master switch for value-moving tools; off denies every send, swap and pay_x402
allowedWalletIds the wallets you picked Wallets the agent may see and use; empty means none
allowedNetworks the networks you picked Networks the agent may use
allowedTools all eight policy tools MCP tools the agent may call (find_agents and verify_agent are not policy tools)
restrictRecipients true When on, value may only go to recipientAllowlist
recipientAllowlist empty Up to 200 {family, address, label}. For x402, list the seller (also for escrow, where the money first goes to the script)
allowedProtocols empty Plugins the agent may route through: x402, jupiter, …
limits all "0" USD cents: perTransactionUsdMinor, dailyUsdMinor, monthlyUsdMinor. Daily and monthly count spent plus reserved
overLimitBehavior require_approval Above a limit, without a valuation or ESCROW_REQUIRED: require_approval (ask you) or deny
x402EscrowAboveUsdMinor null x402 payments above this many USD cents must use Masumi escrow; "0" means all; null means no requirement
requireRegisteredAgent false Only pay sellers with a Masumi registry identity ZyroPay verified on chain
trustedAgentIdentifiers empty With the previous rule, up to 50 agentIdentifiers; non-empty means only these
sessionExpiresAt null The agent’s access ends at this instant; null means until revoked
revoked false Set when you disconnect the agent
version 1 Incremented on every change (optimistic locking)

On update, an absent x402EscrowAboveUsdMinor, requireRegisteredAgent or trustedAgentIdentifiers keeps its current value. Switching to autonomous also needs the passkey-stamped Turnkey envelope request (Autonomous mode); without a passkey signer the app refuses it.