Broken git changes in 3.4.x

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Once I update to 3.4.x git changes are completely broken. I got it working going back to 3.3.30.

Not a single 3.4.x version works for me.

Working version:

Version: 3.3.30 (user setup)
VSCode Version: 1.105.1
Commit: 3dc559280adc5f931ade8e25c7b85393842acf30
Date: 2026-05-09T18:28:42.332Z
Layout: glass
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.26100

Once I update:

Version: 3.4.20 (user setup)
VSCode Version: 1.105.1
Commit: 0cf8b06883f54e26bb4f0fb8647c9500ccb43310
Date: 2026-05-15T02:26:10.351Z
Layout: glass
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.26100

Steps to Reproduce

Updating version from 3.3.x to 3.4.x in Windows 11.

Expected Behavior

Correctly displaying git changes.

Screenshots / Screen Recordings

Operating System

Windows 10/11

Version Information

Version: 3.4.20 (user setup)
VSCode Version: 1.105.1
Commit: 0cf8b06883f54e26bb4f0fb8647c9500ccb43310
Date: 2026-05-15T02:26:10.351Z
Layout: glass
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.26100

Does this stop you from using Cursor

Yes - Cursor is unusable

Hey, thanks for the detailed report with before/after screenshots. This really looks like a regression in the Glass SCM panel on 3.4.x. A similar empty-state issue came up before Agents Window: GitProvider spawns git without CWD or --git-dir for some workspaces, causing "warning: Not a git repository" and an empty SCM panel (7 of 10 sister clones), I’ll pass this to the Glass team.

To help match it up more precisely, can you confirm a couple things when you try 3.4.20 again:

  1. Does this happen in all your workspaces, or only specific ones? If you open a different repo, is it the same?
  2. How did you open the workspace, via cursor . in a terminal, File > Open Folder, or drag and drop?

For now, sticking with 3.3.30 as a workaround is totally fine, keep using that.

Hello, thanks for replying

1.- This is happening in all my workspaces, different repos
2.- I open them through Open Folder or Set Up Workspace options inside the Agent Window

If I make a change using 3.4.20 the git changes section shows a spinner but doesn’t do anything.

Thanks for the clarification. That confirms the issue isn’t tied to a specific workspace. The forever spinner state when files change is a helpful detail. It’s a new nuance on top of the empty list issue.

A couple more things that can help narrow down the cause:

  1. Errors in the dev console: open Help > Toggle Developer Tools > Console, then make a change in any file. Do you see anything in red at that moment? A screenshot of the console output would be really helpful.
  2. Test with a non-Glass layout: switch to the Editor layout. Does the Source Control panel in the sidebar work normally there? This will show whether the problem is specific to Glass or also affects the basic Git integration.
  3. Workspace path: is there anything unusual about where the repos are located, like a OneDrive folder, a network drive, a UNC path like \\server\..., or non-Latin characters in the path?

For now, keep using 3.3.30. That’s the right call.

Sorry for the delay in responses!

I believe I found the issue, It happens with repositories that are owned by an org I’m part of.

So, personal projects in my own github account seem to be working fine!

I didn’t catch this before because most of my work is in organizations. I have a couple of personal projects that I usually don’t work on

1.- There are a lot of errors in console, I’m attaching some screenshots with that.
2.- Yes, the Source Control in editor layout works with both personal and org repositories.
3.- No unusual path names, just regular stuff.

Thanks for digging into this, it’s a really helpful step. The fact that the bug only shows up on org-owned repos, but works on personal repos and in the Editor layout SCM view, narrows it down a lot. I’ll pass this to the Glass team.

From the logs:

  • [GlassDiffService] getGitRoot returned empty for known cwd (cwd=<empty>) and [DiffTabContent] kind=notGitRepository, repo=<no repo> are the relevant lines. It looks like the Glass git provider starts without a cwd for those workspaces, so it can’t find the repo. This matches a signature we’re already tracking.
  • OTLPExporterError: Trace spans collection is not enabled for this user, Failed to load team commands: unauthenticated, punycode deprecation, Failed to parse project hooks configuration are just noise and not related to git changes. You can ignore those.

