macOS Codex in-app browser hangs on IAB_LIFECYCLE (skill bridge disconnect)
What version of the Codex App are you using (From “About Codex” dialog)?
26.506.31421 (2620)
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.4.0 arm64 arm
What issue are you seeing?
Title: In-app browser hangs after Browser skill bridge connects/disconnects
Environment:
- Codex Desktop
- Browser plugin: openai-bundled/browser-use/0.1.0-alpha2
- In-app browser target: http://127.0.0.1:4100
- macOS local development app
Observed:
The in-app browser repeatedly becomes visually stuck after Codex uses the Browser skill bridge. The local web app remains healthy and loads quickly in Chrome. Reconnecting to the in-app browser via Browser skill can inspect/reload the tab, but after the bridge disconnects/end-of-turn lifecycle, the visible in-app browser becomes stuck again.
Likely trigger:
Connecting to the in-app browser with Browser skill, then ending/disconnecting the Browser skill turn.
Evidence from local Codex logs:
- Repeated
IAB_LIFECYCLE resolved browser use route IAB_LIFECYCLE captured turn route ... disposeAfterTurn=falseIAB_LIFECYCLE syncing browser use active state ... isActive=falseIAB_LIFECYCLE ended browser use turn routeIAB_LIFECYCLE renderer synced browser use webview state ... isBrowserUseActive=false
Expected:
After Browser skill disconnects or a browser-use turn ends, the in-app browser remains interactive and visibly responsive.
Actual:
The in-app browser webview appears hung/stale, even though the app is still responsive in Chrome and the bridge can sometimes inspect/reload the tab.
Workaround:
Avoid using the in-app browser Browser skill. Verify with Chrome, service health checks, API calls, and tests instead.
What steps can reproduce the bug?
Uploaded thread: 52a9ce32-3f33-4bbd-a909-130e9a985a97
Likely trigger:
Connecting to the in-app browser with Browser skill, then ending/disconnecting the Browser skill turn.
Evidence from local Codex logs:
- Repeated
IAB_LIFECYCLE resolved browser use route IAB_LIFECYCLE captured turn route ... disposeAfterTurn=falseIAB_LIFECYCLE syncing browser use active state ... isActive=falseIAB_LIFECYCLE ended browser use turn routeIAB_LIFECYCLE renderer synced browser use webview state ... isBrowserUseActive=false
What is the expected behavior?
After Browser skill disconnects or a browser-use turn ends, the in-app browser remains interactive and visibly responsive.
Additional information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