[Bug] VS Code Codex extension host stays above 300% CPU on macOS
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
- Open VS Code normally.
- Wait for the Codex extension to activate.
- Observe Activity Monitor or
ps. 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_connectionsas an unknown feature key; - repeated Cloudflare/403 HTML response handling for
backend-api/plugins/featured; - repeated telemetry
/ces/v1/rgstr403 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/listandresources/templates/listcalls 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.chatgptis launch-scoped and does not write VS Code's global disabled extension state.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