Description
On Windows, every ACP message (agent spawn, queue owner spawn, tool execution) opens a visible cmd.exe console window that flashes briefly before closing. This makes ACP unusable on Windows desktop environments.
Root Cause
Three child_process.spawn() calls in �cpx/dist/cli.js are missing windowsHide: true:
- Tool execution spawn (~line 673): spawn(params.command, params.args, { stdio: ["ignore", "pipe", "pipe"] })
- Agent spawn (~line 1165): spawn2(command, args, { stdio: ["pipe", "pipe", "pipe"] })
- Queue owner spawn (~line 5030): spawn3(process.execPath, ..., { detached: true, stdio: "ignore" })
Note: The OpenClaw gateway-to-acpx spawn in �cp-cli-*.js already correctly passes windowsHide: resolved.windowsHide — the issue is only inside acpx itself.
Environment
- OS: Windows 11 (10.0.26200)
- OpenClaw: 2026.3.7 (npm global install)
- acpx: 0.1.15 (plugin-local)
- Node: v24.14.0
- Gateway: Running as Scheduled Task with InteractiveToken logon
Fix
Add windowsHide: true to all three spawn option objects in acpx source:
\\js
// Tool execution
spawn(params.command, params.args ?? [], {
cwd: params.cwd ?? this.cwd,
env: toEnvObject(params.env),
stdio: ["ignore", "pipe", "pipe"],
windowsHide: true // <-- add this
});
// Agent spawn
spawn2(command, args, {
cwd: this.options.cwd,
env: buildAgentEnvironment(this.options.authCredentials),
stdio: ["pipe", "pipe", "pipe"],
windowsHide: true // <-- add this
});
// Queue owner spawn
spawn3(process.execPath, resolveQueueOwnerSpawnArgs(), {
detached: true,
stdio: "ignore",
windowsHide: true // <-- add this
});
\\
This is a no-op on macOS/Linux and fixes the visible window issue on Windows.
Workaround
Manually patch <npm-global>/openclaw/extensions/acpx/node_modules/acpx/dist/cli.js\ with the above changes. Must be re-applied after every acpx update.
Related Issues
Description
On Windows, every ACP message (agent spawn, queue owner spawn, tool execution) opens a visible cmd.exe console window that flashes briefly before closing. This makes ACP unusable on Windows desktop environments.
Root Cause
Three child_process.spawn() calls in �cpx/dist/cli.js are missing windowsHide: true:
Note: The OpenClaw gateway-to-acpx spawn in �cp-cli-*.js already correctly passes windowsHide: resolved.windowsHide — the issue is only inside acpx itself.
Environment
Fix
Add windowsHide: true to all three spawn option objects in acpx source:
\\js
// Tool execution
spawn(params.command, params.args ?? [], {
cwd: params.cwd ?? this.cwd,
env: toEnvObject(params.env),
stdio: ["ignore", "pipe", "pipe"],
windowsHide: true // <-- add this
});
// Agent spawn
spawn2(command, args, {
cwd: this.options.cwd,
env: buildAgentEnvironment(this.options.authCredentials),
stdio: ["pipe", "pipe", "pipe"],
windowsHide: true // <-- add this
});
// Queue owner spawn
spawn3(process.execPath, resolveQueueOwnerSpawnArgs(), {
detached: true,
stdio: "ignore",
windowsHide: true // <-- add this
});
\\
This is a no-op on macOS/Linux and fixes the visible window issue on Windows.
Workaround
Manually patch <npm-global>/openclaw/extensions/acpx/node_modules/acpx/dist/cli.js\ with the above changes. Must be re-applied after every acpx update.
Related Issues