Skip to content

fix(desktop): restore Codex t3 browser on Windows - #72

Closed
macodev00 wants to merge 1 commit into
mainfrom
cursor/windows-codex-t3-browser-c5d1
Closed

macodev00 wants to merge 1 commit into
mainfrom
cursor/windows-codex-t3-browser-c5d1

Conversation

@macodev00

Copy link
Copy Markdown
Owner

Fixes pingdotgg#12778

Problem

On Windows desktop (T3 0.0.42), asking Codex to use the T3 browser fails with “no preview automation host is available in this environment.” The screenshot is that broker error after a short turn that also read page metadata. Codex then stops, because the error tells the model not to retry.

The desktop browser host was registered. The next preview_* call had nobody to route to.

Change

After most preview tools, the server does a best-effort page-icon status with a 500ms deadline. PreviewAutomationBroker.awaitResponse treated every unanswered deadline as host death and disconnected that client. Swallowing the timeout in PreviewToolkit.invoke did not undo the disconnect. A desktop session has one host, so the following preview tool returned PreviewAutomationNoAvailableHostError.

Optional reads can now set disconnectOnTimeout: false. The metadata lookup does. An unanswered primary operation still drops the host, because the client may have applied the action before becoming unreachable.

This is the same eviction as pingdotgg#12273. pingdotgg#12535 already completes the registration stream so the desktop re-registers about a second later, which is why a later turn can work. It does not help the in-flight turn: the error says not to retry, so Codex stops inside that gap.

Windows .cmd spawn, MCP URL quoting, and the WSL bind address were traced and are not this failure. The tool reached the server and returned the broker’s no-host error, so the MCP session was up.

Scope and approval

Triaged in pingdotgg#12778 (accepted, via-triage) as a real desktop preview-host failure. The change is the optional-read timeout path in the preview broker and the metadata lookup that uses it. Primary timeouts still disconnect. No contract, client, or provider-adapter change.

Verification

  • vp test run src/mcp/PreviewAutomationBroker.test.ts src/mcp/McpHttpServer.test.ts from apps/server: 57 passed, including
    • broker: an optional 500ms status timeout leaves the host registered and a later status succeeds
    • MCP: preview_click still returns success when the following metadata status times out, and a later preview_status is not an error
  • Negative check: with disconnectOnTimeout: false removed from the metadata lookup, the MCP follow-up preview_status is an error (isError: true). Restoring the flag makes that assertion pass.
  • vp fmt and vp lint on the four touched files.
  • Not run: a Windows desktop session, and repo-wide vp check / full typecheck. Residual risk: a primary timeout (for example a 15s evaluate, zoomed preview_resize, or preview_wait_for deadline race) still evicts the only host for about a second, and a session whose host never registered is unchanged.

Model and harness: Grok 4.7 in Cursor cloud agent.

Open in Web Open in Cursor 

The optional 500ms status read disconnected the only preview host, so the next Codex preview tool reported that no browser was available.
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S labels Oct 1, 2026
@macodev00

Copy link
Copy Markdown
Owner Author

Opened upstream.

@macodev00 macodev00 closed this Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: windows desktop t3 browser codex models cant use anymore

1 participant