[VS Code] Codex Diff editor tab always crashes with "Thread context is unavailable for non-thread routes"
Open 💬 5 comments Opened Jul 24, 2026 by dbsrlskfdk
💡 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?
26.721.30844
What subscription do you have?
Pro
Which IDE are you using?
VS Code with Remote-SSH
What platform is your computer?
Local : Darwin 25.5.0 arm64 arm / Remote: Linux 7.0.0-28-generic x86_64 x86_64
What issue are you seeing?
Opening a Codex diff as a full editor tab always fails. The tab opens but renders the app's error boundary (Oops, an error has occurred).
The Codex sidebar itself works normally.
The webview DevTools console shows:
app-initial-Cm7fGZvY.js:289 Error: Thread context is unavailable for non-thread routes
at app-initial-Bc0jVuU9.js:715:89492
at app-initial-Cm7fGZvY.js:196:28173
at Object.read (app-initial-Cm7fGZvY.js:196:7845)
at Object.read (app-initial-Cm7fGZvY.js:196:17940)
at $be (app-initial-Cm7fGZvY.js:175:27897)
at oxe (app-initial-Cm7fGZvY.js:175:29844)
at pxe (app-initial-Cm7fGZvY.js:175:31967)
at Object.get (app-initial-Cm7fGZvY.js:175:27109)
at app-initial-Cm7fGZvY.js:196:17367
at app-initial-Cm7fGZvY.js:196:19779
at app-initial-Bc0jVuU9.js:715:89900
at app-initial-Cm7fGZvY.js:196:28173
at Object.read (app-initial-Cm7fGZvY.js:196:7845)
at Object.read (app-initial-Cm7fGZvY.js:196:17940)
at $be (app-initial-Cm7fGZvY.js:175:27897)
at oxe (app-initial-Cm7fGZvY.js:175:29844)
at pxe (app-initial-Cm7fGZvY.js:175:31967)
at Object.get (app-initial-Cm7fGZvY.js:175:27109)
at app-initial-Cm7fGZvY.js:196:17367
at app-initial-Cm7fGZvY.js:196:19779
at app-initial-Bc0jVuU9.js:715:89939
at app-initial-Cm7fGZvY.js:196:28173
at Object.read (app-initial-Cm7fGZvY.js:196:7845)
at Object.read (app-initial-Cm7fGZvY.js:196:17940)
at $be (app-initial-Cm7fGZvY.js:175:27897)
at oxe (app-initial-Cm7fGZvY.js:175:29844)
at pxe (app-initial-Cm7fGZvY.js:175:31967)
at Object.get (app-initial-Cm7fGZvY.js:175:27109)
at app-initial-Cm7fGZvY.js:196:37125
at Object.withCurrentRead (app-initial-Cm7fGZvY.js:196:8574)
at getSnapshot (app-initial-Cm7fGZvY.js:196:4248)
at Object.useSyncExternalStore (app-initial-Cm7fGZvY.js:9:60825)
at e.useSyncExternalStore (app-initial-Cm7fGZvY.js:2:7564)
at eTe (app-initial-Cm7fGZvY.js:196:37216)
at R (editor-diff-page-AYqiUD9X.js:1:1304)
at vo (app-initial-Cm7fGZvY.js:9:47572)
at ac (app-initial-Cm7fGZvY.js:9:70186)
at Sc (app-initial-Cm7fGZvY.js:9:80470)
at Ou (app-initial-Cm7fGZvY.js:9:116051)
at Tu (app-initial-Cm7fGZvY.js:9:115098)
at wu (app-initial-Cm7fGZvY.js:9:114931)
at fu (app-initial-Cm7fGZvY.js:9:111408)
at od (app-initial-Cm7fGZvY.js:9:123537)
at td (app-initial-Cm7fGZvY.js:9:122090)
at gu (app-initial-Cm7fGZvY.js:9:113500)
at Object.Aee [as f] (app-initial-Cm7fGZvY.js:10:16819)
at e.flushSync (app-initial-Cm7fGZvY.js:2:12773)
at T (app-initial-Bc0jVuU9.js:3937:444983)
at app-initial-Cm7fGZvY.js:9:61770
at e.deliverMessage (app-initial-Bc0jVuU9.js:2:17211)Caused by: React ErrorBoundary Error: Thread context is unavailable for non-thread routes
at R (editor-diff-page-AYqiUD9X.js:1:1030)
at L (editor-diff-page-AYqiUD9X.js:1:643)
at o (app-initial-Bc0jVuU9.js:717:17015)
at I7e (app-initial-Cm7fGZvY.js:280:3053)
at Y7e (app-initial-Cm7fGZvY.js:280:7298)
at o$t (app-initial-Bc0jVuU9.js:3937:229413)
at l$t (app-initial-Bc0jVuU9.js:3937:230746)
at I7e (app-initial-Cm7fGZvY.js:280:3053)
at Q7e (app-initial-Cm7fGZvY.js:280:8418)
at Suspense (<anonymous>)
at qwe (app-initial-Cm7fGZvY.js:196:33715)
at Rnn (app-initial-Bc0jVuU9.js:3937:604054)
at qwe (app-initial-Cm7fGZvY.js:196:33715)
at Unn (app-initial-Bc0jVuU9.js:3937:605090)
at qwe (app-initial-Cm7fGZvY.js:196:33715)
at Hnn (app-initial-Bc0jVuU9.js:3937:604622)
at lu (app-initial-Bo2X13xU.js:2:46751)
at T4t (app-initial-Bc0jVuU9.js:3937:369052)
at p4t (app-initial-Bc0jVuU9.js:3937:366937)
at Iw (app-initial-DmPXxV0h.js:60:75346)
at aFn (app-initial-DmPXxV0h.js:533:369105)
at uTn (app-initial-DmPXxV0h.js:533:127202)
at Ann (app-initial-Bc0jVuU9.js:3937:603153)
at FYe (app-initial-DmPXxV0h.js:60:79370)
at kMn (app-initial-DmPXxV0h.js:533:312003)
at tEn (app-initial-DmPXxV0h.js:533:140881)
at Iw (app-initial-DmPXxV0h.js:60:75346)
at t (app-initial-Cm7fGZvY.js:94:8798)
at A4t (app-initial-Bc0jVuU9.js:3937:369685)
at c (app-initial-Cm7fGZvY.js:197:171381)
at o (app-initial-Cm7fGZvY.js:197:170713)
at akn (app-initial-DmPXxV0h.js:533:206834)
at rkn (app-initial-DmPXxV0h.js:533:204136)
at QOn (app-initial-DmPXxV0h.js:533:198124)
at ZOn (app-initial-DmPXxV0h.js:533:197460)
at Z6t (app-initial-Bc0jVuU9.js:3937:424834)
at REn (app-initial-DmPXxV0h.js:533:152975)
at S4t (app-initial-Bc0jVuU9.js:3937:367627)
at Z7e (app-initial-Cm7fGZvY.js:280:7488)
at q7e (app-initial-Cm7fGZvY.js:280:6216)
at Cgt (app-initial-DmPXxV0h.js:118:11673)
at su (app-initial-Bo2X13xU.js:2:45831)
at Yrn (app-initial-Bc0jVuU9.js:3987:13961)
at qwe (app-initial-Cm7fGZvY.js:196:33715)
at Kwe (app-initial-Cm7fGZvY.js:196:33550)
at oan (app-initial-Bc0jVuU9.js:3994:2604)
at qSe (app-initial-Cm7fGZvY.js:175:70984)
at RDe (app-initial-Cm7fGZvY.js:197:4743)
at Tan (app-initial-Bc0jVuU9.js:3994:5152)
at VBn (app-initial-DmPXxV0h.js:535:82998)
at Nan (app-initial-Bc0jVuU9.js:3994:6542)
at $in (app-initial-Bc0jVuU9.js:3994:823)
at ou (app-initial-Bo2X13xU.js:2:40559)
at Iw (app-initial-DmPXxV0h.js:60:75346)
(anonymous) @ app-initial-Cm7fGZvY.js:289
oee @ app-initial-Cm7fGZvY.js:9
Vs @ app-initial-Cm7fGZvY.js:9
Ws.o.componentDidCatch.e.callback @ app-initial-Cm7fGZvY.js:9
Ga @ app-initial-Cm7fGZvY.js:9
Ka @ app-initial-Cm7fGZvY.js:9
Pc @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
Fu @ app-initial-Cm7fGZvY.js:9
Nu @ app-initial-Cm7fGZvY.js:9
pu @ app-initial-Cm7fGZvY.js:9
fu @ app-initial-Cm7fGZvY.js:9
od @ app-initial-Cm7fGZvY.js:9
td @ app-initial-Cm7fGZvY.js:9
gu @ app-initial-Cm7fGZvY.js:9
Aee @ app-initial-Cm7fGZvY.js:10
e.flushSync @ app-initial-Cm7fGZvY.js:2
T @ app-initial-Bc0jVuU9.js:3937
(anonymous) @ app-initial-Cm7fGZvY.js:9
deliverMessage @ app-initial-Bc0jVuU9.js:2
handleMessage @ app-initial-Bc0jVuU9.js:2
(anonymous) @ app-initial-Bc0jVuU9.js:2
postMessage
(anonymous) @ index.html?id=25ef25e2-1a67-4376-a5cb-4c80cbf3ea7e&parentId=2&origin=e97e6ed7-53c9-4ed8-82c8-41c68b56def5&swVersion=6&extensionId=openai.chatgpt&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&remoteAuthority=ssh-remote%2Brtx5090:1250
HostMessaging.channel.port1.onmessage @ index.html?id=25ef25e2-1a67-4376-a5cb-4c80cbf3ea7e&parentId=2&origin=e97e6ed7-53c9-4ed8-82c8-41c68b56def5&swVersion=6&extensionId=openai.chatgpt&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&remoteAuthority=ssh-remote%2Brtx5090:304
postMessage
doPostMessage @ webviewElement.ts:591
_send @ webviewElement.ts:411
postMessage @ webviewElement.ts:402
postMessage @ overlayWebview.ts:354
$postMessage @ mainThreadWebviews.ts:72
_doInvokeHandler @ rpcProtocol.ts:458
_invokeHandler @ rpcProtocol.ts:443
_receiveRequest @ rpcProtocol.ts:373
_receiveOneMessage @ rpcProtocol.ts:299
(anonymous) @ rpcProtocol.ts:161
_deliver @ event.ts:1364
fire @ event.ts:1395
fire @ ipc.net.ts:658
_receiveMessage @ ipc.net.ts:1028
(anonymous) @ ipc.net.ts:885
_deliver @ event.ts:1364
fire @ event.ts:1395
acceptChunk @ ipc.net.ts:400
(anonymous) @ ipc.net.ts:356
_deliver @ event.ts:1364
fire @ event.ts:1395
fire @ event.ts:1562
(anonymous) @ managedSocket.ts:108
_deliver @ event.ts:1364
fire @ event.ts:1395
$onDidManagedSocketHaveData @ mainThreadManagedSockets.ts:79
_doInvokeHandler @ rpcProtocol.ts:458
_invokeHandler @ rpcProtocol.ts:443
_receiveRequest @ rpcProtocol.ts:373
_receiveOneMessage @ rpcProtocol.ts:308
(anonymous) @ rpcProtocol.ts:161
_deliver @ event.ts:1364
fire @ event.ts:1395
fire @ ipc.net.ts:658
(anonymous) @ localProcessExtensionHost.ts:438
app-initial-Cm7fGZvY.js:289 POST https://o33249.ingest.us.sentry.io/api/4510999349821440/envelope/?sentry_version=7&sentry_key=6719eaa18601933a26ac21499dcaba2f&sentry_client=sentry.javascript.browser%2F10.29.0 429 (Too Many Requests)
i @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
i @ app-initial-Cm7fGZvY.js:289
a @ app-initial-Cm7fGZvY.js:289
sendEnvelope @ app-initial-Cm7fGZvY.js:289
sendEvent @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
_executeHandlers @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
_runExecutor @ app-initial-Cm7fGZvY.js:289
e @ app-initial-Cm7fGZvY.js:289
then @ app-initial-Cm7fGZvY.js:289
_processEvent @ app-initial-Cm7fGZvY.js:289
_captureEvent @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
_executeHandlers @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
_runExecutor @ app-initial-Cm7fGZvY.js:289
e @ app-initial-Cm7fGZvY.js:289
then @ app-initial-Cm7fGZvY.js:289
(anonymous) @ app-initial-Cm7fGZvY.js:289
i @ app-initial-Cm7fGZvY.js:289
_process @ app-initial-Cm7fGZvY.js:289
captureException @ app-initial-Cm7fGZvY.js:289
captureException @ app-initial-Cm7fGZvY.js:289
wxt @ app-initial-Cm7fGZvY.js:289
KFe @ app-initial-Bc0jVuU9.js:181
GFe @ app-initial-Bc0jVuU9.js:181
componentDidCatch @ app-initial-DmPXxV0h.js:60
Ws.o.componentDidCatch.e.callback @ app-initial-Cm7fGZvY.js:9
Ga @ app-initial-Cm7fGZvY.js:9
Ka @ app-initial-Cm7fGZvY.js:9
Pc @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
dl @ app-initial-Cm7fGZvY.js:9
Zc @ app-initial-Cm7fGZvY.js:9
Fu @ app-initial-Cm7fGZvY.js:9
Nu @ app-initial-Cm7fGZvY.js:9
pu @ app-initial-Cm7fGZvY.js:9
fu @ app-initial-Cm7fGZvY.js:9
od @ app-initial-Cm7fGZvY.js:9
td @ app-initial-Cm7fGZvY.js:9
gu @ app-initial-Cm7fGZvY.js:9
Aee @ app-initial-Cm7fGZvY.js:10
e.flushSync @ app-initial-Cm7fGZvY.js:2
T @ app-initial-Bc0jVuU9.js:3937
(anonymous) @ app-initial-Cm7fGZvY.js:9
deliverMessage @ app-initial-Bc0jVuU9.js:2
handleMessage @ app-initial-Bc0jVuU9.js:2
(anonymous) @ app-initial-Bc0jVuU9.js:2
postMessage
(anonymous) @ index.html?id=25ef25e2-1a67-4376-a5cb-4c80cbf3ea7e&parentId=2&origin=e97e6ed7-53c9-4ed8-82c8-41c68b56def5&swVersion=6&extensionId=openai.chatgpt&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&remoteAuthority=ssh-remote%2Brtx5090:1250
HostMessaging.channel.port1.onmessage @ index.html?id=25ef25e2-1a67-4376-a5cb-4c80cbf3ea7e&parentId=2&origin=e97e6ed7-53c9-4ed8-82c8-41c68b56def5&swVersion=6&extensionId=openai.chatgpt&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&remoteAuthority=ssh-remote%2Brtx5090:304
postMessage
doPostMessage @ webviewElement.ts:591
_send @ webviewElement.ts:411
postMessage @ webviewElement.ts:402
postMessage @ overlayWebview.ts:354
$postMessage @ mainThreadWebviews.ts:72
_doInvokeHandler @ rpcProtocol.ts:458
_invokeHandler @ rpcProtocol.ts:443
_receiveRequest @ rpcProtocol.ts:373
_receiveOneMessage @ rpcProtocol.ts:299
(anonymous) @ rpcProtocol.ts:161
_deliver @ event.ts:1364
fire @ event.ts:1395
fire @ ipc.net.ts:658
_receiveMessage @ ipc.net.ts:1028
(anonymous) @ ipc.net.ts:885
_deliver @ event.ts:1364
fire @ event.ts:1395
acceptChunk @ ipc.net.ts:400
(anonymous) @ ipc.net.ts:356
_deliver @ event.ts:1364
fire @ event.ts:1395
fire @ event.ts:1562
(anonymous) @ managedSocket.ts:108
_deliver @ event.ts:1364
fire @ event.ts:1395
$onDidManagedSocketHaveData @ mainThreadManagedSockets.ts:79
_doInvokeHandler @ rpcProtocol.ts:458
_invokeHandler @ rpcProtocol.ts:443
_receiveRequest @ rpcProtocol.ts:373
_receiveOneMessage @ rpcProtocol.ts:308
(anonymous) @ rpcProtocol.ts:161
_deliver @ event.ts:1364
fire @ event.ts:1395
fire @ ipc.net.ts:658
(anonymous) @ localProcessExtensionHost.ts:438
What steps can reproduce the bug?
- Connect VS Code to a Linux host with Remote-SSH.
- Install/enable the Codex extension (26.721.30844) on the remote side.
- Open a Codex thread and let it edit files in the workspace.
- Open the diff as a full editor tab (not the inline sidebar diff).
- The tab renders blank. Run
Developer: Open Webview Developer Toolsand check the
Console for the error above.
What is the expected behavior?
The Codex Diff editor tab should render the diff, the same way the inline diff in the Codex sidebar does.
Additional information
Tried without success:
Developer: Reload Window- Full VS Code restart
Remote-SSH: Kill VS Code Server on Host+ reconnectView: Close All Editorsbefore reopening
Workarounds that do work:
- Viewing the diff inline in the Codex sidebar instead of the editor tab
- VS Code's built-in Source Control diff /
git diff
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Confirmed the same failure on Windows 11 x64 + VS Code 1.130.0 + Remote-SSH to Ubuntu Linux x86_64, using extension 26.721.30844.
I traced the exception to the bundled
editor-diff-page-AYqiUD9X.jsat the reported:1:1304frame. In the minifiedEditorDiffPagecomponent, the relevant sequence is:The value
yis later passed ashostConfig. Evaluatingw(j)reads state that requires a thread route, but the standalone editor diff is rendered on the non-thread/diffroute. That matches the thrown error exactly:As a temporary diagnostic hot patch, I changed only the bundled expression:
I applied this to both the local and Remote-SSH copies of the extension, reloaded VS Code, and repeatedly opened the same full-editor Codex Diff. The split diff rendered normally each time, and fresh logs no longer contained the thread-context exception. The sidebar continued to work normally.
This strongly suggests the source-level fix should avoid reading a thread-only host-config atom from the standalone
/diffroute. Possible fixes would be to use an optional/non-throwing context accessor, pass the required host config in the diff route state, or omithostConfigwhen no thread context exists. A regression test covering the full-editor diff under Remote-SSH would be useful.The bundle edit is only a diagnostic workaround and will be overwritten by an extension update/reinstall.
Confirmed on a native Linux ARM64 environment as well, without Remote-SSH:
1.130.0(arm64)26.721.41059-linux-arm647.0.0-28-generic/aarch64/diff: works normallyOops, an error has occurredThe fatal Webview console error is:
This is the same failure signature reported here, but it is still reproducible in the newer
26.721.41059ARM64 build. Therefore, the issue does not appear to be specific to Remote-SSH, x86_64, or extension26.721.30844.I also initially investigated an earlier:
However, that message is not required to reproduce the Diff crash. On a later reproduction, the Diff page failed with the same thread-context exception without a preceding
fs/readFileerror.The following Webview console messages also appear, but seem unrelated because the React error boundary is triggered by the thread-context exception:
Unrecognized feature: 'local-network-access'data:fontThe fact that CLI
/diffworks against the same repository and uncommitted changes also suggests this is isolated to the extension's full-editor/diffroute rather than Git state or diff generation.Additional confirmation from VS Code 1.130.0 on Windows with WSL2 Ubuntu (Linux x86_64), with a useful regression boundary:
26.715.61943: full-editor Codex Diff works26.721.30844: full-editor Codex Diff consistently rendersOops, an error has occurred26.721.41059: the same failure persistsThe failure reproduced across two unrelated repositories. In both failing builds, native
git diffremained valid. The Codex extension log recorded the React error boundary in the bundlededitor-diff-pagecomponent (editor-diff-page-AYqiUD9X.jsfor26.721.30844andeditor-diff-page-DVdvmt2c.jsfor26.721.41059). Downgrading only the extension to26.715.61943, without changing the repositories, immediately restored the Codex Diff editor.This supports a client-side regression introduced after
26.715.61943and still present in both26.721.xbuilds.confirmed on ubuntu 24 and newest release of codex.