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.
> 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
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. Get free test USDC from the Circle faucet (pick Base Sepolia).
- 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. Shield test USDC
Using Thirdfy on Base Sepolia, shield 2 USDC from my agent wallet. - 3. Swap privately
Using Thirdfy on Base Sepolia, privately swap 1 USDC to WETH from my shielded balance. - 4. Earn privately
Using Thirdfy on Base Sepolia, put 1 USDC from my shielded balance into the private vault. - 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.
| 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 |
walletExecute { action: "bermuda_stealth_swap", chainId: 84532, estimatedAmountUsd: 1,
params: { chainId: 84532, tokenIn: "USDC", tokenOut: "WETH", amount: "1" } }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 --jsonWhat 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 pricingQuestions
- 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.