VS Code extension spams unsupported requests / thread-stream-state-changed broadcasts, causing high CPU/GPU usage on macOS
What version of the VS Code extension are you using?
openai.chatgpt 26.318.11754 on VS Code 1.111.0 (ce099c1ed25d9eb3076c11e4a280f3eb52b4fbeb, arm64)
What subscription do you have?
GPT Plus
Which IDE are you using?
VS Code
What platform is your computer?
macOS 26.3.1 (25D771280a), Darwin 25.3.0 arm64, Apple M4 MacBook Air (16 GB)
What issue are you seeing?
The Codex VS Code extension sometimes enters an event/error storm in the sidebar. Once it happens, the extension host and VS Code renderers spike, GPU/WindowServer usage rises, the Mac gets hot, and battery drain becomes abnormally fast.
The repeating patterns I captured were:
open-in-target not supported in extension[IpcClient] Received broadcast but no handler is configured method=thread-stream-state-changedlocal-environments is not supported in the extension
At the same time, code --status / process snapshots showed:
extension-host [1]around 44% CPU- VS Code renderer windows around 14% and 25% CPU
gpu-processaround 15% CPU- macOS
WindowServeraround 37% to 43% CPU
This happened in a tiny workspace (6 files total), so it does not look like indexing or large-project scanning load.
What steps can reproduce the bug?
- Open the Codex sidebar in VS Code on macOS.
- Use the extension normally for a while / leave the sidebar open across wake-resume and regular interactions.
- In my case the issue surfaced while the Codex sidebar was open in the secondary sidebar. A Markdown preview tab was also open. I also had the
subframe7536.custom-ui-styleextension enabled with sidebar vibrancy/transparency, which seems to amplify the GPU/WindowServer cost once the bug starts. - When the bad state is reached, the extension starts spamming logs and VS Code becomes hot/high-power-draw.
I could not isolate a single deterministic click sequence yet, but I captured one concrete occurrence on 2026-03-22 around 00:49 to 00:54 local time.
What is the expected behavior?
The extension should not emit unsupported-request errors or unhandled broadcast warnings in a tight loop. Even if a feature is unavailable, the extension should fail once, stop retrying, and not drive sustained renderer/GPU/WindowServer load.
Additional information
Relevant log excerpts from window1/exthost/openai.chatgpt/Codex.log:
2026-03-22 00:53:10.338 [warning] [IpcClient] Received broadcast but no handler is configured method=thread-stream-state-changed
2026-03-22 00:54:04.001 [error] Error fetching errorMessage="local-environments is not supported in the extension" ... url=vscode://codex/local-environments
And earlier:
Error fetching errorMessage="open-in-target not supported in extension" ... url=vscode://codex/open-in-targets
Counts from the captured logs:
- about 9,700
open-in-target not supported in extensionerrors between00:49:48and00:49:58 thread-stream-state-changedwarnings per minute:00:50: 7600:51: 9500:52: 11800:53: 117
Context that may matter:
- Workspace was very small: 3 PDF + 2 Markdown + 1 DOCX files
subframe7536.custom-ui-stylewas enabled withvibrancy: "sidebar"and a transparent workbench background; I think that amplifies the thermal impact, but the extension-side event storm appears to be the trigger- Clash and AirSend were not the active hot processes during the capture
I can provide sampled process output and fuller logs if needed.
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I had the same problem.
In my case, it went beyond high CPU/log spam and actually crashed VS Code’s extension host. The crash artifacts show a Node/V8 heap OOM (
JavaScript heap out of memory/Ineffective mark-compacts near heap limit).What I found locally:
vscode://codex/open-in-targetsopen-in-target not supported in extensionSo this looks related to #15393 as well. Same failure family, but in my case it escalated into an extension-host crash.
Thanks, this matches what we saw on our side.
Our local mitigation was to hotfix the extension host so the unsupported
open-in-targets/local-environment(s)requests return empty benign results instead of throwing. We kept the original bundle intact, loaded a patched local copy, and after that theopen-in-target not supported in extensionspam dropped to zero in our latest run, along with the repeated websocket reconnect noise.That said, this only looks like a workaround, not the real fix. We still see some
thread-stream-state-changedwarnings afterwards, so there may be a second issue on the webview/renderer side. But returning benign values instead of throwing was enough to stop the worst CPU/GPU storm on our machine.Exactly the same issue. MacBook Activity Monitor shows one or two Code Helper Renderer spiking 80-200% CPU usage whenever the chat moves and renders. It gets several of this per sec in the logs:
[warning] [IpcClient] Received broadcast but no handler is configured method=thread-stream-state-changed.Not sure if it is a workaround. It seems to be a VS Code extension main problem. Using the Codex app with popup as side panel works effectively the same while the Codex Renderer seems to be quite normal sub 40% CPU usage.
Same here. After a few prompts, the Code Helper (renderer process) starts consuming ~50% CPU and keeps doing so until VS Code is fully restarted.
VS Code: 1.114.0
Codex extension: 26.5325.31654, 26.5401.11717
The logs are continuously spammed with an error (see stack trace below):
Another Windows/Cursor data point: I saw the same pattern where short threads opened, but one longer local thread stayed stuck on Loading with a blank panel. The same thread opened fine in the Codex desktop app, so the session itself did not seem broken.
What helped locally was making
stable-metadatafail soft and stopping eager connector logo fetches during mount. Before that, logs were full of git/worker RPC errors and then app-server overloads. After those two changes, the long thread became usable again without touching.codex/sessions.I also saw
UNKNOWN service agentSessionsin a VS Code fork, but that looks like a separate host-specific issue.