Skip to main content
skill CX Codex

agent-wallet-policy — Claude Code skill: what it does, how to install

Inspects USDC spending limits on Circle agent wallets and drafts CLI commands to update caps safely. Helps keep agent expenses under human control.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add circlefin/skills --skill agent-wallet-policy -a claude-code
Open on GitHub

What agent-wallet-policy does

The skill interacts with the circle CLI to inspect active USDC spending caps across per-transaction, daily, weekly, and monthly tiers. Calling circle wallet limit is entirely read-only and safe to run inside the chat, returning structured JSON without moving funds or requesting confirmations.

Updating or clearing caps requires an interactive session. The CLI sends a six-digit OTP to the user's email address and waits for input in stdin. Because OTPs are password-equivalent credentials, the agent refuses to handle them directly. It prepares the exact circle wallet limit set or circle wallet limit reset command for you to run in your personal terminal.

Spending rules work exclusively on mainnet networks such as BASE or MATIC. Running this against testnet chains causes an immediate error from the CLI. All proposed limits must also be monotonic, meaning the per-transaction cap cannot exceed daily, weekly, or monthly values.

What it helps with

  • inspect existing per-transaction and monthly USDC caps
  • generate terminal commands to update spending rules
  • reset wallet spending thresholds to default values
  • prevent one-time passwords from leaking into agent prompts

Example prompts for the agent

  • Check the current USDC spending limits for my agent wallet on ARC
  • Set a daily limit of 5 USDC and monthly limit of 50 USDC
  • Reset the spending policy on my agent wallet

How to install agent-wallet-policy

1Skills CLI (Vercel)

npx skills add circlefin/skills --skill agent-wallet-policy -a claude-code

2Manually: put the files in place

~/.claude/skills/agent-wallet-policy/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/agent-wallet-policy/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about agent-wallet-policy

How do I install agent-wallet-policy in Claude Code?

Run npx skills add circlefin/skills --skill agent-wallet-policy -a claude-code in your terminal.

What does agent-wallet-policy do?

It reads spending caps on Circle agent wallets via the circle CLI and formats commands for policy adjustments.

Why doesn't the agent submit OTP codes for limit updates?

OTP codes are treated as password equivalents sent to the user's email. The agent is restricted from viewing or storing them, so you must run update commands directly in your own terminal.

Source text

SKILL.md · Apache-2.0
---
name: agent-wallet-policy
description: "View spending policy on a Circle agent wallet — per-transaction, daily, weekly, and monthly USDC caps via the `circle` CLI. Use when the user wants to inspect current limits. Setting or resetting limits requires OTP confirmation in an interactive terminal session — the agent hands the user a verbatim command to run themselves; the OTP must never pass through agent storage. Mainnet-only — testnet chains are rejected. Triggers on: spending limit, spending policy, per-tx cap, daily cap, weekly cap, monthly cap, wallet rules, OTP confirmation."
requirements:
  runtimes: []
  connectors: []
---

## Overview

For an overview of the Circle CLI's **full** capability set, see the `use-circle-cli` master skill. This skill is the narrower spending-policy flow.

Circle agent wallets support **spending policies** — per-wallet caps that the CLI enforces on every payment and transfer. There are three operations:

| Operation | Command | OTP required? |
| --- | --- | --- |
| **View** current limits | `circle wallet limit --address <addr> --chain ARC --output json` | No |
| **Set** custom limits | `circle wallet limit set ...` | **Yes — human OTP, run in user's own terminal** |
| **Reset** to defaults | `circle wallet limit reset ...` | **Yes — human OTP, run in user's own terminal** |

Spending policies are **mainnet-only** (testnet chains are rejected; see Troubleshooting / Rules).

## Prerequisites

Two supporting commands set up the flow: a session check (`circle wallet status`) and a wallet-address lookup (`circle wallet list ... --output json`). READ `references/commands.md` for the exact commands.

If `circle wallet status` errors with "Not logged in" or "Terms acceptance is required", hand off to the `use-agent-wallet` skill — it covers install, terms, login, and wallet creation.

## Viewing current limits (in-agent, no OTP)

```bash
circle wallet limit --address <addr> --chain ARC --output json
```

Shows the current per-tx, daily, weekly, and monthly USDC caps (`null` for any unset tier). Safe to call freely — read-only, no money moves, no OTP.

## Setting or resetting limits (interactive terminal — handoff to user)

`circle wallet limit set` and `circle wallet limit reset` are **interactive**. They send a 6-digit OTP to the user's email mid-execution and wait for the code at the CLI's stdin prompt.

**OTPs are password-equivalent. The agent must NOT receive, store, or relay the OTP.** The agent's job here is to hand the user a verbatim command to run in their own terminal, then wait for them to report back.

### 1. Confirm values with the user

Limits must be **monotonic**: `per-tx ≤ daily ≤ weekly ≤ monthly`.

A typical conservative configuration:

| Tier | Suggested USDC value |
| --- | --- |
| `--per-tx` | `1` |
| `--daily` | `5` |
| `--weekly` | `20` |
| `--monthly` | `50` |

Adjust based on the user's stated tolerance. Get explicit yes before generating the command.

### 2. Hand the user the command

Tell the user:

