Skip to content
Testnet · Base Sepolia

Private agents

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.

Agent · Thirdfy MCP

> Privately swap 1 USDC to WETH from my shielded balance.

walletExecute bermuda_stealth_swap

{ tokenIn: "USDC", tokenOut: "WETH", amount: "1", private: true }

Base Sepolia · testnet
  • Allowed for this agent
  • Within its limits
  • Shielded balance covers it

Shielded. The WETH is back in the shielded balance.

What the owner sees

Swap
1 USDC → 0.00041 WETH
Paid from
Shielded balance
Lands in
Shielded balance

What the chain sees

Swap
from 0x5e1d…a93f
Wallet
One-time, used once
Linked to the agent
No

Example private swap on Base Sepolia (testnet), not live activity.

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. 1

    Shield

    The agent moves USDC from its public wallet into its shielded balance. Bermuda screens every deposit, and Thirdfy pays the gas.

  2. 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. 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. Get free test USDC from the Circle faucet (pick Base Sepolia).

  1. 1. Check that it is ready
    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. 2. Shield test USDC
    Using Thirdfy on Base Sepolia, shield 2 USDC from my agent wallet.
  3. 3. Swap privately
    Using Thirdfy on Base Sepolia, privately swap 1 USDC to WETH from my shielded balance.
  4. 4. Earn privately
    Using Thirdfy on Base Sepolia, put 1 USDC from my shielded balance into the private vault.
  5. 5. Withdraw
    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.

ActionWith private: true
swapSwaps from the shielded balance on a fresh one-time wallet and shields the result again
deposit_earn_positionEnters a vault from the shielded USDC and keeps the vault shares shielded
withdraw_earn_positionExits 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.

See 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.