Codex panel frequently fails to load — blank or stuck on logo, then VS Code hangs until unresponsive (macOS, Apple Silicon)

Open 💬 4 comments Opened Jul 19, 2026 by miketests
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What version of the IDE extension are you using?

openai.chatgpt v26.715.31925 (installed ~1 day ago). Same extension ID (openai.chatgpt) on the host and inside the Dev Container.

What subscription do you have?

ChatGPT Pro

Which IDE are you using?

VS Code 1.129.1 (Universal)

What platform is your computer?

Darwin 25.3.0 arm64 arm (macOS on Apple Silicon; VS Code reports Node.js 24.18.0)

What issue are you seeing?

When I open a project in VS Code and click the Codex icon to open the Codex panel (docked in the right-hand Secondary Side Bar), the Codex chat webview frequently fails to load. It sometimes opens normally, but very often it gets stuck in one of the states below and never becomes interactive.

1. The panel is completely blank — the CODEX tab renders no UI at all:

<img width="467" height="647" alt="Image" src="https://github.com/user-attachments/assets/041c88d4-2555-4d06-8105-9632ab73c33f" />

2. The panel shows only the OpenAI logo in the center and never finishes loading:

<img width="467" height="636" alt="Image" src="https://github.com/user-attachments/assets/7489636f-1c19-4e4d-a545-e69e0a102583" />

After it hangs like this for ~3–5 minutes, the entire VS Code window becomes unresponsive and macOS shows the "The window is not responding" dialog (Reopen / Close / Keep Waiting) — VS Code effectively has to be force-reopened:

<img width="264" height="321" alt="Image" src="https://github.com/user-attachments/assets/b6ad4a84-9ee3-4888-944b-af360299d251" />

When it does not hang completely, the panel still takes an extremely long time to load (in one captured case ~5 minutes before the UI finally mounted).

This reproduces both in a plain local VS Code window and inside a Dev Container — the behavior is identical in both, so it does not appear specific to the container/remote setup.

Based on the logs, the extension's backend/app-server starts and responds normally — it is the webview/React UI that fails to mount — so this looks like a renderer/webview hang rather than a backend or extension-host crash. There is no explicit error text in the panel itself (it just stays blank or on the logo); log timestamps and details are in the Additional information section below, and I'm happy to attach the raw logs (main.log, extension-host Codex.log) or a CPU/renderer profile of the hang.

What steps can reproduce the bug?

  1. On macOS (Apple Silicon), open VS Code 1.129.1 with the Codex extension (openai.chatgpt v26.715.31925) installed.
  2. Open any project/folder — reproduces both in a normal local window and inside a Dev Container.
  3. Click the Codex icon to open the Codex panel and select the CODEX tab.
  4. Observe the webview: it frequently stays completely blank, or shows only the OpenAI logo, and never becomes interactive.
  5. Wait ~3–5 minutes → the VS Code window stops responding and macOS shows "The window is not responding" (Reopen / Close / Keep Waiting).

Frequency: intermittent but common — the panel sometimes opens fine, but it fails to load often enough to seriously disrupt normal work.

Feedback ID: no-active-thread-019f5b96-0772-72e0-976b-ca0df57ef5fa

What is the expected behavior?

Opening the Codex panel should reliably load the chat UI within a couple of seconds, every time, and should never freeze the VS Code window or make it unresponsive.

