What the enclave checks on every order
The enclave judges each request alone. It keeps no memory between requests and reads its counts from Binance each time. It refuses if any check fails or any fact cannot be read.
Exits pass with no grant, no lock and no price check: a cancel, a reduce-only futures order, and a sale of options you hold. The enclave writes its decision to a log before it signs, a refusal included. If the log cannot be written, it signs nothing.
What a breach on our side could and could not do
Our servers hold the queue of orders and decide, for a grant with no condition, when a run is offered. They hold no key. A breach of our servers could:- offer runs of a grant you armed at times it chooses, inside the grant’s limits
- cancel any open order on the account, including ones you placed yourself
- place reduce-only futures orders in any futures market, at any price. These can close your futures positions, including ones you opened by hand
- sell options you hold, at any price
- keep using a grant you revoked in the app, until it expires, because revoking in the app stops our relay and does not cancel your signature
- stop placing or cancelling orders
- withdraw or transfer money: the API key has no such permission, and Binance enforces that
- open or add to a position in a market that is off in your lock
- raise leverage past your lock or grant
- go past the grant’s per-run and total limits, or its run count
- place an entry order without a grant you signed
- use a grant after it expires
If the enclave’s build were bad
If our operators approved a bad build, it could trade your whole Binance balance badly, in any market and at any leverage the API key’s permissions allow. Your lock is enforced only by the enclave’s own code, so a bad build need not respect it. A bad build still could not withdraw, because your key cannot. The same enclave holds the agent’s own signing key, so trading venues covers the wider case.How you take control back
From fastest and hardest to slowest:- Delete the API key on binance.com. It works at once and needs nothing from us.
- Tighten the markets in your lock. This needs your wallet signature. It stops new orders in those markets.
- Stop the card on the card page, in close mode or cancel-all mode. See cards on Binance.
- Cancel an order or close a position from the card page. These need no grant.
- Revoke the grant in the app. This stops our relay only.
Crashes and retries
- A run is never sent twice. The order id comes from the grant and the run number. A repeat of a run Binance already holds is refused, not doubled.
- A run is never placed late. A network fault is retried for at most 10 minutes. After that the run is dropped, and the enclave refuses a run that old.
- A restart does not skip or double a card’s run. Each run is named for the closed bar it fired on.
- A stop in cancel-all mode or a halt never sends a leg. If our service crashed while a take-profit or stop-loss leg was being placed, and the card is then stopped in cancel-all mode or halted by our kill switch, recovery cancels that leg’s order by its id and never sends it again. Keeping the leg pending and retrying the cancel when Binance does not confirm it comes in a later update.
What this does not protect you from
- Binance itself. If Binance fails or freezes your account, we cannot help.
- Bad fills inside your limits. The lock has no cap on total size and no liquidation buffer. The grant’s totals are the only bound on size.
- A market that moves. A market order can fill anywhere inside your price tolerance.
- A stale picture. The app does not show open futures positions or fills after placement. Check Binance.
- A key with no IP restriction. Demo cannot restrict a key to addresses. On real money the enclave refuses such a key.
Under the hood
For readers who want the mechanism.- The enclave derives each trading key from one sealed secret for Binance, so no key is stored. Only an enclave build our operators approve can open the secret.
- Requests to Binance leave the enclave through a fixed allow-list of hosts. The secure connection ends inside it.
- The lock is read from MegaETH on every order that opens or adds risk. Exits do not read it. If that read fails or is stale, the enclave refuses.