SPENDING_LIMIT Policy: Cap Your AI Agent's Daily Transaction Volume

Setting spending limits for AI trading bots isn't just good practice—it's essential. When your AI agent has direct wallet access, one misconfigured algorithm or unexpected market condition could drain your entire portfolio in minutes.

The stakes are real. AI agents need transaction capabilities to be useful, but unlimited access creates unlimited risk. Traditional bot frameworks either give agents full wallet control or require manual approval for every transaction—neither scales for autonomous trading or DeFi operations.

Why Spending Limits Matter for AI Agents

Unlike human traders who naturally hesitate before large transactions, AI agents execute commands with mechanical precision. They don't second-guess a $50,000 swap or question whether a leverage position makes sense. This reliability is valuable, but it becomes dangerous when combined with bugs, market manipulation, or unexpected edge cases.

Consider what happens when an AI agent:

Without spending controls, any of these scenarios can result in total fund loss. The solution isn't to eliminate AI agents—it's to implement proper guardrails that preserve autonomy while limiting blast radius.

WAIaaS SPENDING_LIMIT Policy: 4-Tier Security

WAIaaS implements spending limits through a 4-tier security model that automatically escalates based on transaction size. Each tier provides different levels of friction, from instant execution to human approval.

The Four Security Tiers

INSTANT - Execute immediately, no notification NOTIFY - Execute immediately, send notification
DELAY - Queue for specified seconds, then execute (cancellable) APPROVAL - Require human approval via WalletConnect, Telegram, or push notification

Here's how to configure a SPENDING_LIMIT policy:

curl -X POST http://localhost:3100/v1/policies \
  -H 'Content-Type: application/json' \
  -H 'X-Master-Password: <password>' \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "SPENDING_LIMIT",
    "rules": {
      "instant_max_usd": 10,
      "notify_max_usd": 100,
      "delay_max_usd": 1000,
      "delay_seconds": 300,
      "daily_limit_usd": 500,
      "monthly_limit_usd": 5000
    }
  }'

This configuration creates automatic escalation:

Token-Specific Limits

You can set different limits for specific tokens, useful when you want tighter controls on volatile assets:

{
  "instant_max_usd": 100,
  "notify_max_usd": 500,
  "delay_max_usd": 2000,
  "delay_seconds": 900,
  "daily_limit_usd": 5000,
  "monthly_limit_usd": 20000,
  "token_limits": {
    "native:solana": {
      "instant_max": "0.1",
      "notify_max": "1.0", 
      "delay_max": "5.0"
    },
    "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v": {
      "instant_max": "50",
      "notify_max": "200",
      "delay_max": "1000"
    }
  }
}

This allows $100 USDC transfers to execute instantly, while limiting SOL transfers to 0.1 SOL ($20-30) for instant execution.

Default-Deny Architecture

WAIaaS follows a default-deny security model. Beyond spending limits, your agent can't interact with tokens or contracts unless explicitly permitted. This prevents common attack vectors where malicious inputs trick agents into approving unknown tokens or calling dangerous contracts.

ALLOWED_TOKENS Policy

curl -X POST http://localhost:3100/v1/policies \
  -H 'Content-Type: application/json' \
  -H 'X-Master-Password: <password>' \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "ALLOWED_TOKENS",
    "rules": {
      "tokens": [
        {
          "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "symbol": "USDC",
          "chain": "solana"
        }
      ]
    }
  }'

Without this whitelist, token transfer attempts are blocked regardless of spending limits.

CONTRACT_WHITELIST Policy

{
  "contracts": [
    {
      "address": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
      "name": "Jupiter",
      "chain": "solana"
    }
  ]
}

This prevents your agent from interacting with unknown smart contracts, even if an attacker manages to inject malicious contract addresses.

3-Layer Security Architecture

WAIaaS implements three distinct security layers:

Layer 1: Session Authentication AI agents use JWT tokens with configurable TTL and renewal limits. Tokens can be revoked instantly if suspicious activity is detected.

Layer 2: Policy Engine
All transactions pass through 21 policy types with 4 security tiers. Policies are evaluated in real-time with default-deny enforcement.

Layer 3: Human Oversight Time delays and approval requirements provide kill switch capabilities. Owners can cancel delayed transactions or approve/reject pending ones via WalletConnect, Telegram, or push notifications.

Setting Up Spending Limits

Step 1: Create a Wallet

curl -X POST http://127.0.0.1:3100/v1/wallets \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{"name": "trading-wallet", "chain": "solana", "environment": "mainnet"}'

Step 2: Configure SPENDING_LIMIT Policy

curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "SPENDING_LIMIT", 
    "rules": {
      "instant_max_usd": 50,
      "notify_max_usd": 200,
      "delay_max_usd": 1000,
      "delay_seconds": 600,
      "daily_limit_usd": 2000
    }
  }'

Step 3: Create Session for AI Agent

curl -X POST http://127.0.0.1:3100/v1/sessions \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{"walletId": "<wallet-uuid>"}'

Step 4: Test Transaction Tiers

# This executes instantly (under $50)
curl -X POST http://127.0.0.1:3100/v1/transactions/send \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer wai_sess_<token>" \
  -d '{
    "type": "TRANSFER",
    "to": "recipient-address",
    "amount": "0.001"
  }'

# This queues for 10-minute delay (over $1000)
curl -X POST http://127.0.0.1:3100/v1/transactions/send \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer wai_sess_<token>" \
  -d '{
    "type": "TRANSFER", 
    "to": "recipient-address",
    "amount": "5.0"
  }'

Step 5: Set Up Notifications

Configure WalletConnect for mobile approvals or Telegram for notifications:

waiaas notification setup --provider telegram --token <bot-token>

Advanced Policy Combinations

Spending limits work best when combined with other policy types. Here are common patterns:

Trading Bot Configuration

DeFi Yield Farming

Cross-Chain Bridge Bot

Monitoring and Alerts

WAIaaS provides real-time monitoring of policy violations and spending patterns:

# Check current policy status
curl http://127.0.0.1:3100/v1/policies \
  -H "Authorization: Bearer wai_sess_<token>"

# View pending transactions (DELAY tier)
curl http://127.0.0.1:3100/v1/transactions?status=PENDING \
  -H "Authorization: Bearer wai_sess_<token>"

# Cancel a delayed transaction
curl -X POST http://127.0.0.1:3100/v1/transactions/<tx-id>/cancel \
  -H "X-Owner-Signature: <signature>" \
  -H "X-Owner-Message: <message>"

The notification system sends alerts for:

What's Next

Implementing spending limits is just the first step in securing AI agent wallets. The policy engine supports 21 policy types for comprehensive risk management, from time restrictions to contract whitelists to DeFi-specific protections.

Ready to implement spending controls for your AI agents? Check out the WAIaaS GitHub repository for the complete setup guide, or visit waiaas.ai to learn about the full security framework.