docker-agent-run — Claude Code skill: running Docker Agent safely
A skill that walks through docker agent run: picking a safety mode, isolating the agent in a sandbox, aliases, and failed runs.
npx skills add docker/skills --skill docker-agent-run -a claude-codeWhat docker-agent-run does
This skill covers the operational half of Docker Agent. It explains how to invoke docker agent run against a local config, an alias, or a registry reference, how much autonomy to hand the agent over tool calls, and why a run dies. Published by docker under Apache-2.0. It assumes the agent.yaml already exists.
There are four --safety modes. strict asks before every tool call, balanced auto-approves safe ones and asks about the rest, restricted auto-approves safe calls and denies everything else, and autonomous approves all of it — the same as --yolo. For anything unattended, such as cron or CI, take restricted, so an unexpected tool call fails closed instead of running unreviewed. You can bake a mode into an alias, though an explicit flag on the command line overrides it.
The --sandbox flag runs the agent inside an isolated microVM managed by the sbx CLI, which is a separate prerequisite you install and configure first. Network access is default-deny: only the model provider, models.dev, and hosts the toolset resolver can infer are open, so a third-party API usually needs an entry added with docker agent sandbox allow. One caveat worth knowing — a local stdio MCP server runs as a host process outside the VM, so treat it as trusted. Sandboxes also persist and get reused across runs from the same workspace, so a clean VM every time is not what you get. --worktree cannot be combined with --remote or --sandbox.
What it helps with
- pick an approval mode for an unattended agent run
- keep an agent's file edits inside a separate git worktree
- let a third-party API through the sandbox network policy
- work out why the agent cannot see an API key
- register a short alias instead of a long config path
Example prompts for the agent
- run the agent from ./agent.yaml in restricted mode
- why can't my sandboxed agent see my API key
- add api.example.com to the sandbox allowlist
How to install docker-agent-run
1Skills CLI (Vercel)
npx skills add docker/skills --skill docker-agent-run -a claude-code2Manually: put the files in place
~/.claude/skills/docker-agent-run/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/docker-agent-run/
1Skills CLI (Vercel)
npx skills add docker/skills --skill docker-agent-run -a codex2Manually: put the files in place
.agents/skills/docker-agent-run/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add docker/skills --skill docker-agent-run -a cursor2Manually: put the files in place
.cursor/skills/docker-agent-run/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install docker/skills docker-agent-run2Manually: put the files in place
.github/skills/docker-agent-run/SKILL.md1Skills CLI (Vercel)
npx skills add docker/skills --skill docker-agent-run -a gemini-cli2Platform CLI
gemini skills install https://github.com/docker/skills --path skills/docker-agent-runManually: put the files in place
.devin/skills/docker-agent-run/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add docker/skills --skill docker-agent-run -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about docker-agent-run
How do I install docker-agent-run in Claude?
Run npx skills add docker/skills --skill docker-agent-run -a claude-code. The skill lands in ~/.claude/skills/docker-agent-run/SKILL.md.
What does docker-agent-run do?
It helps you run Docker Agent: choosing a --safety mode, setting up --sandbox isolation, aliases, and diagnosing why a run fails.
What do I need before using it?
The docker-agent CLI plugin: Docker Desktop 4.63+ or a standalone install via Homebrew or GitHub releases. Sandbox mode additionally requires the sbx CLI.
Source text
SKILL.md · Apache-2.0
---
name: docker-agent-run
description: Use this skill when running a Docker Agent with `docker agent run`, choosing a safety/approval mode, using the `--sandbox` isolation flag, setting up aliases, or troubleshooting a run (missing credentials, worktrees). Even if the user just says they want to "run my agent", "make my agent auto-approve tool calls", "run this agent safely", or "why can't my agent see my API key", this skill applies. Covers `--safety` (strict/balanced/restricted/autonomous), `--yolo`, `--sandbox` and its network allowlist, `--worktree`, `docker agent alias`, and `docker agent doctor`.
license: Apache-2.0
compatibility: Requires the docker-agent CLI plugin (Docker Desktop 4.63+, or standalone via Homebrew/GitHub releases). Sandbox mode (`--sandbox`) additionally requires the `sbx` CLI. Verified against docker-agent as shipped with Docker CLI 29.7.2.
---
# Docker Agent: Running and Operating Agents
## Overview
This skill owns the operational side of Docker Agent: invoking `docker agent
run` against a local config, an alias, or a registry reference; choosing how
much autonomy the agent gets over tool calls; isolating it in a sandbox VM;
and diagnosing why a run fails. It assumes the `agent.yaml` already exists —
see Related skills for authoring it.
## When to use this skill
Activate this skill when:
- The user wants to run an agent interactively or headlessly (`--exec`).
- The user is choosing or debugging `--safety`, `--yolo`, or approval behavior for tool calls.
- The user wants to isolate an agent's shell/filesystem access with `--sandbox`, or hit a sandbox network-policy error.
- The user wants a reusable shortcut (`docker agent alias`), a scoped git worktree (`--worktree`), or is debugging credentials/model availability (`docker agent doctor`).
## Do not use this skill when
Do not use this skill when:
- The task uses standalone `sbx run/create/stop/rm` rather than
`docker agent run --sandbox` — use `docker-sandboxes-lifecycle`.
- The task is standalone `sbx policy` or `sbx secret` configuration — use
`docker-sandboxes-network-credentials`. Establish which CLI is in use
before recommending commands when the request only says "my sandbox".
- The task is writing or editing the `agent.yaml` itself (models, toolsets, sub_agents) — use `docker-agent-config`.
- The task is exposing an agent as a server (`serve`), sharing it via a registry (`share`), or evaluating it (evaluation sessions, `--baseline` regression gates) — use `docker-agent-deploy`.
## Core guidance
### Safety modes
- `docker agent run` supports four `--safety` modes; choose the least
permissive one that still lets the task finish:
- `strict` — ask for approval before every tool call.
- `balanced` — auto-approve calls classified as safe, ask for the rest.
- `restricted` — auto-approve safe calls, **deny** the rest outright. Use
for unattended/CI runs where no human can answer a prompt.
- `autonomous` — approve everything automatically. Equivalent to `--yolo`.
- Never default an unattended run (cron, CI, a server endpoint) to
`autonomous`/`--yolo`. Use `restricted` for unattended runs so an
unexpected tool call fails closed instead of running unreviewed; reserve
`autonomous`/`--yolo` for a sandboxed or fully trusted interactive session.
```bash
# CI-safe: unreviewed tool calls are denied, not silently approved.
docker agent run --exec --safety restricted ./agent.yaml "Triage the failing test"
```
- Bake a safety default into an alias so callers don't have to remember it,
and note that an explicit CLI `--safety`/`--yolo` on `docker agent run`
still overrides the alias:
```bash
docker agent alias add safe-coder myorg/coder --safety balanced
```
### Sandbox isolation
- `--sandbox` runs the agent inside an isolated microVM managed by the `sbx`
CLI (a separate prerequisite — install and configure it first). All shell,
filesystem, and process activity started by built-in toolsets happens
inside the VM; only the working directory (and, unless `--no-kit`, a
staged "kit" of skills/prompt files) is mounted in. **Exception:** a local
stdio MCP server declared on the agent runs as a host process **outside**
the sandbox VM — treat any such MCP server as a trusted host integration,
not a sandboxed one.
```bash
docker agent run --sandbox ./agent.yaml
```
- The sandbox network proxy is **default-deny**: only the model provider,
`models.dev`, and hosts the toolset resolver can infer are open. A custom
MCP server or third-party API often needs an explicit allowlist entry —
add it permanently rather than re-discovering it every run:
```bash
docker agent sandbox allow api.example.com
docker agent sandbox list
docker agent sandbox deny api.example.com
```
- Prefer baking `runtime: {sandbox: true}` into the agent's own `agent.yaml`
over remembering `--sandbox` on every invocation of that agent; an
explicit `--sandbox=false` on the CLI still overrides the config default
for a single debug run.
- Sandboxes persist and are reused across runs from the same workspace —
they are not torn down when the session ends. Don't expect a clean VM on
every run; if you need one, change the mount set (e.g. a new kit) to force
recreation.
### Aliases and default agent
- Register a shortcut once, then run it by name instead of a path:
```bash
docker agent alias add code myorg/notion-expert
docker agent run code
```
- For a local run with no agent argument, `docker agent run` discovers
`docker-agent.yaml`, then `docker-agent.yml`, then `docker-agent.hcl` in
the current directory (first match wins). Only if none exists does it
resolve the `default` alias, falling back to the built-in default agent.
The `agent.yaml` examples in these skills pass a filename explicitly;
`agent.yaml` is not an auto-discovery name.
- Set the fallback for directories without a project config with a
`default` alias. To select it even when a project config exists, pass
`default` explicitly:
```bash
docker agent alias add default ./my-agent.yaml
docker agent run default
```
- CLI flags on `docker agent run <alias>` always override the alias's own
stored options (e.g. `docker agent run yolo-coder --yolo=false`).
### Worktrees
- Use `--worktree` (`-w`) to isolate an agent's file edits from your current
checkout — it runs the agent inside a fresh git worktree. For an
**interactive** session, a clean worktree (no uncommitted changes,
untracked files, or new commits) is removed automatically when the
session ends; one with work prompts you to keep or remove. A **headless**
run (`--exec`) never auto-cleans its worktree, regardless of state — it is
left in place for inspection:
```bash
docker agent run ./agent.yaml --worktree=auth-refactor --worktree-base origin/main
```
- `--worktree` cannot be combined with `--remote` or `--sandbox`. To resume a
worktree run, pass `--session -1` (or the session id) — do not re-pass
`--worktree`, which fails because the worktree already exists.
### Troubleshooting
- "No model is currently available" or "model ... is not pulled" means the
agent's provider has no usable credential, or (for `dmr/`) the model
hasn't been pulled. Run `docker agent doctor ./agent.yaml` first — it
reports the resolved model/provider and whether credentials were found —
before touching the YAML. If credentials are missing, export the provider's
API key; if a DMR model is missing, run `docker model pull <model>`. Rerun
`doctor` before retrying the task.
- An agent that only *describes* a plan instead of executing it is usually
missing the tool it needs (add `type: shell` or `type: todo` in
`agent.yaml`), not a model failure — hand this back to `docker-agent-config`.
- A `403 Blocked by network policy` error inside a sandbox run means the
destination isn't allowlisted; use `docker agent sandbox allow <host>`.
## Related skills
- For standalone `sbx` lifecycle commands, use `docker-sandboxes-lifecycle`.
- For standalone `sbx policy` and `sbx secret`, use `docker-sandboxes-network-credentials`.
- For writing or changing the underlying `agent.yaml` (models, toolsets, sub_agents), use `docker-agent-config`.
- For serving, sharing, or evaluating the agent, use `docker-agent-deploy`.
## References
- `references/safety-and-sandbox.md` — full safety-mode/flag interaction table and sandbox trust-boundary details.
- `references/sources.md` — provenance of every rule in this skill.
## Assets
- None.
## Checks
- `checks/verification.md` — Verification runbook for a `docker agent run` invocation.
© docker · Apache-2.0 · docker/skills