> ## Documentation Index
> Fetch the complete documentation index at: https://docs.privy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Control agent wallets

> Set spending limits, allowlists, and approvals for agents

Agents act autonomously, so the wallet must enforce the owner's rules even when the agent misbehaves. Privy evaluates every request against its policies inside a secure enclave before signing. A compromised agent or a modified client cannot bypass them.

## Ownership and access

Every Privy wallet has an **owner** and optional **signers**. The owner can change the wallet's policies and signers. Signers can only transact, within their policies. Choose how much authority the agent holds:

* **Agent-owned**: Your app creates the wallet and owns it with an [authorization key](https://docs.privy.io/controls/authorization-keys/owners/overview.md). The agent transacts within the wallet's policies without prompting a user.
* **Delegated with a signer key**: The user stays the owner and adds the agent's key as a [signer](https://docs.privy.io/wallets/using-wallets/signers/overview.md) with its own policies. The user can remove the signer at any time.
* **Delegated with Agent Authorization**: The user approves the agent once in a browser. The agent gets short-lived access tokens instead of a long-lived key. The [Privy Agent Wallet Sandbox](https://docs.privy.io/agent-wallets/agent-cli.md) uses [Agent Authorization](https://docs.privy.io/agent-wallets/agent-authorization.md).

To keep an agent from changing its own limits, make the owner a [key quorum](https://docs.privy.io/controls/key-quorum/overview.md). Sensitive actions, such as updating policies, then require approval from multiple parties.

## Limit what an agent can do

Attach [policies](https://docs.privy.io/controls/policies/overview.md) to an agent wallet, or to the agent's signer on a user's wallet. Common agent guardrails include:

* **Spending limits**: Cap the amount per transaction, or over a rolling window with [stateful policies](https://docs.privy.io/controls/policies/stateful-policies.md).
* **Recipient allowlists**: Restrict transfers and payouts to approved addresses and bank accounts.
* **Contract allowlists**: Limit the agent to approved protocols and merchants.
* **Chain and asset restrictions**: Keep the agent on the chains and stablecoins your app supports.
* **Sanctions screening**: [Deny x402 payments to sanctioned addresses](https://docs.privy.io/recipes/agent-integrations/x402-sanctions-screening.md) before they are signed.

Wallet actions such as transfers and payouts support policies on their request fields. See [transfer policies](https://docs.privy.io/wallets/actions/transfer/policies.md) for an example that caps amount, asset, chain, and destination.

> [card] [Create a policy](https://docs.privy.io/controls/policies/create-a-policy.md)
>
> Define rules with Privy's policy language.

> [card] [Stateful policies](https://docs.privy.io/controls/policies/stateful-policies.md)
>
> Enforce cumulative limits over time windows.
