Environment
- acpx: 0.1.13
- @zed-industries/claude-agent-acp: 0.19.2
- @agentclientprotocol/sdk: 0.14.1 (both sides)
- @anthropic-ai/claude-agent-sdk: 0.2.62
- Claude Code CLI: 2.1.50
- Node: v24.13.1
- macOS (arm64)
Problem
Claude ACP sessions never complete a turn. Codex ACP works fine with the same acpx version.
Observed behavior
acpx claude sessions new → session created ✅
acpx claude prompt --session <name> --file - → agent needs reconnect → starting detached queue owner → [error] RUNTIME: Internal error
- Session record shows:
agentCapabilities: yes, protocolVersion: 1, but turns: 0, lastAgentDisconnectReason: connection_close
- Queue owner process stays alive (heartbeating), but the Claude agent subprocess exits ~3 seconds after start
- Claude debug logs show clean startup through ripgrep test — no errors logged
- Direct
claude --print works fine (auth is good)
- Tested 13 sessions across multiple attempts — all show same pattern
Timeline from session record
agentStartedAt: T+0s
lastPromptAt: T+0.5s
lastAgentExitAt: T+2.6s
lastAgentExitCode: null
lastAgentExitSignal: null
lastAgentDisconnectReason: connection_close
Comparison with Codex (working)
- Codex sessions: 3/3 completed, 2 turns each
- Claude sessions: 13/13 failed, 0 turns each
- Both use @agentclientprotocol/sdk@0.14.1
- Both have
agentCapabilities set (init handshake works)
Config
permissionMode: approve-all
nonInteractivePermissions: deny
authPolicy: skip
Likely cause
Something in the lifecycle between queue owner starting the claude agent subprocess and delivering the first prompt. The agent connects, exchanges capabilities, but then disconnects before any turn completes. The newSession or prompt RPC may not be reaching the agent correctly.
Environment
Problem
Claude ACP sessions never complete a turn. Codex ACP works fine with the same acpx version.
Observed behavior
acpx claude sessions new→ session created ✅acpx claude prompt --session <name> --file -→agent needs reconnect→starting detached queue owner→[error] RUNTIME: Internal erroragentCapabilities: yes,protocolVersion: 1, butturns: 0,lastAgentDisconnectReason: connection_closeclaude --printworks fine (auth is good)Timeline from session record
agentStartedAt: T+0slastPromptAt: T+0.5slastAgentExitAt: T+2.6slastAgentExitCode: nulllastAgentExitSignal: nulllastAgentDisconnectReason: connection_closeComparison with Codex (working)
agentCapabilitiesset (init handshake works)Config
Likely cause
Something in the lifecycle between queue owner starting the claude agent subprocess and delivering the first prompt. The agent connects, exchanges capabilities, but then disconnects before any turn completes. The
newSessionorpromptRPC may not be reaching the agent correctly.