Shared-Daemon Docker Projects

April 22, 2026 ยท View on GitHub

Some repos use Docker in a way that depends on the host Docker daemon, not just "Docker as a tool." Common signals:

  • external Docker networks such as proxy
  • Traefik Docker labels and traefik.docker.network
  • shared containers such as shared-postgres
  • scripts that boot another Compose project first

Examples include local setups where one repo runs shared infra and another repo joins that network for application development.

What Hazmat Supports

Hazmat containment supports two Docker shapes:

  • Private-daemon Docker: the agent runs in Docker Sandbox mode with its own daemon or microVM. This is Tier 3.
  • Code-only native sessions: the agent stays in Tier 2 native containment by default. Docker commands do not work in the session.

Hazmat does not support shared-daemon Docker access inside containment. The host Docker socket is treated as a full sandbox escape.

Code-Only Fallback

If the repo depends on a shared daemon but you only need the agent to edit code and hit already-running local services:

hazmat claude -C ~/workspace/my-project
hazmat config docker none -C ~/workspace/my-project  # override an existing auto/sandbox project setting

This is a fallback, not a full replacement for agent-managed Docker workflows.

For mixed-stack repos, pair native code-only mode with repo-recommended integrations so users still get the right native toolchain hints:

integrations:
  - python-uv
  - node
  - tla-java

What Changes In Native Code-Only Mode

  • The agent can still read and write project files.
  • The agent can still execute project-local scripts and binaries inside the writable project or explicitly exposed directories.
  • The agent can still reach host-published services on allowed ports.
  • The agent cannot run docker, docker compose, docker exec, or restart containers.

Use host-published ports from inside Hazmat, not container DNS names. For example, use localhost:5433 instead of postgres:5432.

Important Boundary Notes

  • Mounted source still matters. If your Compose setup watches or mounts the project directory, file edits from Hazmat become running code inside containers automatically.
  • Localhost is inside the blast radius. Admin surfaces, dev databases, debug endpoints, and local dashboards exposed on allowed ports remain reachable from the session.
  • Tier 2 and Tier 3 are not smooth mode switches today. Integration env passthrough, resume behavior, read-only mount semantics, and network/runtime topology differ between native containment and Docker Sandboxes.

When Tier 4 Is The Right Answer

If the agent needs to debug the live Docker topology, restart services, inspect logs, run docker exec, or otherwise stay inside the shared Docker loop, Tier 2 code-only mode is the wrong fit. Use Tier 4 or another VM-based workflow where the shared daemon lives inside the VM boundary instead of on your host.