> Setting spending limits requires an OTP I shouldn't see. Please run this command in your own terminal — the CLI will email you a 6-digit code; enter it at the prompt. Let me know once it completes.
>
> ```bash
> circle wallet limit set \
>   --address <addr> --chain ARC \
>   --policy-type stablecoin \
>   --per-tx 1 --daily 5 --weekly 20 --monthly 50
> ```

For reset, the verbatim command is:

```bash
circle wallet limit reset --address <addr> --chain ARC --yes
```

Omit `--yes` if you want the user to see a confirmation prompt before the OTP is sent.

### 3. Verify after the user reports done

Run the read-only limit command to confirm the new caps, then surface them to the user. READ `references/commands.md` for the exact command.

## Troubleshooting

| Symptom | Cause | Fix |
| --- | --- | --- |
| User received multiple OTP emails | Command was re-run while a previous invocation was still waiting | Tell the user to use the **most recent** OTP only. Earlier ones are invalidated. |
| OTP rejected with "prefix mismatch" | User entered an OTP from a previous request | Restart — each `set` / `reset` invocation has a fresh prefix. |
| `Spending policies are mainnet-only` | Tried to set a policy on a testnet chain | Re-run with a mainnet `--chain` value (`BASE`, `MATIC`, etc.). |
| `Limits must be monotonic` | per-tx > daily, daily > weekly, etc. | Re-check the values. `per-tx ≤ daily ≤ weekly ≤ monthly`. |
| `Only agent wallets support spending policies` | Tried on a local (non-agent) wallet | Spending policies apply only to agent wallets created via `circle wallet create`. |

## Rules

- NEVER ask the user to share the OTP with you. The OTP must go directly from the user's email to the CLI prompt in their own terminal — it should never touch the agent's context, tool calls, or any local file.
- If email- or messaging-integration tools are connected (e.g., Gmail or Slack via MCP), the OTP can also be fetched through them — note the option to the user; how to handle it is their call.
- ALWAYS hand the user a verbatim `circle wallet limit set` / `reset` command for them to run in their own terminal. Do NOT try to orchestrate the OTP from chat.
- ALWAYS confirm proposed limit values with the user before generating the command. Show the per-tx / daily / weekly / monthly numbers explicitly and wait for explicit yes.
- Spending policies are mainnet-only — testnet chains are rejected. Don't quote testnet examples.
- Only agent wallets support spending policies, not local wallets.
- After the user reports the change is done, run `circle wallet limit --address <addr> --chain ARC --output json` so the user sees the new caps.

## Reference Links

- Full policy walkthrough (extended examples, edge cases): https://agents.circle.com/skills/wallet-policy.md
- Circle Developer Docs: https://developers.circle.com/llms.txt

## Alternatives

Trigger the `use-agent-wallet` skill instead when:

- The user has not yet logged in to the CLI or accepted Terms.
- `circle wallet status` errors with "Not logged in" or "Terms acceptance is required".
- The user is asking about wallet setup, login, or session state — not policy.

Trigger the `pay-via-agent-wallet` skill instead when:

- The user wants to call, pay for, or use a paid x402 service.
- Limits are already set and the user is ready to spend.

Trigger the `fund-agent-wallet` skill instead when:

- The user wants to add USDC before setting limits.
- The user mentions deposit, fiat on-ramp, fiat purchase, QR-code transfer, or Gateway deposit.

---

DISCLAIMER: This skill is provided "as is" without warranties, is subject to the [Circle Developer Terms](https://console.circle.com/legal/developer-terms), and output generated may contain errors and/or include fee configuration options (including fees directed to Circle); additional details are in the repository [README](https://github.com/circlefin/skills/blob/master/README.md).

© circlefin · Apache-2.0 · circlefin/skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set15

use-user-controlled-wallets A skill for building non-custodial wallets on Circle's SDK, with Google, Apple, Facebook, email OTP or PIN login and keys the user keeps. CX Codex +1 949installs swap-tokens A skill that walks your agent through building token swaps in the browser or on the server with Circle App Kit or Swap Kit. Useful for USDT to USDC conversions and cross-chain routes. CX Codex +1 848installs unify-balance A skill that steers the agent through writing unified cross-chain USDC balance code with Circle App Kit or the standalone Unified Balance Kit. Useful for chain-abstracted payment flows. CX Codex +1 804installs use-agent-wallet Bootstraps a Circle agent wallet through the CLI: install check, email and OTP login, wallet creation, session status and balance. CX Codex +1 804installs use-circle-cli Connects Circle CLI to the agent for USDC transfers, bridging, and paying for APIs without fixed keys. Rescues agents blocked by paywalls or rate limits. CX Codex +1 800installs pay-via-agent-wallet Lets your agent discover and pay for x402 HTTP APIs using USDC. Useful when facing API paywalls, rate limits, or missing live crypto and market data. CX Codex +1 797installs fund-agent-wallet Funds a Circle agent wallet with USDC using the CLI and gas abstraction. Helps top up balances via card on-ramps, crypto transfers, or Gateway deposits. CX Codex +1 794installs recover-eco-funds A skill that walks you through recovering USDC stuck in legacy Circle CLI deposits made with the eco method. Read-only checks first, no guessing at intent data. CX Codex +1 300installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor