diff --git a/docs/tools/acp-agents.md b/docs/tools/acp-agents.md index 0eb36a43c09..6188b04c0a1 100644 --- a/docs/tools/acp-agents.md +++ b/docs/tools/acp-agents.md @@ -120,6 +120,19 @@ Interface details: - `cwd` (optional): requested runtime working directory (validated by backend/runtime policy). - `label` (optional): operator-facing label used in session/banner text. +## Sandbox compatibility + +ACP sessions currently run on the host runtime, not inside the OpenClaw sandbox. + +Current limitations: + +- If the requester session is sandboxed, ACP spawns are blocked. + - Error: `Sandboxed sessions cannot spawn ACP sessions because runtime="acp" runs on the host. Use runtime="subagent" from sandboxed sessions.` +- `sessions_spawn` with `runtime: "acp"` does not support `sandbox: "require"`. + - Error: `sessions_spawn sandbox="require" is unsupported for runtime="acp" because ACP sessions run outside the sandbox. Use runtime="subagent" or sandbox="inherit".` + +Use `runtime: "subagent"` when you need sandbox-enforced execution. + ### From `/acp` command Use `/acp spawn` for explicit operator control from chat when needed. @@ -404,6 +417,8 @@ Restart the gateway after changing these values. | `--thread here requires running /acp spawn inside an active ... thread` | `--thread here` used outside a thread context. | Move to target thread or use `--thread auto`/`off`. | | `Only can rebind this thread.` | Another user owns thread binding. | Rebind as owner or use a different thread. | | `Thread bindings are unavailable for .` | Adapter lacks thread binding capability. | Use `--thread off` or move to supported adapter/channel. | +| `Sandboxed sessions cannot spawn ACP sessions ...` | ACP runtime is host-side; requester session is sandboxed. | Use `runtime="subagent"` from sandboxed sessions, or run ACP spawn from a non-sandboxed session. | +| `sessions_spawn sandbox="require" is unsupported for runtime="acp" ...` | `sandbox="require"` requested for ACP runtime. | Use `runtime="subagent"` for required sandboxing, or use ACP with `sandbox="inherit"` from a non-sandboxed session. | | Missing ACP metadata for bound session | Stale/deleted ACP session metadata. | Recreate with `/acp spawn`, then rebind/focus thread. | | `AcpRuntimeError: Permission prompt unavailable in non-interactive mode` | `permissionMode` blocks writes/exec in non-interactive ACP session. | Set `plugins.entries.acpx.config.permissionMode` to `approve-all` and restart gateway. See [Permission configuration](#permission-configuration). | | ACP session fails early with little output | Permission prompts are blocked by `permissionMode`/`nonInteractivePermissions`. | Check gateway logs for `AcpRuntimeError`. For full permissions, set `permissionMode=approve-all`; for graceful degradation, set `nonInteractivePermissions=deny`. |