To link your case to the existing issue, could you confirm a couple things?
Does it happen every time you open Cursor, or only sometimes?
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.
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.
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
A couple things in your logs that are worth flagging:
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.
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.