Codex Desktop compositor glitch and severe lag after in-app browser renders Three.js/WebGL preview
Summary
Codex Desktop became extremely laggy and rendered a stale bright cyan / light-blue layer over the composer/input area after I had a local Three.js/WebGL preview open in the in-app browser sidebar for a while. The local preview was showing a globe-like 3D scene, and after the problem appeared the globe preview no longer rendered correctly.
This looks related to the desktop app's Electron/Chromium compositor or WebGL/browser-sidebar path. It may overlap with the existing blurred/translucent overlay reports, but this happened on Apple Silicon and was observed after running an in-app browser WebGL preview.
Environment
- Codex Desktop: 26.519.41501, build 3044
- Bundled codex CLI / app-server: codex-cli 0.133.0-alpha.1
- Electron: 42.1.0 (from running Crashpad process annotation)
- macOS: 26.2, build 25C56; Darwin 25.2.0 arm64
- Hardware: MacBook Air, Apple M2, 16 GB RAM, built-in Apple M2 GPU with 8 cores
- Display: built-in Liquid Retina, 2560 x 1664 Retina
- UI locale: zh-CN
What I was doing
- Working in Codex Desktop with the in-app browser/sidebar preview open.
- Running a local Vite + Three.js project. The screenshot sidebar shows a local preview at
127.0.0.1:5173forClaworld; Codex logs around the same time also show work in~/myGit/articraft. I may have had more than one local WebGL/Three.js preview involved. - The preview rendered a globe-like 3D model / scene.
- After a while, the whole Codex UI became very slow, the composer/input region had a large incorrect bright cyan/light-blue paint layer, and the 3D globe preview stopped showing.
Actual behavior
- Codex Desktop UI becomes very laggy.
- The composer/input area is covered by an incorrect stale cyan/light-blue layer.
- The in-app browser preview can no longer render the Three.js/globe scene.
- The rest of the app remains visible, but repaint/compositing appears broken.
Expected behavior
A WebGL/Three.js page in the in-app browser sidebar should not affect the rest of the Codex desktop UI. The composer should render normally and the preview should either continue rendering or fail in isolation.
Diagnostics found locally
I do not yet have a minimal repro, but I found some local signal around the failure time.
Screenshot files were created at:
2026-05-26T09:34:16Z2026-05-26T09:34:29Z
Codex logs immediately before the restart/window teardown show repeated browser-sidebar lifecycle warnings:
2026-05-26T09:34:45.378Z warning [browser-session-registry] IAB_LIFECYCLE browser sidebar guest torn down conversationId=019e633c-8ee3-7a12-99ad-927a8c8dcf16 guestWebContentsId=2 windowId=1
2026-05-26T09:34:45.381Z warning [browser-sidebar-manager] IAB_LIFECYCLE route window is not live hasWindowState=true ownerDestroyed=true windowDestroyed=true windowId=1
2026-05-26T09:34:45.381Z warning [browser-sidebar-manager] IAB_LIFECYCLE browser use route window missing for active state conversationId=019e633c-8ee3-7a12-99ad-927a8c8dcf16 windowId=1
2026-05-26T09:34:45.382Z info [browser-session-registry] IAB_LIFECYCLE closed browser sidebar page conversationId=019e633c-8ee3-7a12-99ad-927a8c8dcf16 windowId=1
2026-05-26T09:34:45.383Z warning [browser-sidebar-manager] IAB_LIFECYCLE browser use route window missing for active state conversationId=019e6341-7950-7f41-9790-30f52b6a85fd windowId=1
2026-05-26T09:34:45.384Z info [browser-session-registry] IAB_LIFECYCLE removed browser session window windowId=1
After relaunch, the renderer was slow to mount routes:
2026-05-26T09:34:47.774Z info Launching app ... platform=darwin
2026-05-26T09:34:48.247Z info [AppServerConnection] Current reported app-server version: currentVersion=0.133.0-alpha.1 hostId=local
2026-05-26T09:34:48.560Z info [window-manager] window ready-to-show appearance=primary hostId=local startupElapsedMs=178 webContentsId=1 windowId=1
2026-05-26T09:34:48.779Z info [window-manager] window main frame finished load appearance=primary hostId=local startupElapsedMs=397 webContentsId=1 windowId=1
2026-05-26T09:34:58.288Z info [electron-message-handler] [startup][renderer] app routes mounted after 9857ms
The same relaunch log also includes repeated experimental-feature sync errors. I am not sure whether these are related, but including them because they were adjacent in time:
2026-05-26T09:34:58.588Z error [electron-message-handler] Request failed ... method=experimentalFeature/enablement/set ... unsupported feature enablement `auth_elicitation`
2026-05-26T09:34:58.588Z error [electron-message-handler] Failed to sync experimental feature enablement errorMessage="unsupported feature enablement `auth_elicitation`: currently supported features are apps, memories, mentions_v2, plugins, remote_control, tool_suggest, tool_call_mcp_elicitation"
Crashpad had no completed or pending crash dumps under ~/Library/Application Support/Codex/Crashpad/ at the time I checked.
A local process sample after the UI was still degraded showed non-idle UI/compositor-related processes, although this is not a clean idle sample because Codex was still being used:
WindowServer ~25% CPU
Codex main process ~13% CPU
Codex Helper --type=gpu-process ~15% CPU
Codex Helper (Renderer) ~37% CPU
Local WebGL preview details
The involved projects use Vite + Three.js:
~/myGit/articraft/viewer/web/package.json: React 19, Vite 7.3.1,three0.183.2.~/myGit/articraft/viewer/web/src/components/viewer3d/useThreeScene.tscreatesTHREE.WebGLRenderer({ antialias: true, alpha: false, preserveDrawingBuffer: true, ... }), usesrequestAnimationFrame, and disposes renderer resources on cleanup.~/myGit/claworld_site/package.json: Vite 6.2.6,three0.180.0.~/myGit/claworld_site/src/scene.jscreatesTHREE.WebGLRenderer({ canvas, antialias: true, alpha: true, powerPreference: "high-performance" }), caps pixel ratio to 1.8, and runs a continuousrequestAnimationFramerender loop for the globe scene.
At the time I checked after the failure, nothing was still listening on local ports 5173 or 5174.
Related issues
This may be related, but seems not identical:
- #18341: persistent blurred/translucent overlay below composer. That thread mostly points at Intel macOS / backdrop-filter issues; this report is Apple Silicon and appears after an in-app browser WebGL preview.
- #24185: macOS high CPU/GPU/WindowServer load.
- #20413: stale repaint / compositor issues on Windows.
Reproducibility
Intermittent / not yet minimized. The best current repro direction is:
- Open Codex Desktop 26.519.41501 on macOS Apple Silicon.
- Open a project/thread with the right sidebar browser preview visible.
- Run a local Vite + Three.js page that continuously renders a globe/3D scene with WebGL.
- Leave the preview open for a while while continuing to use Codex.
- Observe whether the Codex window becomes laggy and whether the composer/input area gets covered by a stale cyan/blue compositor layer.
Screenshots
I have screenshots showing the broken composer/input repaint and the in-app browser sidebar state. I could not attach them through the automated filing path, but they can be added in a follow-up comment if needed.
<img width="2336" height="1674" alt="Image" src="https://github.com/user-attachments/assets/acdd1284-8e96-4b70-b5fe-d9c69c76cb0b" />
<img width="2336" height="1630" alt="Image" src="https://github.com/user-attachments/assets/fe698dcf-eeee-4cbc-8a23-909b5636fcef" />
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