[Bug] VS Code Codex extension host stays above 300% CPU on macOS

Open 💬 3 comments Opened May 18, 2026 by BravoNiceCatch

Bug: VS Code Codex extension host stays above 300% CPU on macOS

Summary

The Codex VS Code extension appears to trigger persistent high CPU usage in the VS Code extension host process on macOS. The process shown in Activity Monitor is Code Helper (Plugin), and it remains around 280-350% CPU for multiple minutes after VS Code starts.

The high CPU is in the VS Code extension host process, not in the spawned codex app-server child process. The extension host has openai.chatgpt activated and has spawned:

~/.vscode/extensions/openai.chatgpt-26.5513.21555-darwin-arm64/bin/macos-aarch64/codex app-server --analytics-default-enabled

Environment

OS: macOS 15.7.4 (24G517)
Architecture: arm64
VS Code: 1.120.0
Extension ID: openai.chatgpt
Extension display name: Codex - OpenAI's coding agent
Extension version: 26.5513.21555
Extension path: ~/.vscode/extensions/openai.chatgpt-26.5513.21555-darwin-arm64

Reproduction

  1. Open VS Code normally.
  2. Wait for the Codex extension to activate.
  3. Observe Activity Monitor or ps.
  4. Code Helper (Plugin) remains above 250-300% CPU for several minutes.

The issue is reproducible after restarting VS Code. Running code --disable-extension openai.chatgpt did not persistently disable the extension and did not stop the already-running extension host.

Observed CPU Evidence

Process snapshots taken every 5 seconds:

2026-05-18 15:37:15 CST
35998 35259 329.9 6.7 03:28 Code Helper (Plugin) --type=utility --utility-sub-type=node.mojom.NodeService ...
36420 35998   0.0 0.1 03:26 ~/.vscode/extensions/openai.chatgpt-26.5513.21555-darwin-arm64/bin/macos-aarch64/codex app-server --analytics-default-enabled
36440 35998   0.0 0.3 03:26 .../jsonServerMain --node-ipc --clientProcessId=35998
36649 35998   0.0 0.2 03:21 .../dbaeumer.vscode-eslint-3.0.24/server/out/eslintServer.js --node-ipc --clientProcessId=35998

2026-05-18 15:37:20 CST
35998 35259 328.0 5.5 03:33 Code Helper (Plugin) --type=utility --utility-sub-type=node.mojom.NodeService ...
36420 35998   0.0 0.1 03:31 ~/.vscode/extensions/openai.chatgpt-26.5513.21555-darwin-arm64/bin/macos-aarch64/codex app-server --analytics-default-enabled

2026-05-18 15:37:25 CST
35998 35259 345.1 6.2 03:38 Code Helper (Plugin) --type=utility --utility-sub-type=node.mojom.NodeService ...
36420 35998   0.0 0.1 03:36 ~/.vscode/extensions/openai.chatgpt-26.5513.21555-darwin-arm64/bin/macos-aarch64/codex app-server --analytics-default-enabled

2026-05-18 15:37:30 CST
35998 35259 356.3 8.3 03:43 Code Helper (Plugin) --type=utility --utility-sub-type=node.mojom.NodeService ...
36420 35998   0.0 0.1 03:41 ~/.vscode/extensions/openai.chatgpt-26.5513.21555-darwin-arm64/bin/macos-aarch64/codex app-server --analytics-default-enabled

2026-05-18 15:37:35 CST
35998 35259 336.5 7.2 03:48 Code Helper (Plugin) --type=utility --utility-sub-type=node.mojom.NodeService ...
36420 35998   0.0 0.1 03:46 ~/.vscode/extensions/openai.chatgpt-26.5513.21555-darwin-arm64/bin/macos-aarch64/codex app-server --analytics-default-enabled

Activity Monitor screenshots also showed:

Code Helper (Plugin): 319.8% CPU, CPU time 2:20.23
Code Helper (Plugin): 285.2% CPU, CPU time 2:35.83

VS Code Extension Host Log Evidence

From ~/Library/Application Support/Code/logs/20260518T153346/window1/exthost/exthost.log:

2026-05-18 15:33:48.322 [info] Extension host with pid 35998 started
2026-05-18 15:33:48.418 [info] ExtensionService#_doActivateExtension openai.chatgpt, startup: false, activationEvent: 'onChatSession:openai-codex'
...
2026-05-18 15:33:49.847 [info] ExtensionService#_doActivateExtension dbaeumer.vscode-eslint, startup: false, activationEvent: 'onStartupFinished'

From ~/Library/Application Support/Code/logs/20260518T153346/window1/exthost/openai.chatgpt/Codex.log:

2026-05-18 15:33:49.540 [info] Activating Codex extension
2026-05-18 15:33:49.540 [info] [CodexMcpConnection] Spawning codex app-server
2026-05-18 15:33:49.540 [info] ChatGPT desktop bridge active
2026-05-18 15:33:49.540 [info] Desktop bridge registered
2026-05-18 15:33:49.540 [info] Work with apps desktop bridge initialized

The same log contains repeated warnings/errors around feature sync and network/API responses:

