Your home directory
SSH keys, cloud credentials and your other projects do not exist inside the sandbox unless you grant them. The agent sees the system’s programs, its workspace and a scratch directory.
Open-source sandbox for coding agents
Ukai wraps Claude Code, Codex, OpenCode or any command-line tool on Linux. You choose which files it can touch, which hosts it can reach and how long it can run. Every run ends with a receipt: what was allowed, what happened, and what Ukai couldn’t see.
Install
curl --proto '=https' --tlsv1.2 -fsSL https://ukai.sh/install.sh | bashLinux x86_64 and ARM64 · Mac: offline VM preview · MIT · Developer preview
What stays protected
Coding agents run with your user account. Ukai gives them a workspace and nothing else you didn’t choose.
SSH keys, cloud credentials and your other projects do not exist inside the sandbox unless you grant them. The agent sees the system’s programs, its workspace and a scratch directory.
No network by default. Agent profiles reach only the hosts you name, such as your model provider and package registry, through Ukai’s proxy.
A hard deadline for the whole process tree. When the run ends, Ukai confirms every process is gone before it writes the final receipt.
A real run
We ran this on our Linux reference host. The command tries to read an SSH file, reach the internet and write a file in its workspace. Only the write goes through.
Terminal
$ ukai-jail run --profile tool --workspace . --limit wall=30s -- \
sh -c "cat $HOME/.ssh/authorized_keys; curl -sS https://example.com; echo ok > result.txt"
cat: /home/ubuntu/.ssh/authorized_keys: No such file or directory
curl: (6) Could not resolve host: example.com
$ cat result.txt
okjail.json · excerpt
{
"schema": "ukai.jail.receipt/1",
"phase": "settled",
"containment": "enforced",
"outcome": { "kind": "exited", "code": 0, … },
"applied": {
"network": { "mode": "none", "mechanism": "network-namespace", … },
"limits": [
{ "key": "wall", "requested": "30000", "applied": true, "hit": false, … },
…
],
…
},
"lifetime": { "tree_empty": true, "integrity": "verified", … },
"coverage": {
"exec": { "status": "active", "observed_count": 7, "gaps": [], … },
"fs.write": { "status": "active", "observed_count": 1, "gaps": [], … },
"net": { "status": "active", "observed_count": 2, "gaps": [], … },
…
},
"errors": []
}The receipt answers three questions.
applied · The boundary actually in force. Here: no network and a 30-second deadline.
outcome · The exit status, and in lifetime, confirmation that no process outlived the run.
coverage · What was observed, class by class, and every gap. A gap is reported, never hidden.
Fields trimmed for length (…). Each run also keeps an event journal; read it with ukai-jail tail. The run record holds this run’s full output, receipt, policy and journal, with the build and host it ran on.
Works with
Launch profiles for 14 agents, including Claude Code, Codex, OpenCode and Gemini CLI, plus any command-line tool. All profiles are experimental; OpenCode has recorded live runs.
Compatibility recordsHow it works
Start from a profile, then grant the paths, hosts and time the task needs.
Run your agent or CLI tool as usual. Ukai applies the limits to it and its child processes.
Read the receipt for the policy applied, the result and any gaps in observation. Then review the file changes.
Developer preview
Install the developer preview, then follow the quickstart for your platform.
Terminal
curl --proto '=https' --tlsv1.2 -fsSL https://ukai.sh/install.sh | bashThe installer detects your platform and verifies SHA-256 hashes. No compiler or sudo required.
Linux
Signed x86_64 and ARM64 packages. Requires glibc 2.39+ and bubblewrap.
Linux quickstartmacOS VM preview
Runs in a disposable VM. Requires Apple Silicon, macOS 27+, and 8 GiB free APFS storage.
Mac quickstart & limitsUkai was called Ouroboros until October 2026. The current preview still installs the ouro-jail and ouro-vm commands; the next release installs ukai-jail.
Limits
Follow the setup guide, check benchmark results and their limitations, or see what we’re building next.