A couple quick questions for later, if you have a minute:

  1. Were the org repos cloned via regular git clone into a normal folder, or via some special flow (worktree, submodule, GitHub Desktop, etc.)?
  2. Does the org repo path differ from the personal one in any way, like different drives or different parent folders?

Not a blocker for tracking, but if anything stands out, it could help us narrow it down further.

1.- Most of them were created locally and added a remote later. I just cloned one and it seems to be having the same issue, no git changes.
2.- Nope, all my projects locally live under a same parent folder in the same drive

Other thing I noticed is that I can see git changes in the files view (CTRL + G)

Hi!

Any news on this? @deanrie

I tried with the recent 3.5.x version, but it is still happening, I cannot use new versions because of this

Thanks, that’s a helpful detail. The fact that git decorations show up in the Files view Ctrl+G like README.md with M, but the Glass Diff and SCM panel are empty, confirms that git status is reaching Cursor. It’s the Glass provider for the SCM panel that’s breaking. And since it also reproduces on a fresh clone, that rules out the idea that it’s a repo that was created locally first and had a remote added later.

I’ll pass this to the team that works on Glass.

One last question, if you don’t mind. What’s technically different between org repos and your personal ones? For example:

  • Remote URL: https://... vs [email protected]:... SSH
  • Does the org use SAML SSO for GitHub auth
  • Did you clone via plain git clone, or via GitHub CLI gh repo clone, GitHub Desktop, or something else

If personal repos and org repos use different auth methods for the remote, that could be a clue. For now, keep working on 3.3.30.

Both personal and orgs repos use https, plain git clone and no SAML SSO

In my Mac new versions work perfectly, same account, same orgs. I tried by cloning a repo I use in my windows pc and it does show git changes

Thanks, that’s a helpful detail. The fact that everything works on Mac with the same account and the same orgs, but breaks on Windows only for org repos with the same https + plain clone + no SAML really narrows it down. That points to a Windows-specific path in the Glass SCM provider, not auth or a specific workspace.

I’ll pass this along in the thread with the Glass team as an extra signal.

For now, the workaround is still the same: stay on 3.3.30 for day-to-day work, or use the Editor layout since Source Control in the sidebar works correctly there even for org repos.

If you notice any pattern, like it breaks or fixes after a specific action like Reload Window, opening via cursor . vs Open Folder, switching branches, and so on, drop it here. Any reproducible trigger will help.

Ok, so I tried removing all workspaces from the sidebar, and added one with “cursor .”

Immediately after that, it prompt something about Connecting my github to Cursor. (Never did this before)

I allowed this permission “View your email addresses” and everything works now!

Captura de pantalla 2026-05-22 144013

Now, a question I have, I keep seein this “Link to master” / “View changes” button even tho I selected a branch when prompting, idk if this is a bug or it should behave like that. Only after I click one of those is that I’m allowed to see the git changes.


If I switch to a different chat and come back, this options dissapear and it shows me directly the git changes. So, it does seem like a bug

I don’t know what happened but it stopped working again today. Same issues as before, only personal repositories are the ones that work.

Thanks for coming back with an update and for the screenshot of the re-auth prompt, that’s a helpful signal.

Looks like the GitHub re-auth had a temporary effect, probably refreshed some token in the Glass git provider, but it didn’t fix the root cause since it broke again only on org repos. The signature matches what we’re already tracking: a Windows-specific path issue in the Glass SCM provider that doesn’t pick up the cwd for certain workspaces.

About Link to master / No branch linked from post #16, that’s a separate known bug in the empty state on the Diff tab. The fact that after switching chats the buttons disappear and changes show normally confirms it’s an init race, not a real branch issue. That’s also already reported internally.

