Agent Policy Semantics
Rules defining how much an agent can spend and where it can send funds.
Agent policies are the primary risk control mechanism in MAWS. They consist of a spendingLimit (maximum OKRW per transaction) and allowedTargets (an allowlist of destination addresses). These rules are stored on-chain in the IdentityRegistry, but only MAWS enforces them: the MCP server checks them before it signs. No chain module reads them, so a transaction sent with the agent wallet's key outside MAWS is not stopped by them; the per-agent cap the chain itself can enforce is the separate TransferLimit key (see two-layer-policy-model).
Spending Limits
The
spendingLimit is stored on-chain in atokrw, the base denom (see okrw-precompile-overview for the unit ratio). A value of 0 means unlimited spending. If an agent attempts to send an amount exceeding this limit, the transfer.send tool will return a POLICY_REJECTED error. Notably, transfers back to the agent's owner are subject to this limit to prevent accidental total drains, requiring large withdrawals to be chunked.const spendingPolicy = {
spendingLimit: "1000000000000000000000000", // 1,000,000 OKRW (1_000_000 * 10^18 atokrw)
allowedTargets: [], // empty means all targets allowed
}; Allowed Targets
The
allowedTargets array restricts which EVM addresses the agent can interact with. If the array is empty, the agent can send funds to any address. The agent's owner address is implicitly allowed, meaning an agent can always return funds to its creator regardless of the allowlist.