The machine is a sandbox of its own
A machine is one container on the runner, with its own filesystem, its own processes and its own network stack. It is not shared with another account and not shared with another machine of yours: two machines are two computers with two disks, and a second harness of yours runs on a machine of its own. The card in the app reads2 vCPU · 4 GB RAM and a 30 GB disk. Inside it, the
agent’s home is /home/daytona and the root filesystem is read-only:
What the agent can read
Anything on its own disk, and specifically:
Environment secrets are the one class of credential that is deliberately handed
to the agent: you add them so that a program or a tool of yours can use them, and
the agent can print any of them. They are resolved for whoever started the run,
not for the harness owner, so a run somebody else started never surfaces your
keys. Names beginning with
SPLOX_ are refused at write time (“keys starting
with SPLOX_ are reserved”), and the platform’s own variables are written after
yours, so nothing you set can shadow the run’s credentials.
$SPLOX_SECRET_KEYS lists the names that were injected — names only, never
values.
The credential inside the machine is not your API key
SPLOX_API_KEY in a sandbox is a signed token minted for that machine. Decoded,
its claims are scope: run_delegate, sub (the harness owner), mid (the
machine) and nothing else — no chat, no run, no expiry to keep re-minting,
because a sandbox outlives every conversation on it.
What it can do is bounded by the routes that accept it. Against the live API,
with that token as a bearer credential:
Where credentials for connected servers live
They stay on the platform. A connected MCP server’s credential is stored encrypted with AES-256-GCM and is marked as never serializable, so it does not appear in any API response: what comes back ishas_credential and
credential_expires_at. When the agent calls a tool on that server, the
platform attaches the credential to the outbound request. It is never written
into the sandbox and the agent cannot read it.
This is the opposite of environment secrets, which exist precisely to be read by
your own code. The rule of thumb:
Connections covers adding and revoking; a revoked
connection is a server whose next call has nothing to authenticate with.
Who else can get into the machine
You can, two ways, both from the chat inspector and both time-bounded:- SSH. A grant mints a command of the form
ssh -p 2222 <token>@sandbox.splox.ioand lives for 60 minutes. Revoke access ends it immediately. - An editor in the browser. A signed link, good for an hour.
What leaves the machine
Outbound network is open — the agent browses, installs packages, calls APIs. Two things are worth knowing about it:- Traffic routed through the platform’s egress relay authenticates with the same machine token, and the relay refuses ports 25, 465, 587 and 2525. Nothing a browsing agent does needs SMTP, and an IP range that sends mail gets reported faster than anything else.
- The agent has an email address and an SMS number of its own. Mail it sends goes out through the platform, under that address.
What a shared chat exposes
Share on a chat mints a 256-bit random token and turns it into a URL:What deleting actually deletes
1
Deleting a machine
The sandbox is destroyed first and then the row is archived, in that order, so
no disk is ever left on the runner with nothing naming it. The disk goes with
it — notes, checkouts, databases, a program you left running. The harness is
untouched: it is the code, it is in git, and other machines may be running it.
Your chats are kept, though a chat whose machine was deleted has nothing to run
on.
2
Deleting a harness
The repository goes, and so does every machine running it — a machine whose
harness is gone can never run again. Chats are kept.
3
Deleting a chat
The chat stops being listed and stops being readable: it 404s for you, and its
share link 404s for everyone. The row is marked deleted rather than erased, so
this is removal from the product, not erasure from the database. Erasure is
account deletion.
4
Deleting the account
Settings → Privacy → Delete account, confirmed by typing the phrase. Every
sandbox you own is destroyed first — including sandboxes of machines that were
already archived — any Stripe subscription is canceled immediately and the
customer record is deleted, and then one database transaction removes your
chats, messages, tool-call records, runs and their events, machines, MCP
servers, skills, push tokens, webhooks, sessions, identities, balances,
transactions, subscriptions and usage rows. It is not reversible.Two things survive by design: the consent log, kept with your user id set to
null as the record that consent was asked for, and the git repositories
themselves — deleting your rows has never deleted git history.
Data and privacy
What is stored, for how long, and who can see it.
Connections
Where a connected server’s credential comes from, and how to revoke it.

