Skip to content

[Bug]: sandbox.mode: "off" still triggers Docker capability probe for cron/heartbeat/sub-agent sessions — causes failures when Docker daemon is unavailable #73586

@bickers76

Description

@bickers76

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

When agents.defaults.sandbox.mode is set to "off", OpenClaw still runs a Docker capability check (docker image inspect) at the start of every isolated session (cron jobs, heartbeats, sub-agents). If the Docker daemon is not running, this throws an error that propagates as a model call failure. openclaw sandbox explain confirms mode: off / sessionIsSandboxed: false with no per-agent overrides. The docs describe "off" as host execution with zero sandbox involvement — Docker should never be touched.

Steps to reproduce

  1. Set agents.defaults.sandbox.mode: "off" with no per-agent sandbox overrides in agents.list[]
  2. Stop Docker daemon (e.g. quit OrbStack / Docker Desktop)
  3. Trigger any cron job, heartbeat, or sub-agent session
  4. Check ~/.openclaw/logs/gateway.err.log

Expected behavior

sandbox.mode: "off" = zero Docker interaction. No probes, no capability checks, no connection attempts. All sessions run on host as documented.

Actual behavior

dockerImageExists() is called at session start even though resolveSandboxContext() should return null early for mode: "off". When Docker daemon is unavailable, throws:

Error: Failed to inspect sandbox image: failed to connect to the docker API
at unix:///Users/macmini/.orbstack/run/docker.sock
dial unix /Users/macmini/.orbstack/run/docker.sock: connect: no such file or directory

This propagates as a model call failure. Sessions either fail entirely or burn a fallback model slot before recovering.

OpenClaw version

2026.4.26 (be8c246)

Operating system

macOS 26.3 (arm64) — Mac mini, Apple Silicon

Install method

npm / pnpm (local install via openclaw CLI)

Model

anthropic/claude-sonnet-4-6 (primary), openai/gpt-5.5 (fallback)

Provider / routing chain

Anthropic → OpenAI fallback. Errors happen before model is reached — at session preflight.

Additional provider/model setup details

No per-agent model overrides relevant to this bug. Issue occurs regardless of which model is configured.

Logs, screenshots, and evidence

gateway.err.log (repeated for every isolated session):

2026-04-28T07:00:02.327+01:00 [diagnostic] lane task error:
lane=session:agent:main:cron:d6cf9b12-0795-4e87-972a-e3d67e777174 durationMs=2047
error="Error: Failed to inspect sandbox image: failed to connect to the docker API
at unix:///Users/macmini/.orbstack/run/docker.sock; check if the path is correct
and if the daemon is running: dial unix /Users/macmini/.orbstack/run/docker.sock:
connect: no such file or directory"

2026-04-28T08:00:02.353+01:00 [diagnostic] lane task error:
lane=session:agent:main:cron:9d2e918d-68f8-4b8d-8e43-0c064f6fc537 durationMs=2082
error="Error: Failed to inspect sandbox image: ..."

[Same error for every cron/heartbeat session across the day]

openclaw sandbox explain --json (both configured agents show identical output):

{
  "sandbox": {
    "mode": "off",
    "scope": "agent",
    "workspaceAccess": "rw",
    "sessionIsSandboxed": false
  }
}

Active sandbox config in openclaw.json:

{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "off",
        "workspaceAccess": "rw"
      }
    }
  }
}

No sandbox config in agents.list[] for any agent.

Code trace (source verified against 2026.4.26 dist):
• shouldSandboxSession() in runtime-status-C_nvYxR5.js: correctly returns false for mode: "off"resolveSandboxSession() in sandbox-C77UjGet.js: has if (!runtime.sandboxed) return null — returns null
• resolveSandboxContext() in sandbox-C77UjGet.js: has if (!resolved) return null — should exit early
• Despite this, dockerImageExists() in docker-BhXHIHLp.js is still reached — implying a separate call path bypasses the resolveSandboxContext guard

Impact and severity

Medium-High. Any install without a running Docker daemon (standard macOS developer setup without Docker Desktop/OrbStack) gets error noise on every cron/isolated session. Some sessions fail entirely (e.g. scheduled morning briefing — 3 consecutive errors). Others succeed only after wasting a fallback model call, adding 7–10s latency. On a machine where Docker is not expected to be running, this creates a hard-to-diagnose dependency that doesn't appear in any config documentation.

Additional information

The only workaround currently is to keep OrbStack/Docker Desktop running at all times — which is unreasonable for a feature that's explicitly disabled. Switching web search from SearXNG (Docker-based) to Brave API eliminated the functional Docker dependency, but the probe still fires at the OpenClaw session level regardless.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions