---
name: cdp-spend-permissions
description: Sets up EIP-7702 delegation on an EOA and manages spend permissions — create, list, and revoke. Testnet delegations require gas.
---

# cdp-spend-permissions

EIP-7702 delegation + spend permission lifecycle.

## Preconditions

1. CLI configured → `/cdp-setup`
2. Funded EOA → `/cdp-accounts-create` (testnet delegations require gas; mainnet delegations are gas-sponsored by Coinbase)
3. Spender address → create a second account if needed

## Steps

### 1. EIP-7702 delegation

```
cdp evm accounts eip7702 delegation <address> network=base-sepolia 'enableSpendPermissions:=true'
```
If "Insufficient balance" → fund the EOA first.

Poll until COMPLETED:
```
cdp evm eip7702 delegation-operations <delegationOperationId>
```

### 2. Create spend permission

```
cdp evm smart-accounts spend-permissions <address> \
  network=base-sepolia token=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE \
  allowance=1000000000000000 period=3600 \
  start=<unix_now> end=<unix_now+86400> \
  spender=<spenderAddress> paymasterUrl=https://paymaster.cdp.coinbase.com
```
Returns a user operation — poll until complete.

If "Smart Account with given address not found" → delegation may have failed or wrong address namespace.

### 3. List permissions

```
cdp evm smart-accounts spend-permissions list <address>
```
Extract `.spendPermissions[0].permissionHash`.

### 4. Revoke

```
cdp evm smart-accounts spend-permissions revoke <address> \
  network=base-sepolia permissionHash=<hash>
```

## Compatibility

| Account type | Supported |
|-------------|-----------|
| EVM EOA (delegated) | yes — requires EIP-7702 with enableSpendPermissions=true |
| Solana | no |
| Smart account (ERC-4337) | no — use EIP-7702 delegated EOA |
| End-user smart account | no — separate namespace |
