openai.chatgpt extension breaks on code-server: chatSessionsProvider proposed API gap + Node 22 navigator migration

Open 💬 2 comments Opened Jun 28, 2026 by yaodong-erick

openai.chatgpt extension breaks on code-server: chatSessionsProvider proposed API gap + Node 22 navigator migration

Summary

The openai.chatgpt (Codex IDE) extension silently fails on code-server (Coder's browser-based VS Code distribution) due to two compounding compat gaps:

  1. vscode.chat.registerChatSessionItemProvider proposed API is missing on code-server based on VS Code < 1.103
  2. PendingMigrationError: navigator is now a global in nodejs on code-server based on VS Code ≥ 1.108 (Node 22+)

Both issues produce the same user-visible symptom: Codex sidebar loads but Send button does nothing, then composer freezes entirely.

We have empirically located the exact extension version boundary below, which other public issues have not.

Environment

  • code-server 4.100.3 (VS Code 1.100.3) — original failure environment
  • code-server 4.118.0 (VS Code 1.118.0, Node v22.22.1) — Plan B verification
  • Linux x86_64
  • Codex extension installed via VSIX

Symptoms

  1. Codex sidebar opens
  2. User types a message, clicks Send
  3. No response (or thinking spinner forever)
  4. Eventually the entire input box becomes unresponsive
  5. Only workaround end-users have: refresh the browser tab

Root cause 1: chat.registerChatSessionItemProvider not available

On code-server 4.100 (VS Code 1.100), the extension throws:

[error] TypeError: ut.chat.registerChatSessionItemProvider is not a function
  at out/extension.js:628 (function Jrt)

The call is wrapped in try/catch and logged as info, so activation appears to succeed, but:

  • The chat session item provider is never registered
  • All downstream broadcast handlers (thread-stream-state-changed, thread-read-state-changed, query-cache-invalidate, client-status-changed, thread-queued-followups-changed) end up unregistered
  • The IpcClient then logs hundreds of Received broadcast but no handler is configured method=thread-stream-state-changed warnings
  • When broadcast rate exceeds ~5/sec for a sustained burst (typically triggered by new conversation creation), the webview JS main thread saturates → composer freezes

Root cause 2: Node 22+ navigator global migration

On code-server 4.118 (VS Code 1.118 / Node 22.22.1), the extension throws:

[error] PendingMigrationError: navigator is now a global in nodejs,
please see https://aka.ms/vscode-extensions/navigator for additional info
  at out/extension.js (during Zod schema initialization)

This appears unmigrated even in your latest stable release 26.5623.42026.

This matches the previously-reported issue #10515 (closed as duplicate of #10421 but not actually fixed).

Exact extension version boundary (new data)

We downloaded and inspected package.json from VSIXs across the version range:

| Version | Date | enabledApiProposals includes chatSessionsProvider? |
|---|---|---|
| 0.3.3 | 2025-08-27 | ❌ NO |
| 0.5.20 | 2025-10 | ❌ NO |
| 0.5.21 | 2025-10 | ❌ NO |
| 0.5.22 | 2025-10-22 | ❌ NO ← last safe version |
| 0.5.23 | 2025-10-23 | ✅ YES (introduced) |
| 0.5.24+ | | ✅ YES |
| 26.5xxx (stable) | 2026+ | ✅ YES |
| 26.6xx (pre-release) | 2026 | ✅ YES |

0.5.22 is the last extension version that does NOT call chat.registerChatSessionItemProvider, and is therefore the last version that activates cleanly on code-server / VS Code 1.100.

Reproducer

On a fresh code-server 4.100.3:

# Install Codex 26.5623.42026 (current stable)
code-server --install-extension openai.chatgpt

# Open Codex sidebar in browser
# Create a new conversation, send any message
# Observe: composer freezes, then becomes unresponsive

Then:

# Workaround: downgrade to 0.5.22
code-server --uninstall-extension openai.chatgpt
curl -L -o codex.vsix \
  'https://openai.gallery.vsassets.io/_apis/public/gallery/publisher/openai/extension/chatgpt/0.5.22/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage'
code-server --install-extension codex.vsix

Codex works normally after this downgrade.

Impact

We run this in production for end users (browser-based coding sandboxes powered by code-server + Codex via Skynet LLM Gateway). The current state forces us to pin to 0.5.22 indefinitely, losing 8 months of Codex improvements (Apps SDK, plan summary view, etc.).

Related issues

  • #10421 — closed without fix (same root cause class)
  • #10515 — closed as dup of #10421 (also Node navigator issue)
  • #22832 — closed as "not planned" (singleton app-server architecture)
  • #24601 — same pattern, different version
  • #26951 — open, no response
  • #27597 — open, no response
  • #4323 — no public changelog (still open, hence we have to reverse-engineer)

Requested action (specific, low-cost)

Either or both:

(a) In a future release, make chat.registerChatSessionItemProvider call conditionally skip when the API is unavailable, and ensure all broadcast handlers it would have wired are also no-op'd. The try/catch already exists; just extending the fallback path would unblock all code-server users without affecting desktop VS Code users.

(b) Document on https://developers.openai.com/codex/ide that code-server is not a supported runtime, so future users know upfront.

(b) alone is a documentation change that costs near zero and saves countless engineer-days from people doing what we just did.

Happy to provide additional logs, package.json diffs, or any other data that helps.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