Repository navigation
Windows Codex App: in-app browser visibility.set(true) succeeds but visibility.get() remains false #23962
Description
Summary
On Windows Codex App, the Codex in-app browser visibility capability appears to accept set(true), but visibility.get() continues to report false. Navigation and page inspection work, so the issue appears isolated to the visibility state / presentation confirmation path.
This matters because an agent can open and inspect a page in the in-app browser, but cannot honestly confirm that the page has been shown to the user.
Environment
- OS: Windows
- Codex App package:
OpenAI.Codex_26.519.2736.0_x64__2p2nqsd0c76g0 codexcommand:C:\Program Files\WindowsApps\OpenAI.Codex_26.519.2736.0_x64__2p2nqsd0c76g0\app\resources\codex.execodexversion from command resolution:0.133.0.0- Browser plugin:
26.519.22136 - Chrome plugin:
26.519.22136 - Browser backend visible to the runtime: Codex In-app Browser with browser capabilities
visibilityandviewport - Chrome Extension backend is also visible in the same runtime
Previous local observation before update:
- Codex App package:
OpenAI.Codex_26.519.2081.0_x64__2p2nqsd0c76g0 - Browser plugin:
26.519.21041 - Same behavior observed
Reproduction steps
Using the bundled Browser plugin runtime for the in-app browser:
- Bootstrap
browser-client.mjsand select theiabbrowser. - Get the
visibilitycapability:await browser.capabilities.get("visibility"). - Call
await visibility.get(). - Call
await visibility.set(true). - Poll
await visibility.get()at 0ms, 250ms, 1000ms, 2500ms, and 5000ms. - Open a local test page in a new in-app browser tab, e.g.
http://127.0.0.1:<port>/p7-08-updated-navigation. - Confirm page load by title, DOM snapshot, and local HTTP request log.
- Call
await visibility.get()again after navigation.
Expected behavior
After visibility.set(true) returns successfully, the in-app browser should become visible to the user, and visibility.get() should return true, or the API should return an error / status that lets the agent know presentation failed.
Actual behavior
visibility.set(true)returns successfully.visibility.get()remainsfalseat all sampled times:- before
set(true):false - 0ms:
false - 250ms:
false - 1000ms:
false - 2500ms:
false - 5000ms:
false - after navigation:
false
- before
visibility.set(false)also returns successfully.- Navigation itself works:
tab.goto(...)succeedswaitForLoadState({ state: "load" })succeeds- title is readable
- DOM snapshot contains the expected heading and body text
- local HTTP server receives the expected GET request
Impact
The agent can navigate and inspect the in-app browser, but cannot verify that the user can see it. For user-facing GUI checks, this forces the agent to avoid saying it has "shown" the page and instead ask the user to open the in-app browser manually via toolbar / URL click / manual navigation / keyboard shortcut.
Notes
I searched for related reports and found issues about Browser Use / in-app browser startup, handshake, and deferred tool discovery, but did not find an exact match for visibility.set(true) succeeding while visibility.get() remains false.
No page content, credentials, cookies, or session data are included in this report.
Activity
github-actions commentedon May 22, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
NemuKei commentedon May 27, 2026
Additional Windows retest after Codex App restart / crash recovery.
Environment observed from this thread:
OpenAI.Codex_26.519.11010.0_x64__2p2nqsd0c76g0.latestpoints to26.519.81530.agent.browsers.list()aftersetupBrowserRuntime({ globals: globalThis })returns both the Chrome Extension backend and the Codex In-app Browser backend.agent.browsers.get("extension")succeeds andextensionBrowser.user.openTabs()returns an array. I only checked the tab count; I did not print tab URLs, titles, page bodies, cookies, localStorage, or session data.Current In-app Browser behavior:
agent.browsers.get("iab")succeeds.visibilityandviewport.browserId,capabilities,tabs, anduser; no callablevisibilityobject was exposed on the returned browser object in this run.iabBrowser.tabs.list()fails with:No active Codex browser pane available.about:blankpage; I am not using that as evidence for the in-app Browser.Why this is still a product follow-up for us:
NemuKei commentedon May 27, 2026
Follow-up correction from the same Windows environment.
After the previous comment, I continued testing the in-app Browser backend and found that the active pane path can recover in this thread:
agent.browsers.get("iab")succeeds.tabs.list()had failed withNo active Codex browser pane available.tabs.new()succeeded and created tab id1.tabs.get("1")returned a rich tab object withgoto(),title(),url(),screenshot(), and Playwright helpers.GET /iab-styled-checkIAB Styled CheckIAB Styled OKandwhite background and yellow box1280x720So the current narrower issue is not active pane creation anymore. The remaining mismatch is that browser metadata advertises the
visibilitycapability, but the high-level browser object returned byagent.browsers.get("iab")exposes onlybrowserId,capabilities,tabs, anduser; I do not see a callablevisibilityobject on that returned object in this run.Operationally, we can now use the in-app Browser for local/dev GUI checks via
tabs.new()+goto()+ screenshot/DOM checks. We will keep tracking the missing callable visibility surface separately.trukhinyuri commentedon Aug 28, 2026
Still reproduces, and it is not Windows-specific: same behavior on macOS with a current desktop build.
Environment
26.825.31414(build7287)browser@openai-bundled26.825.31414iab), advertised browser capabilities includevisibilityandviewport26.6.2 (25G83),Darwin 25.6.0 arm64 armResult
With a selected in-app browser tab:
await (await browser.capabilities.get("visibility")).set(true)returns normally, with no error.await (await browser.capabilities.get("visibility")).get()returnsfalseimmediately, and stillfalseafter a 750 ms delay.Navigation, DOM snapshots, screenshots, clicking, typing, scrolling, viewport changes, and clipboard round-trips in that same tab all work, so the problem looks isolated to the visibility state / presentation-confirmation path, exactly as described in the original report.
The practical impact is the same on macOS: an agent can open and inspect a page but cannot honestly confirm that it was presented to the user, so a screenshot is currently the only usable evidence that the browser is visible.
furuchanchan commentedon Sep 23, 2026
Reproduced again on macOS with a newer build, plus two observations that may help narrow it down.
Environment
26.915.31945(build9922), macOS26.4.1(25E253), arm6401a0cca2-4187-7d32-934c-5f08a990d2cf(included in case it helps correlate server-side logs)Observed
https://example.com/withvisible: true→ tab1,providerTabIdbrowser-use:7f6834fe-…. The page itself loads and is fully operable: AX snapshot returns "Example Domain", DOM reads work.visibility.get()→false.visibility.set(true)returns without error butget()is stillfalseimmediately after, and remainsfalseafter reconnecting to the same tab.open_in_codexwith the verifiedproviderTabIdreturnsqueuedand never resolves to visible.navigate_to_codex_pageto the owning task,visibility.get()returnedtrueonce; on the very next selected-tab/AX check it wasfalseagain (selected tab still1). So the state flaps rather than being permanently stuck.window 1 → window 4 → window 1) within ~3 s, followed by repeatedNo ChatGPT browser route is available for browser sessionwarnings — coinciding with the stuckvisibility=false/queuedstate. See also [macOS 26.908.70816] cua.getState() times out with repeated missing IAB session-route errors #46100 and Browser Use loses active pane binding after chat/browser detach #20743. Correlation only; causation not proven.Same symptom has reproduced across multiple tasks and days on builds
26.908.70816(build9275) and26.915.31945. In one session visibility briefly recovered totrueafter user-side interaction, then regressed tofalsewhen a new tab was created. A controlled single-window test (closing duplicate windows + clean restart) is the next isolation step on my side.