Additional information

  • Extension: openai.chatgpt v26.715.31925 (updated ~1 day ago); same extension ID used on the host and inside the Dev Container.
  • IDE: VS Code 1.129.1 (Universal); Node.js 24.18.0 (from VS Code's About dialog).
  • OS: macOS on Apple Silicon — uname -mprs → Darwin 25.3.0 arm64 arm.
  • Subscription: ChatGPT Pro.
  • Reproduces in both a clean local VS Code window and a Dev Container.
  • In the screenshots the Codex view is docked next to other views in the same panel (the CHAT / CLAUDE CODE / CODEX tabs); the problem is specific to the CODEX tab.

Diagnostics from the logs (Docker/OrbStack had 10 CPU / 16 GB RAM and ~1.2 TB free, so this is not resource starvation):

  • Looks like a renderer/webview hang, not an extension-host or Docker crash. In VS Code's main.log the window goes unresponsive (16:55:33 "not responding", again 16:56:48, and a render frame is destroyed at 16:57:13), while the extension host exits cleanly with code 0.
  • Backend alive, UI never renders. After reopening, the Codex app-server re-initialized at 16:57:29, but the React UI only began mounting at 17:02:29 — almost exactly 5 minutes later — and the renderer logged a potential listener LEAK around that time.
  • In the Dev Container case the extension activates and the app-server responds, but a React root render requested event never appears before the window is closed — i.e. the app-server is healthy and the failure is in the webview/React UI mounting.
  • Possibly contributing: the local Codex logs database is corrupted — ~/.codex/logs_2.sqlite fails PRAGMA quick_check (repeated "Bad ptr map" / "invalid page" / "duplicated page"), while the main ~/.codex/state_*.sqlite is intact. This might also explain generally sluggish Codex behavior across projects.
  • Docker/OrbStack setup, volume permissions (owned 1000:1000, no EACCES/EPERM), and the devcontainer.json / compose files were checked and look correct, so they don't appear to be the root cause.
  • Happy to provide the full main.log, the extension-host Codex.log, or a CPU/renderer profile of the hang.

View original on GitHub ↗

4 Comments

github-actions[bot] contributor · 1 month ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #33968
  • #34184

Powered by Codex Action

miketests · 1 month ago

Redacted log excerpts — usernames, file paths, UUIDs, thread/task IDs, project/plugin names and internal IDs have been stripped.

The two logs line up with the "renderer/webview hang, backend healthy" picture:

1. VS Code main process (main.log) — the window hang. The main process records the window going unresponsive, and the unresponsive samples repeatedly point at a WebSocket message handler; the render frame is then disposed, while the extension host exits cleanly (code 0). It also recurred the previous evening.

2026-07-18 21:10:32  CodeWindow: detected unresponsive
2026-07-18 21:10:32  UnresponsiveSampleError: from window with ID 6
                     CodeWindow unresponsive samples:
                       <4> at WebSocket._socketMessageListener (workbench.desktop.main.js:5177)
                       <1> at workbench.desktop.main.js:1076
2026-07-18 21:10:32  Extension host exited with code: 0

2026-07-19 16:55:33  CodeWindow: detected unresponsive
2026-07-19 16:55:45  CodeWindow: recovered from unresponsive
                     CodeWindow unresponsive samples:
                       <4> at workbench.desktop.main.js:1076:10604
                       <1> at WebSocket._socketMessageListener (workbench.desktop.main.js:5177:124590)
2026-07-19 16:56:48  CodeWindow: detected unresponsive
2026-07-19 16:57:13  [uncaught exception in main]: Error: Render frame was disposed before call stack was received
2026-07-19 16:57:13  Extension host exited with code: 0

2. Codex extension host (Codex.log) — the ~5-minute UI stall + DB corruption. The extension activates and the app-server initializes immediately, but the React root render is not requested until ~5 minutes later; separately, an app-server state DB operation fails with database disk image is malformed (SQLite code 11).

2026-07-19 16:57:29.520  Activating Codex extension
2026-07-19 16:57:29.767  [CodexMcpConnection] Initialize received id=1
        (… ~5 minutes with no render …)
2026-07-19 17:02:29.436  [statsig-refresh-diagnostics] React root render requested windowType=extension
2026-07-19 17:02:30.409  [startup][renderer] app routes mounted after 1464ms
2026-07-19 17:12:40.785  thread/delete failed: "failed to delete app-server state for <redacted>: database disk image is malformed" (code 11)
2026-07-19 17:12:41.019  codex_rollout::list: state db discrepancy … falling_back

Happy to share fuller redacted logs or a CPU profile of the hang (VS Code suggests https://aka.ms/vscode-tracing-cpu-profile) if that would help.

miketests · 1 month ago

Follow-up: a controlled re-reproduction points to a Codex WebView resource-loading bug (macOS)

I re-ran this as a controlled test after neutralizing the disk/cache angle, and it still reproduced with everything else healthy — which isolates the failure to the Codex WebView frontend, not Docker, SQLite, or the cache.

Control reproduction (devcontainer; shared cache already cleared).

  • Codex app-server initialized in ~25 ms, but the WebView never reached React root render requested — it hung on loading.
  • In the same container, another WebView-based extension rendered its panel in ~1.28 s — so the container and VS Code's webview infrastructure are fine; the stall is specific to Codex.
  • VS Code then logged a listener leak in doReadFileStream → loadResource (~4:34), and the window renderer went unresponsive (~4:56).
  • Not resource starvation: container OOMKilled=false; both container databases are healthy (state_5.sqlite and logs_2.sqlite each PRAGMA quick_check = ok); and the shared volume had already been trimmed before this run, so its former size can't explain the recurrence.

So Docker, permissions, devcontainer.json, SQLite integrity, OOM, and cache size are all ruled out for this failure.

Same fingerprint as #33968. #33968 (also VS Code 1.129.1) shows the identical signature: the extension logs Initialize received id=1 and then goes silent, with React root render requested only appearing on the launches that recover. In an earlier captured hang on my machine that gap was ~5 minutes:

<details><summary><code>Codex.log</code> — ~5-min activation→render stall (redacted)</summary>

2026-07-19 16:57:29.520  Activating Codex extension
2026-07-19 16:57:29.767  [CodexMcpConnection] Initialize received id=1
        (… ~5 minutes with no render …)
2026-07-19 17:02:29.436  [statsig-refresh-diagnostics] React root render requested windowType=extension
2026-07-19 17:02:30.409  [startup][renderer] app routes mounted after 1464ms

</details>

<details><summary><code>main.log</code> — VS Code window hang; unresponsive samples hit a WebSocket message handler (redacted)</summary>

2026-07-19 16:55:33  CodeWindow: detected unresponsive
2026-07-19 16:55:45  CodeWindow: recovered from unresponsive
                     CodeWindow unresponsive samples:
                       <4> at workbench.desktop.main.js:1076:10604
                       <1> at WebSocket._socketMessageListener (workbench.desktop.main.js:5177:124590)
2026-07-19 16:56:48  CodeWindow: detected unresponsive
2026-07-19 16:57:13  [uncaught exception in main]: Error: Render frame was disposed before call stack was received
2026-07-19 16:57:13  Extension host exited with code: 0

(The extension host always exits cleanly with code 0 — not an ext-host crash.)
</details>

Likely mechanism — WebView asset/resource bootstrap. The loadResource listener leak above, plus the size of the frontend, point at resource loading:

  • The installed macOS extension ships a ~147 MB WebView bundle with ~4,959 asset files.
  • microsoft/vscode#326272 (merged 2026-07-17) caps concurrent host-backed WebView resource streams to 32 because extensions "like Codex" fired ~625 concurrent requests and exhausted the renderer's file-descriptor budget on Linux. The FD mechanism is Linux-specific and unproven on macOS, but the loadResource stack and scenario line up.
  • #33032 is a related asset-loading failure: after an in-place extension update, VS Code's webview service-worker cache resolves webview/assets/*.js against the deleted previous extension dir → net::ERR_FAILED, React never mounts, only the logo shows, backend green. My extension had updated ~1 day before the repro; I'll capture the WebView DevTools console next time it hangs.

Separate, independent problems (not the cause here).

  • Host ~/.codex/logs_2.sqlite still fails PRAGMA quick_check. That's a real defect that can affect Codex outside the container, but the container's own DBs are healthy while the WebView still hangs — so it doesn't gate the WebView.
  • The shared Docker volume had bloated to ~29.7 GB (Codex a minority, ~5.2 GB across 46 cached versions) — a disk/IO/version-accumulation problem, but not the cause of the hang.

Would help (maintainer asks):

  • Timeout + explicit in-panel error when the WebView never reaches React-root render, instead of hanging indefinitely.
  • Surface failed WebView asset requests (net::ERR_FAILED / blocked vscode-webview) into the Codex output channel.
  • Version-stamped asset URLs after an in-place update (per #33032).
  • Cap concurrent WebView resource loads on all platforms (aligning with vscode#326272).
  • Safe auto-recovery/rebuild of a corrupted logs_2.sqlite.

Related: #33968, #34184, #33032.

whw23 · 1 month ago

Confirming a closely related reproduction on macOS / Apple Silicon.

  • VS Code 1.129.1 (arm64) and Codex extension 26.715.31925: the same version pair as this issue.
  • Difference in timing: the Codex webview initially mounted successfully (React root render requested and app routes mounted), then later became gray / unresponsive while reasoning and tool updates were streaming.
  • The extension log recorded 84 occurrences of ResizeObserver loop completed with undelivered notifications from 09:45:51 to 10:28:30, repeatedly adjacent to reasoning-summary item events.
  • It also recorded Item not found in turn state, 57 state db discrepancy ... falling_back messages, and unhandled broadcasts including thread-stream-following-changed, thread-read-state-changed, and client-status-changed. The extension reported thread_tools as enabled while the bundled CLI logged it as an unknown feature key.
  • There were no webview/assets or net::ERR_FAILED messages in this occurrence, so this does not appear to be exclusively the stale service-worker asset-path failure mode.
  • An ipc-connection-reset followed by extension reactivation recovered the renderer: the next startup again logged app routes mounted, and no further ResizeObserver errors appeared during the captured period.

This looks like a related streaming/event-state/layout variant: the backend remains active but the webview renderer degrades after mounting. I can provide further redacted log excerpts if useful.