Agent coordination

ACP agents troubleshooting

Troubleshooting

Symptom Likely cause Fix
ACP runtime backend is not configured Backend plugin missing, disabled, or blocked by plugins.allow. Install and enable backend plugin, include acpx in plugins.allow when that allowlist is set, then run /acp doctor.
ACP is disabled by policy (acp.enabled=false) ACP globally disabled. Set acp.enabled=true.
ACP dispatch is disabled by policy (acp.dispatch.enabled=false) Automatic dispatch from normal thread messages disabled. Set acp.dispatch.enabled=true to resume automatic thread routing; explicit sessions_spawn({ runtime: "acp" }) calls still work.
ACP agent "<id>" is not allowed by policy Agent not in allowlist. Use allowed agentId or update acp.allowedAgents.
/acp doctor reports backend not ready right after startup Backend plugin is missing, disabled, blocked by allow/deny policy, or its configured executable is unavailable. Install/enable the backend plugin, rerun /acp doctor, and inspect the backend install or policy error if it stays unhealthy.
Harness command not found Adapter CLI is not installed, the external plugin is missing, or first-run npx fetch failed for a non-Codex adapter. Run /acp doctor, install/prewarm the adapter on the Gateway host, or configure the acpx agent command explicitly.
Model-not-found from the harness Model id is valid for another provider/harness but not this ACP target. Use a model listed by that harness, configure the model in the harness, or omit the override.
Vendor auth error from the harness OpenClaw is healthy, but the target CLI/provider is not logged in. Log in or provide the required provider key on the Gateway host environment.
Unable to resolve session target: ... Bad key/id/label token. Run /acp sessions, copy exact key/label, retry.
--bind here requires running /acp spawn inside an active ... conversation --bind here used without an active bindable conversation. Move to the target chat/channel and retry, or use unbound spawn.
Conversation bindings are unavailable for <channel>. Adapter lacks current-conversation ACP binding capability. Use /acp spawn ... --thread ... where supported, configure top-level bindings[], or move to a supported channel.
--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 <user-id> can rebind this channel/conversation/thread. Another user owns the active binding target. Rebind as owner or use a different conversation or thread.
Thread bindings are unavailable for <channel>. 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.
Cannot apply --model ... did not advertise model support The target harness does not expose generic ACP model switching. Use a harness that advertises ACP models/session/set_model, use Codex ACP model refs, or configure the model directly in the harness if it has its own startup flag.
Missing ACP metadata for bound session Stale/deleted ACP session metadata. Detach with /session unbind, then recreate with /acp spawn --bind here or /acp spawn --thread here.
ACP input request is declined or cancelled The form/URL is malformed, exceeds field/choice limits, uses unsupported constraints, or the owning turn ended. Read the visible decline reason, retry with a standard primitive form or valid HTTP(S) URL, and keep the originating turn active while answering.
PermissionPromptUnavailableError: 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.
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.
ACP session stalls indefinitely after completing work Harness process finished but ACP session did not report completion. Update OpenClaw; current acpx cleanup reaps OpenClaw-owned stale wrapper and adapter processes on close and Gateway startup.
Harness sees <<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>> Internal event envelope leaked across the ACP boundary. Update OpenClaw and rerun the completion flow; external harnesses should receive plain completion prompts only.
Was this useful?
On this page

On this page