Summary
codex app-server proxy --sock <default control socket> appears not to forward a WebSocket-framed initialize exchange even though the same WebSocket handshake and masked text frame works directly against the Unix control socket.
This is related to #23572, but this reproduction does not use Content-Length framing. It uses the framing described in codex-rs/app-server/README.md: WebSocket HTTP Upgrade followed by WebSocket frames.
Environment
- Platform: macOS / Darwin arm64
- Codex Desktop:
26.527.60818 / build 3437
- Desktop-bundled
codex: codex-cli 0.136.0-alpha.2
- Standalone current
codex: codex-cli 0.135.0
codex app-server daemon version:
status: running
backend: pid
managedCodexVersion: 0.135.0
cliVersion: 0.136.0-alpha.2
appServerVersion: 0.135.0
What I tested
I sent the same minimal app-server initialize request over three transports:
- Raw Unix socket connection to the default app-server control socket.
~/.codex/packages/standalone/current/codex app-server proxy --sock <default control socket>.
- Desktop-bundled
codex app-server proxy --sock <default control socket>.
For all three, the client input was:
- HTTP WebSocket Upgrade request.
- Client-masked WebSocket text frame containing:
{"id":1,"method":"initialize","params":{"clientInfo":{"name":"proxy-repro","version":"0.0.0"},"capabilities":{"experimentalApi":true,"requestAttestation":false}}}
Summary
codex app-server proxy --sock <default control socket>appears not to forward a WebSocket-framedinitializeexchange even though the same WebSocket handshake and masked text frame works directly against the Unix control socket.This is related to #23572, but this reproduction does not use Content-Length framing. It uses the framing described in
codex-rs/app-server/README.md: WebSocket HTTP Upgrade followed by WebSocket frames.Environment
26.527.60818/ build3437codex:codex-cli 0.136.0-alpha.2codex:codex-cli 0.135.0codex app-server daemon version:status:runningbackend:pidmanagedCodexVersion:0.135.0cliVersion:0.136.0-alpha.2appServerVersion:0.135.0What I tested
I sent the same minimal app-server
initializerequest over three transports:~/.codex/packages/standalone/current/codex app-server proxy --sock <default control socket>.codex app-server proxy --sock <default control socket>.For all three, the client input was:
{"id":1,"method":"initialize","params":{"clientInfo":{"name":"proxy-repro","version":"0.0.0"},"capabilities":{"experimentalApi":true,"requestAttestation":false}}}