Extentions icons don't load under the extention tab on the sidebar

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Extentions icons don’t load under the extention tab on the sidebar I have to reload the IDE to see them. (I am on Windows 11 WSL Ubuntu)

Steps to Reproduce

Just open Cursor Ai first time and you will see some icons don’t load

Operating System

Windows 10/11

Version Information

Version: 3.2.11 (user setup)
VSCode Version: 1.105.1
Commit: e9ee1339915a927dfb2df4a836dd9c8337e17cc0
Date: 2026-04-24T14:36:47.933Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Windows_NT x64 10.0.26200

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the report. This symptom looks familiar, we already have similar WSL reports, for example this thread WSL: all extension icons break after restart (vscode-remote-resource:// blocked by CORS + ERR_UNKNOWN_URL_SCHEME). It has a detailed breakdown. In a WSL session, icon assets are served via vscode-remote-resource:// and sometimes get blocked with ERR_UNKNOWN_URL_SCHEME or CORS, which breaks rendering until you reload the window.

To link your case to the existing issue, could you confirm a couple things?

  1. Does it happen every time you open Cursor, or only sometimes?
  2. Open DevTools via Help > Toggle Developer Tools > Console right after startup while the icons are still blank. Do you see errors about vscode-remote-resource://, CORS, or ERR_UNKNOWN_URL_SCHEME? A console screenshot would help.
  3. If you open Cursor locally without WSL, do the icons load normally?

For now the workaround is the same one you found, run Developer: Reload Window via Ctrl+Shift+P. We’re tracking the bug, but I can’t share an ETA yet. I’ll post an update as soon as we have one.

Hi thanks for the reply.

1)Yes it does

