acpx harness support (current)
Current acpx built-in harness aliases:claudecodexcopilotcursor(Cursor CLI:cursor-agent acp)droidgeminiiflowkilocodekimikiroopenclawopencodepiqwen
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).
Required config
Core ACP baseline:- Discord:
channels.discord.threadBindings.spawnAcpSessions=true
Plugin setup for acpx backend
Fresh installs ship the bundledacpx runtime plugin enabled by default, so ACP
usually works without a manual plugin install step.
Start with:
acpx, denied it via plugins.allow / plugins.deny, or want
to switch to a local development checkout, use the explicit plugin path:
acpx command and version configuration
By default, the bundledacpx plugin uses its plugin-local pinned binary (node_modules/.bin/acpx inside the plugin package). Startup registers the backend as not-ready and a background job verifies acpx --version; if the binary is missing or mismatched, it runs npm install --omit=dev --no-save acpx@<pinned> and re-verifies. The gateway stays non-blocking throughout.
Override the command or version in plugin config:
commandaccepts an absolute path, relative path (resolved from the OpenClaw workspace), or command name.expectedVersion: "any"disables strict version matching.- Custom
commandpaths disable plugin-local auto-install.
Automatic dependency install
When you install OpenClaw globally withnpm install -g openclaw, the acpx
runtime dependencies (platform-specific binaries) are installed automatically
via a postinstall hook. If the automatic install fails, the gateway still starts
normally and reports the missing dependency through openclaw acp doctor.
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 timeout configuration
The bundledacpx plugin defaults embedded runtime turns to a 120-second
timeout. This gives slower harnesses such as Gemini CLI enough time to complete
ACP startup and initialization. Override it if your host needs a different
runtime limit:
Health probe agent configuration
The bundledacpx plugin probes one harness agent while deciding whether the
embedded runtime backend is ready. It defaults to codex. If your deployment
uses a different default ACP agent, set the probe agent to the same id:
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.
permissionMode
Controls which operations the harness agent can perform without prompting.
| Value | Behavior |
|---|---|
approve-all | Auto-approve all file writes and shell commands. |
approve-reads | Auto-approve reads only; writes and exec require prompts. |
deny-all | Deny all permission prompts. |
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).
| Value | Behavior |
|---|---|
fail | Abort the session with AcpRuntimeError. (default) |
deny | Silently deny the permission and continue (graceful degradation). |
Configuration
Set via plugin config:Important: OpenClaw currently defaults topermissionMode=approve-readsandnonInteractivePermissions=fail. In non-interactive ACP sessions, any write or exec that triggers a permission prompt can fail withAcpRuntimeError: Permission prompt unavailable in non-interactive mode. If you need to restrict permissions, setnonInteractivePermissionstodenyso sessions degrade gracefully instead of crashing.
Related
- ACP agents — overview, operator runbook, concepts
- Sub-agents
- Multi-agent routing