Prefer the native route unless you explicitly need ACP/acpx behavior.
acpx harness support (current)
Built-in acpx harness aliases (from the pinnedacpx dependency):
factory-droid and factorydroid also resolve to the built-in droid adapter.
When OpenClaw uses the acpx backend, prefer these values for agentId unless your acpx config defines custom agent aliases.
If your local Cursor install still exposes ACP as agent acp, override the cursor agent command in your acpx config instead of changing the built-in default.
Direct acpx CLI usage can also target arbitrary adapters via --agent <command>, but that raw escape hatch is an acpx CLI feature (not the normal OpenClaw agentId path).
Model control is adapter-capability dependent. Codex ACP model refs are
normalized by OpenClaw before startup. Other harnesses need ACP models plus
session/set_model support; if a harness exposes neither that ACP capability
nor its own startup model flag, OpenClaw/acpx cannot force a model selection.
Required config
Core ACP baseline:- Discord:
channels.discord.threadBindings.spawnSessions=true
Plugin setup for acpx backend
Packaged installs use the official@openclaw/acpx runtime plugin for ACP.
Install and enable it before using ACP harness sessions:
pnpm install.
Start with:
acpx, denied it via plugins.allow / plugins.deny, or want
to switch back to the packaged plugin, use the explicit package path:
acpx runtime startup probe
Theacpx plugin embeds the ACP runtime directly (no separate acpx binary or
version to configure). By default it registers the embedded backend during
Gateway startup and waits for a startup probe before the gateway ready
signal. Set OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=0 or
OPENCLAW_SKIP_ACPX_RUNTIME_PROBE=1 only for scripts or environments that
intentionally keep the startup probe disabled. Run /acp doctor for an explicit
on-demand probe.
Override an individual ACP agent command with structured arguments when a path
or flag value should remain one argv token:
agents.<id>.commandis the executable or existing command string for that ACP agent.agents.<id>.argsis optional. Each array item is shell-quoted before OpenClaw passes it through the current acpx command-string registry.
Automatic adapter download
acpx auto-downloads ACP adapters (for example the Claude and Codex ACP
bridges) via npx on first use. You do not need to install adapter packages
manually, and there is no separate postinstall step for OpenClaw itself. If an
adapter download or spawn fails, /acp doctor reports the failure.
Plugin tools MCP bridge
By default, ACPX sessions do not expose OpenClaw plugin-registered tools to the ACP harness. If you want ACP agents such as Codex or Claude Code to call installed OpenClaw plugin tools such as memory recall/store, enable the dedicated bridge:- Injects a built-in MCP server named
openclaw-plugin-toolsinto ACPX session bootstrap. - Exposes plugin tools already registered by installed and enabled OpenClaw plugins.
- Keeps the feature explicit and default-off.
- This expands the ACP harness tool surface.
- ACP agents get access only to plugin tools already active in the gateway.
- Treat this as the same trust boundary as letting those plugins execute in OpenClaw itself.
- Review installed plugins before enabling it.
mcpServers still work as before. The built-in plugin-tools bridge is an
additional opt-in convenience, not a replacement for generic MCP server config.
OpenClaw tools MCP bridge
By default, ACPX sessions also do not expose built-in OpenClaw tools through MCP. Enable the separate core-tools bridge when an ACP agent needs selected built-in tools such ascron:
- Injects a built-in MCP server named
openclaw-toolsinto ACPX session bootstrap. - Exposes selected built-in OpenClaw tools. The initial server exposes
cron. - Keeps core-tool exposure explicit and default-off.
Runtime operation timeout configuration
Theacpx plugin gives embedded runtime startup and control operations 120
seconds by default. This gives slower harnesses such as Gemini CLI enough time
to complete ACP startup and initialization. Override it if your host needs a
different operation limit:
/acp timeout.
sessions_spawn does not accept per-call timeout overrides; the operator path
is agents.defaults.subagents.runTimeoutSeconds. Restart the gateway after
changing timeoutSeconds.
Health probe agent configuration
When/acp doctor or the startup probe checks the backend, the bundled acpx
plugin probes one harness agent. If acp.allowedAgents is set, it defaults to
the first allowed agent; otherwise it defaults to codex. If your deployment
needs a different ACP agent for health checks, set the probe agent explicitly:
Permission configuration
ACP sessions run non-interactively — there is no TTY to approve or deny file-write and shell-exec permission prompts. The acpx plugin provides two config keys that control how permissions are handled: These ACPX harness permissions are separate from OpenClaw exec approvals and separate from CLI-backend vendor bypass flags such as Claude CLI--permission-mode bypassPermissions. ACPX approve-all is the harness-level break-glass switch for ACP sessions.
For the broader comparison between OpenClaw tools.exec.mode, Codex Guardian
approvals, and ACPX harness permissions, see
Permission modes.
permissionMode
Controls which operations the harness agent can perform without prompting.
nonInteractivePermissions
Controls what happens when a permission prompt would be shown but no interactive TTY is available (which is always the case for ACP sessions).
Configuration
Set via plugin config:Related
- ACP agents — overview, operator runbook, concepts
- Sub-agents
- Multi-agent routing