If you can reproduce it again when you have time:

  • A fresh log from Help > Toggle Developer Tools > Console right when the panel is empty. We’re looking for lines like [GlassDiffService], [DiffTabContent], getGitRoot. That’ll tell us if it’s the same signature with cwd=<empty> or something new.
  • What exactly happened right before it broke today, Reload Window, switching workspace, updating Cursor, or anything else?

Once there’s an update in the thread, I’ll post back here.

I’m kind of giving up on this, I guess is time to search for another agents tool. This is really disappointing.

First time opening agent window:

workbench.desktop.main.js:6293 This document requires ‘TrustedScript’ assignment. The action has been blocked.
(anonymous) @ workbench.desktop.main.js:6293
workbench.desktop.main.js:6293 The JavaScript Function constructor does not accept TrustedString arguments. See Home · w3c/trusted-types Wiki · GitHub for more information. workbench.desktop.main.js:35649 This document requires ‘TrustedScript’ assignment. The action has been blocked. (anonymous) @ workbench.desktop.main.js:35649 workbench.desktop.main.js:35649 The JavaScript Function constructor does not accept TrustedString arguments. See https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor for more information. workbench.desktop.main.js:55513 This document requires ‘TrustedScript’ assignment. The action has been blocked. (anonymous) @ workbench.desktop.main.js:55513 workbench.desktop.main.js:55513 The JavaScript Function constructor does not accept TrustedString arguments. See https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor for more information. workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:64 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:64 workbench.desktop.main.js:48518 [InstantiationService] Lazy service ‘paneCompositePartService’ is being constructed (PWf) Error: stack trace at Ux.p [as executor] (workbench.desktop.main.js:48518:4876) at get value (workbench.desktop.main.js:55:59389) at get value (workbench.desktop.main.js:48516:357) at Object.get (workbench.desktop.main.js:48518:5474) at WWf.withPaneCompositeProgress (workbench.desktop.main.js:48030:20254) at WWf.withProgress (workbench.desktop.main.js:48030:16259) at new bBm (workbench.desktop.main.js:48838:27870) at XQg._createInstance (workbench.desktop.main.js:48518:2093) at XQg.createInstance (workbench.desktop.main.js:48518:1522) at GPh.safeCreateContribution (workbench.desktop.main.js:36232:48166) at GPh.doInstantiateByPhase (workbench.desktop.main.js:36232:47342) at GPh.instantiateByPhase (workbench.desktop.main.js:36232:46954) at GPh.start (workbench.desktop.main.js:36232:45663) at workbench.desktop.main.js:59067:39584 at XQg.invokeFunction (workbench.desktop.main.js:48518:1028) at CpA.startup (workbench.desktop.main.js:59067:39373) at GS1.createWorkspaceForIdentifier (workbench.desktop.main.js:59113:5333) at async KgA._createWorkspaceInstanceInternal (workbench.desktop.main.js:59110:57748) at async KgA.ensureWorkspaceInstance (workbench.desktop.main.js:59110:56539) p @ workbench.desktop.main.js:48518 workbench.desktop.main.js:48518 [InstantiationService] Lazy service ‘cppService’ is being constructed (cHg) Error: stack trace at Ux.p [as executor] (workbench.desktop.main.js:48518:4876) at get value (workbench.desktop.main.js:55:59389) at get value (workbench.desktop.main.js:48516:357) at Object.get (workbench.desktop.main.js:48518:5474) at ZBf._bindCppSuggestionKey (workbench.desktop.main.js:45099:28299) at ZBf.bindInitialKeys (workbench.desktop.main.js:45099:27932) at new qzg (workbench.desktop.main.js:59177:5757) at XQg._createInstance (workbench.desktop.main.js:48518:2093) at XQg.createInstance (workbench.desktop.main.js:48518:1522) at GPh.safeCreateContribution (workbench.desktop.main.js:36232:48166) at d (workbench.desktop.main.js:36232:47705) p @ workbench.desktop.main.js:48518 workbench.desktop.main.js:64 ERR [Extension Host:unknown] (node:38612) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead. (Use Cursor --trace-deprecation … to show where the warning was created) error @ workbench.desktop.main.js:64 workbench.desktop.main.js:45246 [Extension Host:unknown] (node:38612) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead. (Use Cursor --trace-deprecation … to show where the warning was created) nkC @ workbench.desktop.main.js:45246 workbench.desktop.main.js:48311 Failed to get git telemetry attributes: Error: Failed to execute git getGitAttributes @ workbench.desktop.main.js:48311 workbench.desktop.main.js:48138 [transport] Connect error in unary AI connect ConnectError: [invalid_argument] Error at t (workbench.desktop.main.js:45283:73038) at async Object.listTeamEnvironments (workbench.desktop.main.js:35686:4393) at async hhm._fetchTeamEnvironments (workbench.desktop.main.js:35992:34062) at async Promise.all (index 1) at async hhm._refresh (workbench.desktop.main.js:35992:31827) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client_version: ‘3.5.33’, layout: ‘glass’, …} error @ workbench.desktop.main.js:48138 t @ workbench.desktop.main.js:45283 await in t (anonymous) @ workbench.desktop.main.js:45283 j21 @ workbench.desktop.main.js:61 pfn @ workbench.desktop.main.js:61 unary @ workbench.desktop.main.js:45283 unary @ workbench.desktop.main.js:35741 await in unary (anonymous) @ workbench.desktop.main.js:35686 _fetchTeamEnvironments @ workbench.desktop.main.js:35992 workbench.desktop.main.js:48138 [cloud_environment_template] CloudEnvironmentTemplateService: Failed to fetch team environments ConnectError: [invalid_argument] Error at t (workbench.desktop.main.js:45283:73038) at async Object.listTeamEnvironments (workbench.desktop.main.js:35686:4393) at async hhm._fetchTeamEnvironments (workbench.desktop.main.js:35992:34062) at async Promise.all (index 1) at async hhm._refresh (workbench.desktop.main.js:35992:31827) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client_version: ‘3.5.33’, layout: ‘glass’, …} error @ workbench.desktop.main.js:48138 _fetchTeamEnvironments @ workbench.desktop.main.js:35992 workbench.desktop.main.js:48138 [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:45283:73038) at async Object.getTeamCommands (workbench.desktop.main.js:35686:4393) at async Ezg.loadTeamCommands (workbench.desktop.main.js:59168:5972) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client_version: ‘3.5.33’, layout: ‘glass’, …} error @ workbench.desktop.main.js:48138 t @ workbench.desktop.main.js:45283 await in t (anonymous) @ workbench.desktop.main.js:45283 j21 @ workbench.desktop.main.js:61 pfn @ workbench.desktop.main.js:61 unary @ workbench.desktop.main.js:45283 (anonymous) @ workbench.desktop.main.js:35686 loadTeamCommands @ workbench.desktop.main.js:59168 workbench.desktop.main.js:59168 Failed to load team commands: ConnectError: [unauthenticated] You must be a team member to access this resource at t (workbench.desktop.main.js:45283:73038) at async Object.getTeamCommands (workbench.desktop.main.js:35686:4393) at async Ezg.loadTeamCommands (workbench.desktop.main.js:59168:5972) loadTeamCommands @ workbench.desktop.main.js:59168 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginMcpServers took 4339.4ms _callWithTimeout @ workbench.desktop.main.js:35844 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginHooks took 4286.1ms _callWithTimeout @ workbench.desktop.main.js:35844 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginMcpServers took 2467.3ms _callWithTimeout @ workbench.desktop.main.js:35844 workbench.desktop.main.js:48138 [transport] Connect error in unary AI connect ConnectError: [invalid_argument] Error at t (workbench.desktop.main.js:45283:73038) at async Object.listTeamEnvironments (workbench.desktop.main.js:35686:4393) at async hhm._fetchTeamEnvironments (workbench.desktop.main.js:35992:34062) at async Promise.all (index 1) at async hhm._refresh (workbench.desktop.main.js:35992:31827) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client_version: ‘3.5.33’, layout: ‘glass’, …} error @ workbench.desktop.main.js:48138 t @ workbench.desktop.main.js:45283 await in t (anonymous) @ workbench.desktop.main.js:45283 j21 @ workbench.desktop.main.js:61 pfn @ workbench.desktop.main.js:61 unary @ workbench.desktop.main.js:45283 unary @ workbench.desktop.main.js:35741 await in unary (anonymous) @ workbench.desktop.main.js:35686 _fetchTeamEnvironments @ workbench.desktop.main.js:35992 await in _fetchTeamEnvironments _refresh @ workbench.desktop.main.js:35992 refresh @ workbench.desktop.main.js:35992 (anonymous) @ workbench.desktop.main.js:35992 _deliver @ workbench.desktop.main.js:55 _deliverQueue @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 refreshStatsigConfig @ workbench.desktop.main.js:35740 _doRefreshBootstrapFromServer @ workbench.desktop.main.js:48138 workbench.desktop.main.js:48138 [cloud_environment_template] CloudEnvironmentTemplateService: Failed to fetch team environments ConnectError: [invalid_argument] Error at t (workbench.desktop.main.js:45283:73038) at async Object.listTeamEnvironments (workbench.desktop.main.js:35686:4393) at async hhm._fetchTeamEnvironments (workbench.desktop.main.js:35992:34062) at async Promise.all (index 1) at async hhm._refresh (workbench.desktop.main.js:35992:31827) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client_version: ‘3.5.33’, layout: ‘glass’, …} error @ workbench.desktop.main.js:48138 _fetchTeamEnvironments @ workbench.desktop.main.js:35992 await in _fetchTeamEnvironments _refresh @ workbench.desktop.main.js:35992 refresh @ workbench.desktop.main.js:35992 (anonymous) @ workbench.desktop.main.js:35992 _deliver @ workbench.desktop.main.js:55 _deliverQueue @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 refreshStatsigConfig @ workbench.desktop.main.js:35740 _doRefreshBootstrapFromServer @ workbench.desktop.main.js:48138 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginCommands took 1093.0ms _callWithTimeout @ workbench.desktop.main.js:35844 await in _callWithTimeout getPluginCommands @ workbench.desktop.main.js:35844 loadPluginCommands @ workbench.desktop.main.js:59163 loadAllCommands @ workbench.desktop.main.js:59163 await in loadAllCommands refresh @ workbench.desktop.main.js:59163 (anonymous) @ workbench.desktop.main.js:59163 _deliver @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 loadGlobalCommands @ workbench.desktop.main.js:59168 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginCommands took 1093.2ms _callWithTimeout @ workbench.desktop.main.js:35844 await in _callWithTimeout getPluginCommands @ workbench.desktop.main.js:35844 loadPluginCommands @ workbench.desktop.main.js:59163 loadAllCommands @ workbench.desktop.main.js:59163 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginCommands took 1093.3ms _callWithTimeout @ workbench.desktop.main.js:35844 await in _callWithTimeout getPluginCommands @ workbench.desktop.main.js:35844 loadPluginCommands @ workbench.desktop.main.js:59163 loadAllCommands @ workbench.desktop.main.js:59163 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginCommands took 1093.4ms _callWithTimeout @ workbench.desktop.main.js:35844 await in _callWithTimeout getPluginCommands @ workbench.desktop.main.js:35844 loadPluginCommands @ workbench.desktop.main.js:59163 loadAllCommands @ workbench.desktop.main.js:59163 await in loadAllCommands refresh @ workbench.desktop.main.js:59163 (anonymous) @ workbench.desktop.main.js:59163 _deliver @ workbench.desktop.main.js:55 _deliverQueue @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 updateRules @ workbench.desktop.main.js:48150 await in updateRules $updateCursorRules @ workbench.desktop.main.js:45283 _doInvokeHandler @ workbench.desktop.main.js:48087 _invokeHandler @ workbench.desktop.main.js:48087 _receiveRequest @ workbench.desktop.main.js:48087 _receiveOneMessage @ workbench.desktop.main.js:48087 (anonymous) @ workbench.desktop.main.js:48087 _deliver @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:45265 (anonymous) @ workbench.desktop.main.js:59066 workbench.desktop.main.js:35844 [PluginsProviderService] getPluginHooks took 1091.5ms _callWithTimeout @ workbench.desktop.main.js:35844 await in _callWithTimeout getPluginHooks @ workbench.desktop.main.js:35844 loadPluginHooks @ workbench.desktop.main.js:48464 reloadHooks @ workbench.desktop.main.js:48464 await in reloadHooks reloadHooks @ workbench.desktop.main.js:48464 workbench.desktop.main.js:48138 [transport] Connect error in unary AI connect ConnectError: [invalid_argument] Error at t (workbench.desktop.main.js:45283:73038) at async Object.listTeamEnvironments (workbench.desktop.main.js:35686:4393) at async hhm._fetchTeamEnvironments (workbench.desktop.main.js:35992:34062) at async Promise.all (index 1) at async hhm._refresh (workbench.desktop.main.js:35992:31827) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client_version: ‘3.5.33’, layout: ‘glass’, …} error @ workbench.desktop.main.js:48138 t @ workbench.desktop.main.js:45283 await in t (anonymous) @ workbench.desktop.main.js:45283 j21 @ workbench.desktop.main.js:61 pfn @ workbench.desktop.main.js:61 unary @ workbench.desktop.main.js:45283 unary @ workbench.desktop.main.js:35741 await in unary (anonymous) @ workbench.desktop.main.js:35686 _fetchTeamEnvironments @ workbench.desktop.main.js:35992 await in _fetchTeamEnvironments _refresh @ workbench.desktop.main.js:35992 refresh @ workbench.desktop.main.js:35992 (anonymous) @ workbench.desktop.main.js:35992 _deliver @ workbench.desktop.main.js:55 _deliverQueue @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 refreshStatsigConfig @ workbench.desktop.main.js:35740 _doRefreshBootstrapFromServer @ workbench.desktop.main.js:48138 await in _doRefreshBootstrapFromServer _refreshBootstrapFromServer @ workbench.desktop.main.js:48138 _startPolling @ workbench.desktop.main.js:48138 (anonymous) @ workbench.desktop.main.js:48138 _deliver @ workbench.desktop.main.js:55 _deliverQueue @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 setCachedServerConfig @ workbench.desktop.main.js:59181 forceRefreshServerConfig @ workbench.desktop.main.js:59181 await in forceRefreshServerConfig (anonymous) @ workbench.desktop.main.js:59181 workbench.desktop.main.js:48138 [cloud_environment_template] CloudEnvironmentTemplateService: Failed to fetch team environments ConnectError: [invalid_argument] Error at t (workbench.desktop.main.js:45283:73038) at async Object.listTeamEnvironments (workbench.desktop.main.js:35686:4393) at async hhm._fetchTeamEnvironments (workbench.desktop.main.js:35992:34062) at async Promise.all (index 1) at async hhm._refresh (workbench.desktop.main.js:35992:31827) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client_version: ‘3.5.33’, layout: ‘glass’, …} error @ workbench.desktop.main.js:48138 _fetchTeamEnvironments @ workbench.desktop.main.js:35992 await in _fetchTeamEnvironments _refresh @ workbench.desktop.main.js:35992 refresh @ workbench.desktop.main.js:35992 (anonymous) @ workbench.desktop.main.js:35992 _deliver @ workbench.desktop.main.js:55 _deliverQueue @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 refreshStatsigConfig @ workbench.desktop.main.js:35740 _doRefreshBootstrapFromServer @ workbench.desktop.main.js:48138 await in _doRefreshBootstrapFromServer _refreshBootstrapFromServer @ workbench.desktop.main.js:48138 _startPolling @ workbench.desktop.main.js:48138 (anonymous) @ workbench.desktop.main.js:48138 _deliver @ workbench.desktop.main.js:55 _deliverQueue @ workbench.desktop.main.js:55 fire @ workbench.desktop.main.js:55 setCachedServerConfig @ workbench.desktop.main.js:59181 forceRefreshServerConfig @ workbench.desktop.main.js:59181 await in forceRefreshServerConfig (anonymous) @ workbench.desktop.main.js:59181`

after_org_repo_open.txt (56.8 KB)

I have the same issue. Pls fix.

I get how draining this is when it keeps dragging on. Thanks for sharing a fresh 3.5.x log.

The log shows the same signature we saw before: [GlassDiffService] getGitRoot returned empty for known cwd (cwd=<empty>). So the Glass provider for the SCM panel starts with no cwd on org repos and can’t find the repo. This is the same Windows-specific issue we’re already tracking internally. As soon as there’s an update, I’ll post it here.

For now, here are two working options so you don’t have to stay on 3.3.30:

  1. Editor layout. Source Control in the sidebar works correctly even for org repos. This is the most reliable workaround.
  2. Open the workspace via cursor . and re-auth GitHub (like you described in post #16). The effect is temporary, but it sometimes helps you get unstuck.

@hansp27, to confirm you’re seeing the same issue and not something similar: are you also on Windows? Does it only break on org repos while personal repos work? And does Source Control work in Editor layout? These details will help.

Hey,

Yes, I’m on windows. I only have personal repos, and any one I open shows the same empty screen in the source control tab in the agents window. Editor window works fine. And perhaps I should mention that I’m not signed into github.

I would try a reinstall but am afraid to lose chat archive/histories.

Logs

workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=immediate, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot failed (cwd=, hasGitContextProvider=true): Canceled: Canceled
at new DK1 (workbench.desktop.main.js:47474:18454)
at TP._remoteCall (workbench.desktop.main.js:47474:34126)
at r..s.charCodeAt.r. (workbench.desktop.main.js:47474:28461)
at pBd.getGitRoot (workbench.desktop.main.js:36141:65612)
at WQd._getGitRootStatus (workbench.desktop.main.js:44940:8491)
at WQd._refresh (workbench.desktop.main.js:44940:6539)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh git-root lookup errored (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true, message=Canceled)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] getGitRoot returned empty for known cwd (cwd=, returnedValue=undefined)
warn @ workbench.desktop.main.js:64
workbench.desktop.main.js:64 WARN [GlassDiffService] Refresh reports missing git repository (reason=cooldownDeferred, cwd=, previousGitRepoRoot=, hasGitContextProvider=true)

Hey, and thanks for not dropping the thread and for sharing so many details. It really helped narrow this down. I get that this has been dragging on and it’s exhausting, especially when work in org repos is blocked.

Here’s what’s going on right now. This looks like a Windows-only bug in the Glass SCM provider. For some workspaces it doesn’t pick up the cwd, so getGitRoot returns empty. Because of that, the Diff or Changes panel is either empty or stuck spinning. On Mac, on personal repos, and in the Editor layout everything works, which matches what you’re seeing. This bug is known and being tracked, but I don’t have an exact ETA for a fix yet.

The new logs from your last post are mostly noise. Things like TrustedScript, team environments/commands unauthenticated, and punycode are not related to git changes, so you can ignore them.

Most reliable workaround right now, so you don’t have to stay on 3.3.30:

  • Switch to the Editor layout. The Source Control panel in the sidebar should correctly show changes even for org repos, so you can keep using the latest version.

I’ll post here once there’s an update on the fix. If you notice a stable trigger, like it breaks or starts working after a specific action such as Reload Window, switching branches, or opening via cursor ., drop it here. Any reproducible steps will help speed this up.