DiscoBox: AI Coding Agents in Disposable Sandboxes Discobox launched a tool that runs AI coding agents such as Claude Code, Codex, and OpenCode in disposable sandboxed environments, each with its own clone of a repository, passwordless sudo, nested Docker, a desktop, and a browser. Developers install Discobox via Homebrew or an install script on macOS, Linux, and Windows, then use the `discobox apply` command to cherry-pick an agent's commits back onto their current branch, keeping the original checkout untouched. The tool is under active development and lets multiple agent sessions run against one repository without competing for the same files, branches, ports, or databases. Discobox runs coding agents in disposable environments, each with its own copy of your source. Agents have passwordless sudo, nested Docker, a desktop, and a browser, and you can connect through a terminal, SSH, or your editor. Run as many agent sessions against one repository as you like, each in its own box, while your own checkout stays yours. Source moves the way it already does with git: a box clones your repository, the agent commits, and you merge those commits back to your machine or push them as a pull request. Claude Code, Codex, and OpenCode are included; other terminal agents can be packaged in an image. Discobox supports macOS, Linux, and Windows and is under active development. Install with Homebrew, on macOS or Linux: brew install discobox-ai/tap/discobox Or with the install script: curl -sSfL https://discobox.ai | sh On Windows, from PowerShell: irm https://discobox.ai/install.ps1 | iex Each of those installs the stable channel. Release channels release-channels covers the newer ones and how to pin a version. Open the launcher from your repository to create a box: cd ~/src/my-project discobox Work with the agent and have it commit the changes inside the box. From your original repository, apply those commits to your working tree: discobox apply An agent working in your checkout ties it up. You wait for it to finish, and a second agent in the same directory edits the same files, switches the same branch, and competes for the same ports and databases. Each box instead has its own copy of the source, its own git repository, and its own services and Docker. You can start a bug fix, a feature, and an experiment you may throw away, each in its own box, and keep working in your own checkout while they run. discobox -d -p 'fix the flaky retry test' discobox -d -p 'add pagination to the users endpoint' discobox -d -p 'try replacing the ORM with sqlc' discobox ls There is no special sync layer. Give an agent a computer of its own and it needs the source the way you would on a new machine: clone the repository, make changes, then merge them back or open a pull request. A box does exactly that, so the only questions are where it clones from and where the work goes. php flowchart LR repo "Your repository" -- "clone" -- a "Box A" repo -- "clone" -- b "Box B" repo -- "clone" -- c "Box C" a -- "discobox apply" -- repo b -- "discobox apply" -- repo c -- "git push" -- host "Your Git host: a branch or pull request" Where a box clones from. Your local repository, at the commit you have checked out. If your working tree has uncommitted changes, Discobox asks whether to bring them along; they arrive as uncommitted changes on that same commit. In the box, origin is your repository, read-only: the agent can fetch from it but cannot push to it, and nothing it does touches your files. -i brings more sources into the same box, either another local checkout or a remote URL, whose origin is then that remote. Where the work goes. The agent commits in the box. From there, the work goes back the same two ways it does today: - Merge it back to your machine with discobox apply , run from your repository. It fetches the box's commits and cherry-picks them onto your current branch, keeping each commit's message, author, and boundaries. The result is ordinary history: review it with git log , amend or reorder it, and push it like any other commit. - The cherry-pick runs in a scratch worktree, and your branch moves only if every commit applies cleanly. On a conflict nothing changes, and apply prints the git cherry-pick command that reproduces it. - Only committed work is applied. A box with uncommitted changes is skipped, so nothing lands from a half-finished state. - Discobox records what it applied, so applying the same box again brings over only the commits made since. - The cherry-pick runs in a scratch worktree, and your branch moves only if every commit applies cleanly. On a conflict nothing changes, and apply prints the - Push to a remote and open a pull request from inside the box, with git push and gh , the way you would from your laptop. The box never holds your Git host token: you pass it in as a secret, or the agent requests access and you grant it, and the box sees only a placeholder see Isolation and credentials isolation-and-credentials . Boxes never see each other; their work meets in your repository. Once one box is applied, the others can build on it. Inside a box, git fetch origin && git rebase origin/