# Private agents (Testnet · Base Sepolia)

An agent that trades in public shows everyone its balance, where its money came from and what it does next. A private agent keeps that money in a shielded pool and acts from there, so its moves are not linked to its public wallet. Thirdfy runs it on Bermuda, a compliant shielded pool, with the same rules as every other action.

## Why an agent needs privacy

- **Its next move stays its own.** A public wallet lets anyone watch an agent's orders and trade ahead of it, or copy it for free. Shielded funds keep the strategy with its owner.
- **Its balance is not on display.** Anyone can read a public wallet's holdings and history. A shielded balance shows the owner what it holds, and nobody else.
- **Its funding stays separate.** Each private swap runs from a fresh one-time wallet, so the trades are not linked back to the owner's wallet or to each other.

## How it works

1. **Shield.** The agent moves USDC from its public wallet into its shielded balance. Bermuda screens every deposit, and Thirdfy pays the gas.
2. **Act privately.** Add private to a swap or a vault deposit. It runs from the shielded balance on a one-time wallet, and the result goes back into the shielded balance.
3. **Withdraw.** Move shielded USDC back to the agent's wallet or to a fresh address whenever the owner wants.

## The same rules, in private

- Every private action goes through the agent's allowlist, its limits and Thirdfy's safety checks.
- If an action cannot run privately, it is refused. It never falls back to running in public.
- The agent shows each step and asks before it moves funds.

## Try it in plain words

From Claude, ChatGPT, Cursor or any app connected to the Thirdfy MCP. One message per step; steps that move funds need Trade access. Test USDC: https://faucet.circle.com (Base Sepolia).

1. Check that it is ready:

```text
Using Thirdfy on Base Sepolia, check that private agents are ready for my agent. Show my agent's wallet address and my shielded balance.
```

2. Shield test USDC:

```text
Using Thirdfy on Base Sepolia, shield 2 USDC from my agent wallet.
```

3. Swap privately:

```text
Using Thirdfy on Base Sepolia, privately swap 1 USDC to WETH from my shielded balance.
```

4. Earn privately:

```text
Using Thirdfy on Base Sepolia, put 1 USDC from my shielded balance into the private vault.
```

5. Withdraw:

```text
Using Thirdfy on Base Sepolia, move my shielded USDC back to my agent wallet.
```

## Make an action private

Add private: true to a supported action. Thirdfy runs it from the agent's shielded balance instead of its public wallet.

| Action | With `private: true` |
|---|---|
| `swap` | Swaps from the shielded balance on a fresh one-time wallet and shields the result again |
| `deposit_earn_position` | Enters a vault from the shielded USDC and keeps the vault shares shielded |
| `withdraw_earn_position` | Exits the vault back into the shielded USDC |

MCP:

```
walletExecute { action: "bermuda_stealth_swap", chainId: 84532, estimatedAmountUsd: 1,
  params: { chainId: 84532, tokenIn: "USDC", tokenOut: "WETH", amount: "1" } }
```

CLI:

```
thirdfy-agent run --action swap --chain-id 84532 --run-mode agent_wallet \
  --params '{"tokenIn":"USDC","tokenOut":"WETH","amountInHuman":"1","tokenInDecimals":6,"chainId":84532,"private":true}' \
  --estimated-amount-usd 1 --confirm-writes --json
```

## What stays public

Shielding hides the money between moves. It does not hide everything.

- The trade itself shows on chain, from a one-time wallet that is not linked to the agent.
- Deposits into the pool and withdrawals out of it are visible.
- Every deposit is screened. Bermuda is a compliant shielded pool, not a mixer.

## Keep it private

- Use round amounts: a distinctive amount can be matched across the public side.
- Leave time between steps: a deposit followed at once by a swap of the same size is easier to link.
- Withdraw to a fresh address: where a withdrawal lands is public.
- Sweep leftovers now and then with bermuda_sweep_burners.

## Testnet limits

- Base Sepolia (chain 84532) with test USDC.
- Each private move is capped at $5.
- A private write takes about 30 seconds while the pool builds a zero-knowledge proof.
- Mainnet follows Bermuda's mainnet pool.

## Covered by your plan and Credits

Private actions use Credits like any other action. There is no extra privacy fee. Monthly plans and top-ups both cover them, and Max gets mainnet private agents first. Pricing: https://v2-test.thirdfy.com/#pricing

## Questions

**Is this a mixer?** No. Bermuda screens every deposit before funds enter the pool. It is a compliant shielded pool, and the trades themselves stay visible on chain.

**Is it live on mainnet?** Not yet. Private agents run on Base Sepolia with test USDC today. Mainnet follows Bermuda's mainnet pool.

**Can a private action run in public by mistake?** No. An action that cannot run privately is refused with the reason. It never falls back to the public wallet.

**Which apps can use it?** Any app connected to the Thirdfy MCP (Claude, ChatGPT, Cursor and others), the Agent CLI and the API.

**What does it cost?** Private actions use Credits like any other action, with no privacy fee. Plans and top-ups both cover them.

## Docs

- Private agents in the docs: https://docs.thirdfy.com/documentation/platform/private-agents
- Private agents with Claude, step by step: https://docs.thirdfy.com/documentation/guides/private-agents-with-claude
- Connect an agent: https://v2-test.thirdfy.com/connect
