You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I searched existing issues and did not find a duplicate.
I included enough detail to reproduce or investigate the problem.
Area
apps/desktop
Steps to reproduce
Open app
Open settings
Go to "Source Control"
Find "Version control"
See that Git is enabled and disallow to disable:
Expected behavior
I can disable version control feature at all. The setting seems to exist, but it appears useless because it cannot be changed. It looks like an error.
Actual behavior
Can't disable version control. I have an extremely large repository. The folder .git size almost 300 GB. Sure, all requests to Git are quite slow and take a long time. Using it from within the T3 code is not possible. Actually, this is an SVN repository. I'm just using git-svn. I would prefer simply turning off work with version control.
Verdict: Confirmed. The Version Control switch is a read-only detection indicator, not a preference, and there is no supported way to turn Git off for a project. Not a regression, and not a duplicate of the fetch-interval work.
What happened
The reporter opens Settings → Source Control → Version Control, sees Git enabled, and cannot turn it off. They want Git integration off entirely. The project is a git-svn checkout whose .git directory is about 300 GB, so Git commands from T3 Code are too slow to use.
The issue does not include an app version or OS. The control on current main matches the screenshot description.
Diagnosis
The switch was never a setting. DiscoveryItemRow renders it as availability only, and disabled is hardcoded:
For Git, checked is true when git --version succeeds and the driver is marked implemented. That flag is a constant in SourceControlDiscovery, not a user preference. The row subtitle is only "Available". Jujutsu is the "Coming Soon" row and has no switch. This UI has been non-interactive since the VCS settings page landed in #2435.
Nothing in settings, project config, or .t3code/vcs.json can opt out. Allowed kinds are git, jj, and unknown. auto and unknown still detect Git. An invalid kind such as svn falls back to auto. Forcing jj fails, because only the Git driver is registered.
Opening the project still treats any directory inside the checkout as a Git repo (git rev-parse --is-inside-work-tree). A status subscription then runs git status --porcelain=2 --branch and git diff HEAD --numstat. The local status cache lives for 1 second, so the UI can repeat those commands. Background fetch is separate: the balanced profile fetches about every 30 seconds, performance about every 15 seconds. Setting the Git fetch interval to 0, or using the battery-saver profile, skips later upstream fetches after one initial remote refresh. It does not stop local status, branch listing, worktrees, or checkpoints.
The same page is the shared web UI, so desktop and the website both show it. Mobile does not have this settings page.
Steps to reproduce
Install Git and open a Git repository in T3 Code.
Open Settings → Source Control.
Under Version Control, try to turn Git off.
The switch stays on and does not accept input. No other control disables version control for that project.
Environment
Not reported. Reproduced from source on current main (apps/web settings, used by the desktop app). No machine logs; this is behavior in the client, not a crash.
Evidence
Switch: apps/web/src/components/settings/SourceControlSettings.tsx (checked from discovery, disabled fixed, label ${item.label} availability).
No opt-out: packages/contracts/src/vcs.ts (VcsDriverKind), apps/server/src/vcs/VcsProjectConfig.ts, apps/server/src/vcs/VcsDriverRegistry.ts (auto always detects Git; only git is registered).
Cost that remains: readStatusDetailsLocal in apps/server/src/vcs/GitVcsDriverCore.ts; STATUS_RESULT_CACHE_TTL is 1 second in apps/server/src/git/GitManager.ts.
Fetch interval 0 only skips later remote refreshes: makeRemoteRefreshLoop in apps/server/src/vcs/VcsStatusBroadcaster.ts.
#4773 is idle CPU from VCS and provider refresh, not a missing off switch.
Fix applied or workaround
No change was made on a machine.
Partial relief only: expand the Git row and set Fetch interval to 0, or set Background activity to battery saver. That stops repeating automatic fetches. Local git status and git diff, and thread worktrees, still run. There is no supported workaround that disables version control.
Recommendation
Keep the issue open. The report is right that the control looks broken. The missing product behavior is a per-project "don't use version control" mode that makes detection return no repository and skips status, worktrees, and checkpoints. Replacing the disabled switch with a "Detected" badge would fix the misleading UI by itself and would not help the 300 GB git-svn case.
A real off switch is a product decision: diffs, restore, and new threads assume Git. Do not treat a settings-only visual toggle as the fix.
Activity
juliusmarminge commentedon Sep 25, 2026
Triage: #13595 — Can't disable Git
Verdict: Confirmed. The Version Control switch is a read-only detection indicator, not a preference, and there is no supported way to turn Git off for a project. Not a regression, and not a duplicate of the fetch-interval work.
What happened
The reporter opens Settings → Source Control → Version Control, sees Git enabled, and cannot turn it off. They want Git integration off entirely. The project is a git-svn checkout whose
.gitdirectory is about 300 GB, so Git commands from T3 Code are too slow to use.The issue does not include an app version or OS. The control on current
mainmatches the screenshot description.Diagnosis
The switch was never a setting.
DiscoveryItemRowrenders it as availability only, anddisabledis hardcoded:For Git,
checkedis true whengit --versionsucceeds and the driver is marked implemented. That flag is a constant inSourceControlDiscovery, not a user preference. The row subtitle is only "Available". Jujutsu is the "Coming Soon" row and has no switch. This UI has been non-interactive since the VCS settings page landed in #2435.Nothing in settings, project config, or
.t3code/vcs.jsoncan opt out. Allowed kinds aregit,jj, andunknown.autoandunknownstill detect Git. An invalid kind such assvnfalls back toauto. Forcingjjfails, because only the Git driver is registered.Opening the project still treats any directory inside the checkout as a Git repo (
git rev-parse --is-inside-work-tree). A status subscription then runsgit status --porcelain=2 --branchandgit diff HEAD --numstat. The local status cache lives for 1 second, so the UI can repeat those commands. Background fetch is separate: the balanced profile fetches about every 30 seconds, performance about every 15 seconds. Setting the Git fetch interval to 0, or using the battery-saver profile, skips later upstream fetches after one initial remote refresh. It does not stop local status, branch listing, worktrees, or checkpoints.The same page is the shared web UI, so desktop and the website both show it. Mobile does not have this settings page.
Steps to reproduce
The switch stays on and does not accept input. No other control disables version control for that project.
Environment
Not reported. Reproduced from source on current
main(apps/websettings, used by the desktop app). No machine logs; this is behavior in the client, not a crash.Evidence
apps/web/src/components/settings/SourceControlSettings.tsx(checkedfrom discovery,disabledfixed, label${item.label} availability).apps/server/src/sourceControl/SourceControlDiscovery.ts(gitprobe,implemented: true).packages/contracts/src/vcs.ts(VcsDriverKind),apps/server/src/vcs/VcsProjectConfig.ts,apps/server/src/vcs/VcsDriverRegistry.ts(autoalways detects Git; onlygitis registered).readStatusDetailsLocalinapps/server/src/vcs/GitVcsDriverCore.ts;STATUS_RESULT_CACHE_TTLis 1 second inapps/server/src/git/GitManager.ts.makeRemoteRefreshLoopinapps/server/src/vcs/VcsStatusBroadcaster.ts.Related issues
git fetch. Closed by [codex] add configurable automatic git fetch interval #2605. Fetch interval 0 does not disable Git.Fix applied or workaround
No change was made on a machine.
Partial relief only: expand the Git row and set Fetch interval to 0, or set Background activity to battery saver. That stops repeating automatic fetches. Local
git statusandgit diff, and thread worktrees, still run. There is no supported workaround that disables version control.Recommendation
Keep the issue open. The report is right that the control looks broken. The missing product behavior is a per-project "don't use version control" mode that makes detection return no repository and skips status, worktrees, and checkpoints. Replacing the disabled switch with a "Detected" badge would fix the misleading UI by itself and would not help the 300 GB git-svn case.
A real off switch is a product decision: diffs, restore, and new threads assume Git. Do not treat a settings-only visual toggle as the fix.
Filed by: Cursor Grok 4.7, triage only. No PR.