2)I see this message
workbench.desktop.main.js:8818 This document requires ‘TrustedScript’ assignment. The action has been blocked.
(anonymous) @ workbench.desktop.main.js:8818
workbench.desktop.main.js:8818 The JavaScript Function constructor does not accept TrustedString arguments. See Trusted Types for function constructor · w3c/trusted-types Wiki · GitHub for more information.
workbench.desktop.main.js:29231 This document requires ‘TrustedScript’ assignment. The action has been blocked.
(anonymous) @ workbench.desktop.main.js:29231
workbench.desktop.main.js:29231 The JavaScript Function constructor does not accept TrustedString arguments. See Trusted Types for function constructor · w3c/trusted-types Wiki · GitHub for more information.
workbench.desktop.main.js:149 Failed to query fonts: SecurityError: Page needs to be visible.
Uup @ workbench.desktop.main.js:149
workbench.desktop.main.js:149 Failed to query fonts: SecurityError: Page needs to be visible.
Uup @ workbench.desktop.main.js:149
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘ms-toolsai.datawrangler’ wants API proposal ‘debugFocus’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘ms-vscode.vscode-copilot-data-analysis’ wants API proposal ‘chatVariableResolver’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘ms-python.python’ wants API proposal ‘terminalShellType’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘ms-python.vscode-python-envs’ wants API proposal ‘terminalShellType’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘github.copilot-chat’ wants API proposal ‘chatReadonlyPromptReference’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘ms-azuretools.vscode-azure-github-copilot’ wants API proposal ‘lmTools’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘vscjava.vscode-java-pack’ wants API proposal ‘lmTools’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘apidev.azure-api-center’ wants API proposal ‘chatParticipant’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Via ‘product.json#extensionEnabledApiProposals’ extension ‘apidev.azure-api-center’ wants API proposal ‘languageModels’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN Missing property “rpcFileLoggerFolder” in oldValue. Filling with value from initValue. Please add a migration if necessary.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 ERR Extension ‘anysphere.remote-ssh’ appears in product.json but enables LESS API proposals than the extension wants.
package.json (LOSES): resolvers, tunnels, contribViewsRemote, terminalDataWriteEvent, cursorTracing, cursorNoDeps
product.json (WINS): resolvers, tunnels, terminalDataWriteEvent, contribRemoteHelp, contribViewsRemote, telemetry, cursorTracing
error @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 ERR [LocalProcess1][resolveAuthority(wsl,1)][1628ms] returned an error Object
error @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 ERR Extension ‘ms-python.python’ wants API proposal ‘envShellEvent’ but that proposal DOES NOT EXIST. Likely, the proposal has been finalized (check ‘vscode.d.ts’) or was abandoned.
error @ workbench.desktop.main.js:65
workbench.desktop.main.js:65 WARN [ms-python.python]: Cannot register ‘python.venvPath’. This property is already registered.
warn @ workbench.desktop.main.js:65
workbench.desktop.main.js:41618 Overwriting grammar scope name to file mapping for scope source.yaml.
Old grammar file: file:///c%3A/Users/vusal/AppData/Local/Programs/cursor/resources/app/extensions/yaml/syntaxes/yaml.tmLanguage.json.
New grammar file: vscode-remote://wsl%2Bubuntu/home/vusal5555/.cursor-server/extensions/redhat.vscode-yaml-1.22.0-universal/syntaxes/yaml.tmLanguage.json
register @ workbench.desktop.main.js:41618
workbench.desktop.main.js:65 WARN No search provider registered for scheme: vscode-remote, waiting
warn @ workbench.desktop.main.js:65
textMateTokenizationWorker.workerMain.js:28 Overwriting grammar scope name to file mapping for scope source.yaml.
Old grammar file: file:///c%3A/Users/vusal/AppData/Local/Programs/cursor/resources/app/extensions/yaml/syntaxes/yaml.tmLanguage.json.
New grammar file: vscode-remote://wsl%2Bubuntu/home/vusal5555/.cursor-server/extensions/redhat.vscode-yaml-1.22.0-universal/syntaxes/yaml.tmLanguage.json
register @ textMateTokenizationWorker.workerMain.js:28
workbench.desktop.main.js:29496 [KnowledgeBaseService] Error fetching git upstream URL: Error: No full commit provider registered
at JNc.getGitUpstreamURL (workbench.desktop.main.js:29321:69137)
at yUc.getGitUpstreamUrl (workbench.desktop.main.js:29496:8669)
at yUc.refresh (workbench.desktop.main.js:29496:8991)
getGitUpstreamUrl @ workbench.desktop.main.js:29496
workbench.desktop.main.js:65 ERR Unable to create workbench contribution ‘remoteTerminalBackend’. Error: A terminal backend with remote authority ‘wsl+ubuntu’ was already registered.
at MPb.registerTerminalBackend (workbench.desktop.main.js:29603:80798)
at new Zdu (workbench.desktop.main.js:42740:57359)
at eMm._createInstance (workbench.desktop.main.js:42042:2093)
at eMm.createInstance (workbench.desktop.main.js:42042:1522)
at hwu.safeCreateContribution (workbench.desktop.main.js:29782:47137)
at l (workbench.desktop.main.js:29782:46700)
error @ workbench.desktop.main.js:65
workbench.desktop.main.js:41671 [transport] Connect error in unary AI connect ConnectError: [unauthenticated] You must be a team member to access this resource
at t (workbench.desktop.main.js:38816:66454)
at async Object.getTeamCommands (workbench.desktop.main.js:29268:4386)
at async NIm.loadTeamCommands (workbench.desktop.main.js:46464:5971) Object
error @ workbench.desktop.main.js:41671
workbench.desktop.main.js:46464 Failed to load team commands: ConnectError: [unauthenticated] You must be a team member to access this resource
at t (workbench.desktop.main.js:38816:66454)
at async Object.getTeamCommands (workbench.desktop.main.js:29268:4386)
at async NIm.loadTeamCommands (workbench.desktop.main.js:46464:5971)
loadTeamCommands @ workbench.desktop.main.js:46464
workbench.desktop.main.js:29424 [PluginsProviderService] getPluginMcpServers took 6186.4ms
_callWithTimeout @ workbench.desktop.main.js:29424
workbench.desktop.main.js:29424 [PluginsProviderService] getPluginHooks took 4925.4ms
_callWithTimeout @ workbench.desktop.main.js:29424
workbench.desktop.main.js:29424 [PluginsProviderService] getPluginMcpServers took 1598.6ms
_callWithTimeout @ workbench.desktop.main.js:29424
workbench.desktop.main.js:41985 [HOOKS] Failed to parse project hooks configuration undefined
logError @ workbench.desktop.main.js:41985
workbench.desktop.main.js:41985 [HOOKS] Failed to parse project hooks configuration undefined
logError @ workbench.desktop.main.js:41985
vscode-remote-resource?path=%2Fhome%2Fvusal5555%2F.cursor-server%2Fextensions%2Fsimonsiefke.svg-pre…:1 Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME
vscode-remote-resource?path=%2Fhome%2Fvusal5555%2F.cursor-server%2Fextensions%2Fsimonsiefke.svg-pre…:1 Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME
workbench.desktop.main.js:46745 An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.
mountTo @ workbench.desktop.main.js:46745
vscode-remote-resource?path=%2Fhome%2Fvusal5555%2F.cursor-server%2Fextensions%2Fsimonsiefke.svg-pre…:1 Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME
vscode-remote-resource?path=%2Fhome%2Fvusal5555%2F.cursor-server%2Fextensions%2Fsimonsiefke.svg-pre…:1 Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME
vscode-remote-resource?path=%2Fhome%2Fvusal5555%2F.cursor-server%2Fextensions%2Fsimonsiefke.svg-pre…:1 Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME
vscode-remote-resource?path=%2Fhome%2Fvusal5555%2F.cursor-server%2Fextensions%2Fsimonsiefke.svg-pre…:1 Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME
workbench.desktop.main.js:41671 [transport] Connect error in unary AI connect ConnectError: [aborted] read ECONNRESET
at t (workbench.desktop.main.js:38816:66454)
at async Object.listBackgroundComposers (workbench.desktop.main.js:29268:4386)
at async XIm.refreshBackgroundComposersInner (workbench.desktop.main.js:46475:35792) Object
error @ workbench.desktop.main.js:41671
workbench.desktop.main.js:38781 [Extension Host] rejected promise not handled within 1 second: ConnectError: [aborted] read ECONNRESET
igS @ workbench.desktop.main.js:38781
workbench.desktop.main.js:38781 [Extension Host] stack trace: ConnectError: [aborted] read ECONNRESET
at yy.from (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:994433)
at Xke (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2198064)
at Promise.reject (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2210501)
at ClientHttp2Stream. (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2208091)
at ClientHttp2Stream.emit (node:events:519:28)
at emitErrorNT (node:internal/streams/destroy:170:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at process.processTicksAndRejections (node:internal/process/task_queues:89:21)
igS @ workbench.desktop.main.js:38781
workbench.desktop.main.js:38795 [anysphere.cursor-always-local][aborted] read ECONNRESET
$onExtensionRuntimeError @ workbench.desktop.main.js:38795
workbench.desktop.main.js:38795 ConnectError: [aborted] read ECONNRESET
at yy.from (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:994433)
at Xke (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2198064)
at Promise.reject (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2210501)
at ClientHttp2Stream. (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2208091)
at ClientHttp2Stream.emit (node:events:519:28)
at emitErrorNT (node:internal/streams/destroy:170:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at process.processTicksAndRejections (node:internal/process/task_queues:89:21)
$onExtensionRuntimeError @ workbench.desktop.main.js:38795
workbench.desktop.main.js:65 ERR An unknown error occurred. Please consult the log for more details. Object
error @ workbench.desktop.main.js:65
workbench.desktop.main.js:38781 [Extension Host] rejected promise not handled within 1 second: ConnectError: [aborted] read ECONNRESET
igS @ workbench.desktop.main.js:38781
workbench.desktop.main.js:38781 [Extension Host] stack trace: ConnectError: [aborted] read ECONNRESET
at yy.from (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:994433)
at Xke (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2198064)
at Promise.reject (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2210501)
at ClientHttp2Stream. (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2208091)
at ClientHttp2Stream.emit (node:events:519:28)
at emitErrorNT (node:internal/streams/destroy:170:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at process.processTicksAndRejections (node:internal/process/task_queues:89:21)
igS @ workbench.desktop.main.js:38781
workbench.desktop.main.js:38795 [anysphere.cursor-always-local][aborted] read ECONNRESET
$onExtensionRuntimeError @ workbench.desktop.main.js:38795
workbench.desktop.main.js:38795 ConnectError: [aborted] read ECONNRESET
at yy.from (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:994433)
at Xke (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2198064)
at Promise.reject (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2210501)
at ClientHttp2Stream. (c:\Users\vusal\AppData\Local\Programs\cursor\resources\app\extensions\cursor-always-local\dist\main.js:2:2208091)
at ClientHttp2Stream.emit (node:events:519:28)
at emitErrorNT (node:internal/streams/destroy:170:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at process.processTicksAndRejections (node:internal/process/task_queues:89:21)
$onExtensionRuntimeError @ workbench.desktop.main.js:38795

3)All loaded on windows

Thanks for checking. The logs confirm the diagnosis: extension icons in WSL are loaded via vscode-remote-resource://, and those requests fail with ERR_UNKNOWN_URL_SCHEME until you reload the window. This is the same bug as in this thread WSL: all extension icons break after restart (vscode-remote-resource:// blocked by CORS + ERR_UNKNOWN_URL_SCHEME), and it’s on our radar. There’s no ETA for a fix yet. Once I have an update, I’ll post it here.

A couple things in your logs that are worth flagging:

  1. You have A terminal backend with remote authority 'wsl+ubuntu' was already registered and Extension 'anysphere.remote-ssh' ... LOSES. This looks like a conflict between Microsoft Remote-WSL or Remote-SSH if you installed them manually from the marketplace and the built-in Anysphere Remote. If you have ms-vscode-remote.remote-wsl or ms-vscode-remote.remote-ssh installed, uninstall them and restart Cursor. It should behave more cleanly.

  2. Current workaround: run Ctrl+Shift+P and then Developer: Reload Window right after opening. You don’t need a full app restart.

Let me know if removing the MS extensions if they were installed also fixes the icon issue, or if you still need to reload the window every time.