WARN codex_core_plugins::manager: failed to warm featured plugin ids cache
remote plugin sync request to https://chatgpt.com/backend-api/plugins/featured failed with status 403 Forbidden

codex_features: unknown feature key in config: remote_connections

Request failed ... method=experimentalFeature/enablement/set
unsupported feature enablement `auth_elicitation`

Error fetching httpStatus=403 ... url=https://chatgpt.com/ces/v1/rgstr...

Failed to list resource templates for MCP server 'godot-mcp-pro': Mcp error: -32601: Method not found
Failed to list resources for MCP server 'computer-use': Mcp error: -32601: Method not found

Expected Behavior

The VS Code extension host should return to low CPU after Codex activation completes. Background network failures, feature flag sync errors, telemetry failures, or MCP resource-listing failures should not cause persistent extension host CPU above 250-300%.

Actual Behavior

The VS Code extension host remains above 300% CPU for multiple minutes. The spawned Codex app-server child process remains at 0.0% CPU, which suggests the hot loop is likely in the VS Code extension host side rather than the app-server child.

Notes / Hypothesis

This may be related to one or more repeated background loops after extension activation:

  • feature enablement sync repeatedly trying unsupported keys such as auth_elicitation;
  • repeated handling of remote_connections as an unknown feature key;
  • repeated Cloudflare/403 HTML response handling for backend-api/plugins/featured;
  • repeated telemetry /ces/v1/rgstr 403 handling;
  • repeated MCP resource/resource-template listing against servers that return -32601 Method not found.

The logs above do not prove which loop burns CPU, but they are the recurring Codex-side events visible during the high CPU period.

Request

Could the Codex VS Code extension team investigate why the extension host process can remain above 300% CPU after activation on macOS?

It would also help if the extension had:

  • backoff/deduplication for repeated 403/network failures;
  • backoff/deduplication for unsupported feature enablement sync;
  • backoff/deduplication for MCP resources/list and resources/templates/list calls when a server returns -32601 Method not found;
  • a clear way to disable Codex persistently from the CLI, or documentation explaining that code --disable-extension openai.chatgpt is launch-scoped and does not write VS Code's global disabled extension state.

View original on GitHub ↗

3 Comments

timoshisa · 3 months ago

seeing the same... when codex is working 350% CPU... when it's idle it goes to negligible

shadow-identity · 3 months ago

I am seeing the same pattern on another macOS / Apple Silicon machine.

Environment:

  • macOS 26.5 (25F71), arm64
  • VS Code 1.117.0 arm64
  • OpenAI ChatGPT / Codex extension: openai.chatgpt@26.519.32039
  • Two VS Code windows open, each with its own Codex extension host

Observed during a short monitor run:

  • After VS Code respawned the extension hosts, both Code Helper (Plugin) processes climbed to about 333-343% CPU for roughly a minute.
  • The child codex app-server processes stayed at 0.0% CPU during the spike, so the hot loop appears to be inside the VS Code extension host rather than the app-server child.
  • Codex.log in both windows kept growing during the spike. The repeated line was:

[IpcClient] Received broadcast but no handler is configured method=thread-stream-state-changed

  • Killing the hot extension host PIDs is not a useful workaround because VS Code respawns them, and the new hosts can spike again.

This looks very close to the original report here and also overlaps with #7972 and the repeated thread-stream-state-changed log signature from #13343.

ZiyueJu · 2 months ago

Additional confirmation on a newer VS Code extension version. I observed the same shape of issue today.

Environment:

macOS: 26.5 (25F71)
CPU: Apple M4 Pro
VS Code: 1.122.1
Extension: openai.chatgpt@26.527.31454-darwin-arm64

Symptoms:

  • VS Code appeared idle but system power draw was roughly 50-60W+ and fans were loud.
  • Two Code Helper (Plugin) extension-host processes were hot for a long time:
PID 1098   ~351% CPU   elapsed ~14h55m   CPU time ~616m
PID 3079   ~346% CPU   elapsed ~4h29m    CPU time ~206m
  • Their child processes were mostly idle. In particular, the spawned Codex helper processes were at 0% CPU:
~/.vscode/extensions/openai.chatgpt-26.527.31454-darwin-arm64/bin/macos-aarch64/codex app-server --analytics-default-enabled
  • Other child processes such as R language server, Pylance, LaTeX Workshop MathJax, JSON server, and Markdown server were also near idle. The burn was in the parent VS Code extension-host processes.
  • The extension log was repeatedly emitting:
[IpcClient] Received broadcast but no handler is configured method=thread-stream-state-changed

Mitigation / confirmation:

  • Killing the two hot extension hosts temporarily reduced CPU, but VS Code recreated new extension hosts and the loop returned within about a minute:
PID 29622  ~343% CPU
PID 29623  ~330% CPU
  • Uninstalling openai.chatgpt, fully quitting VS Code, removing the stale extension folder, and reopening VS Code stopped the loop.
  • After reopening, the VS Code extension hosts stayed at 0.0% CPU for about 90 seconds, and no openai.chatgpt / Codex VS Code helper process remained.

So this appears to still reproduce on openai.chatgpt@26.527.31454, and the key signal is the same as this issue: the hot process is the VS Code extension host, not the spawned codex app-server child.