Skip to content

droid 0.190.0: ACP daemon passes unsupported --mcp-servers to child process -> "Droid process exited unexpectedly (exit code 1)" #9

Description

@shuuul

Droid version: 0.190.0 (both $HOME/.local/bin/droid and npm droid@0.190.0)
OS: macOS (arm64)
Zed version: 1.14.2

What happened

Using Factory Droid as an ACP agent from Zed (external_agents registry entry runs droid exec --output-format acp-daemon) always fails with:

Internal error: { "details": "Droid process exited unexpectedly (exit code 1)" }

Evidence (from $HOME/.factory/logs/droid-log-single.log)

The ACP daemon spawns a child process and passes a --mcp-servers argument:

droid exec --output-format acp --session-id <id> --mcp-servers <base64>

The child exits immediately with:

error: unknown option '--mcp-servers'

(exit code 1), which the wrapper reports as ProcessExitError: Droid process exited unexpectedly (exit code 1).

--mcp-servers is not defined for droid exec in 0.190.0 (confirmed via droid exec --help on both installs).

The base64 payload is a JSON list of the client's MCP servers, so the failure occurs whenever the ACP client has any MCP/context servers enabled (reproduced with stdio-style servers such as exa-search and with http-style servers such as deepwiki). With no servers configured, session creation succeeds and the daemon works.

Steps to reproduce

  1. Register droid as an ACP agent in a client that supports ACP (e.g. Zed), with one or more MCP servers configured.
  2. Start a new session.
  3. The daemon spawns the child with the unsupported --mcp-servers flag; the child exits 1 and the client shows the error above.

Expected behavior

  • Either droid exec accepts --mcp-servers, or the ACP daemon stops passing flags that the exec command does not support.
  • ACP sessions with MCP servers configured should start normally.

Impact

Factory Droid in Zed is unusable whenever any MCP/context servers are enabled. 0.190.0 is the latest version on npm as of 2026-08-09, so there is no known fixed version to upgrade to.

Activity

  1. Derpedyea commented on Oct 3, 2026

    @Derpedyea

    Still reproduces on droid 0.233.0 (npm droid@0.233.0, Linux x64), via T3 Code's ACP registry integration (droid exec --output-format acp-daemon).

    Minimal repro over stdio JSON-RPC:

    → {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{}}}
    → {"jsonrpc":"2.0","id":2,"method":"session/new","params":{"cwd":"/tmp/x","mcpServers":[{"name":"t","command":"/bin/cat","args":[],"env":[]}]}}
    ← {"jsonrpc":"2.0","id":2,"error":{"code":-32603,"message":"Internal error","data":{"details":"Droid process exited unexpectedly (exit code 1)"}}}
    

    The daemon still spawns droid exec --output-format acp --session-id <id> --mcp-servers <base64>, and the child still exits with error: unknown option '--mcp-servers'. With "mcpServers": [] the session opens and prompts work, BYOK custom models included.

    Related: the child's stderr never reaches the ACP client, so all a client can show is "exited unexpectedly (exit code 1)". Forwarding the child's stderr in data.details would have made this self-diagnosing.

  2. prathamdby commented on Oct 6, 2026

    @prathamdby

    Hey @shuuul, It has been fixed in the latest 0.234.0 version; please try it out and let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions