codex app-server proxy hangs on WebSocket-framed initialize while direct Unix socket succeeds

Open 💬 1 comment Opened Jun 2, 2026 by bakemocho

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:

  1. Raw Unix socket connection to the default app-server control socket.
  2. ~/.codex/packages/standalone/current/codex app-server proxy --sock <default control socket>.
  3. 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}}}

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