fix(browser): preserve no-display launch diagnostics#102946
Merged
Merged
Conversation
steipete
force-pushed
the
codex/fix-browser-no-display-error
branch
from
July 9, 2026 15:13
d83102e to
070b3f6
Compare
Contributor
Author
|
Land-ready verification for exact PR head
|
Contributor
Author
|
Merged via squash.
|
This was referenced Jul 9, 2026
Closed
Contributor
Author
|
Post-merge integration proof after the overlapping #102952 credential-policy landing:
|
Simon-XYDT
pushed a commit
to Simon-XYDT/openclaw
that referenced
this pull request
Jul 9, 2026
* fix(browser): preserve no-display launch diagnostics * chore: keep changelog release-owned
github-actions Bot
pushed a commit
to Desicool/openclaw
that referenced
this pull request
Jul 10, 2026
* fix(browser): preserve no-display launch diagnostics * chore: keep changelog release-owned
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #97027
What Problem This Solves
Fixes an issue where managed browser automation on a Linux service host without
DISPLAYorWAYLAND_DISPLAYeither stopped on an opaque launch failure or forced callers to infer recovery from human text. The same deterministic preflight failure could also consume the managed-launch cooldown and block a subsequent explicit headless retry.Why This Change Was Made
Implicit managed launches now use the existing Linux headless fallback, but an explicit headed choice remains authoritative and fails before Chrome starts. That failure keeps the existing actionable message and carries a closed
no_display_for_headed_profilereason plus typed details through local routes, the HTTP client, Gateway RPC, permission routes, and opt-in browser-node proxy envelopes. Mixed-version nodes retain the legacy error contract unless the caller advertises the new envelope.User Impact
Server-side browser automation can start headlessly when the user has not chosen a mode. Explicit headed configurations are never silently overridden; agents and programmatic callers can branch on a stable reason, then recover with
openclaw browser start --headless,OPENCLAW_BROWSER_HEADLESS=1, a headless profile/config choice, or a real display server. Deterministic no-display preflight failures no longer poison launch cooldown.Evidence
jade-crayfish(cbx_8f76bd8fabee): exact patch-content digest49bd9941171726a79ee407cd7f99f640d7495425ebbe12f301b100cc6f64baf2verified; build runrun_d281f5376b04passed; live runrun_2cb350ea7889used real Playwright Chromium 149 to load “Example Domain” through both implicitlinux-display-fallbackand explicit one-shot--headlessrecovery.run_2cb350ea7889also required a real Gateway-backedopenai/gpt-5.4agent turn to discover and call the browser tool; its JSONL transcript was checked for the exact browser start call, the causal failing tool result, actionable no-display text, and no embedded Gateway fallback.