Each coding agent gets its own container and git branch, so several can work at once.
- Needs your setup first
- ★ 4.1K GitHub stars
- Last commit 21 Sept 2026
At a glance
Container Use comes from Dagger, the team behind the CI engine. Instead of letting an agent edit your working copy directly, each task runs in a fresh container on its own git branch. You can run several agents side by side, read the full log of commands each one ran, open a terminal inside an agent's environment when it gets stuck, and review the result with an ordinary git checkout.
It is a command line tool that also speaks MCP, and Dagger still marks it experimental. It needs Docker or another container runtime that Dagger supports.
- Made by
- Dagger (dagger/container-use)
- GitHub stars
- 4.1K
- Last commit
- 21 Sept 2026
- Tools
- 15
- Runs on
- Your computer
Our check: It needs something our Linux test machine does not have (an account, a desktop app, a Mac or a running service), so on 27 Oct 2026 we read its tools from the source code instead of running this config.
What's in the pod: its tools
We found 15 tools in its source code on 27 Oct 2026. 0 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
How we tested it: Read from the Go source on the main branch. Container Use ships as a compiled binary that needs Docker and Dagger, which our test machine could not run.
Runs commands1 tool · Can start programs or run code.
| Tool | What it is for |
|---|---|
environment_run_cmd | Runs a shell command in a fresh container inside the environment, in the background if needed, and can expose ports. |
Changes things14 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
environment_add_service | Adds a side container, such as a database or a cache, that the environment can reach. |
environment_checkpoint | Saves the environment's current state as a container image. |
environment_config | Changes the base image and setup commands for an environment. |
environment_create | Starts a new environment from your repository: a container plus its own git branch, built from a base image and your setup commands. |
environment_diff | Shows everything the agent changed since the environment was created, as one diff. |
environment_file_delete | Deletes a file in the environment. |
environment_file_edit | Replaces a piece of text in a file in the environment. |
environment_file_list | Lists a folder in the environment. |
environment_file_read | Reads a file in the environment, whole or by line range. |
environment_file_write | Writes a whole file in the environment. |
environment_list | Lists the environments that exist for the repository. |
environment_log | Shows the commits the agent made and the commands it ran. |
environment_open | Reopens an environment created earlier. |
environment_update_metadata | Changes an environment's title, the note that says what work it holds. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
Set it up
- Install the CLI: brew install dagger/tap/container-use on macOS, or the install script from the repository on Linux.
- In Claude Code, from your repository: claude mcp add container-use -- container-use stdio. Other clients use the config below.
- Optional: append the project's agent rules file to your CLAUDE.md or AGENTS.md so the agent always works inside an environment.
Pick your app for the exact snippet and where it goes.
Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"container-use": {
"command": "container-use",
"args": [
"stdio"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json container-use '{"command":"container-use","args":["stdio"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"container-use": {
"command": "container-use",
"args": [
"stdio"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"container-use": {
"type": "stdio",
"command": "container-use",
"args": [
"stdio"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"container-use": {
"command": "container-use",
"args": [
"stdio"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
The shorter cu command works too: cu stdio.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
cu config base-image setConfig | The container image new environments start from.cu config base-image set python:3.12 |
cu config setup-command addConfig | Commands that run when an environment is built, such as installing system packages.cu config setup-command add "apt-get install -y postgresql-client" |
cu config env setConfig | Environment variables available inside every environment. |
cu log / cu diffCommand line flag | Show an environment's history or changes from your own terminal. |
cu terminalCommand line flag | Opens a shell inside an agent's environment so you can look around or take over. |
cu checkout / cu apply / cu mergeCommand line flag | Bring an environment's work into your repository: switch to its branch, stage its changes, or merge it. |
What it can touch
It can read
- Your git repository, which it copies into each environment
It can change
- Files inside environment containers, never your working copy directly
- New git branches for each environment
- Containers and images on your machine, through Docker
Safer setup: That is the point of the tool: the agent works in containers on separate branches, and nothing reaches your branch until you run cu apply or cu merge.
Before you start
- macOS or Linux (Windows is not supported)
- Docker (or another runtime Dagger supports)
- git
If it does not work
- Creating an environment fails straight away
- Docker (or another runtime Dagger supports) must be running. Container Use reports Docker errors with the fix.
- The agent edits your files directly instead
- Add the project's agent rules file to CLAUDE.md or AGENTS.md, and turn off the client's own file and shell tools for that session.
- Every environment reinstalls the same packages
- Move the installs into cu config setup-command so they are part of the environment's build.
- A service the agent started is not reachable
- Ask it to expose the port in environment_run_cmd; the result gives the address to open.
Peas in a pod: similar servers
How Container Use lines up against other agent helpers and desktop control servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| Container Use | 15 | Your computer | – | 4.1K |
| Sequential Thinking | 1 | Your computer | – | 91.6K |
| Windows-MCP | 21 | Your computer | MIT | 10.4K |
| Mobile MCP | 34 | Your computer | Apache-2.0 | 10K |
Questions
Which agents does it work with?
Any MCP client that can start a command: Claude Code, Cursor, Goose, VS Code, Codex and others.
Is it stable?
Dagger labels it experimental and it changes between releases. It works, but expect rough edges.
Does it run on Windows?
No. Its installer refuses Windows because the tool relies on Unix system calls; use macOS or Linux.
Is it free?
Yes, Apache-2.0.
Something wrong on this page? Tell us.
