Git diff fails at a SUBST drive root but works at the underlying local folder
- Dominant language
- TypeScript
- Stars
- 193k
- Forks
- 42.4k
- PR merge metrics
- PR metrics pending
Description
Type: Bug
## Environment
- VS Code: 1.137.0, x64
- Commit: `645f29cc3176500b4b5762ba887cf2a7f0ffdf2c`
- Windows build: 26200
- Git: 2.51.0.windows.1
## Reproduction
Use a new disposable folder and an unused drive letter. In PowerShell:
```powershell
mkdir C:\vscode-drive-root-repro
git -C C:/vscode-drive-root-repro init
Set-Content C:\vscode-drive-root-repro\README.md 'Original text'
git -C C:/vscode-drive-root-repro add README.md
git -C C:/vscode-drive-root-repro commit -m 'Initial commit'
Set-Content C:\vscode-drive-root-repro\README.md 'Changed text'
subst R: C:\vscode-drive-root-repro
code --new-window R:\
```
1. Open Source Control and click the modified `README.md`.
2. The diff editor fails with: **“The editor could not be opened because the file was not found.”**
3. Open the underlying folder directly:
`code --new-window C:\vscode-drive-root-repro`
4. Click the same modified file in Source Control. The diff works.
The above uses the same setup as the confirmed reproduction at `C:\testdir`.
Git commit requires a configured author identity. After closing the test window,
remove the temporary drive mapping with `subst R: /D`.
## Expected behavior
The diff should work through both paths to the same local repository.
## Actual evidence
The repository is discovered and changes are listed through `R:\`, but the Git
filesystem provider cannot associate the historical-content URI with it:
```text
[Model][openRepository] Opened repository (path): r:\
[Model][openRepository] Opened repository (real path): C:\testdir
[Model][openRepository] Opened repository (kind): repository
[GitFileSystemProvider][readFile] Repository not found - git:/r%3A/README.md?%7B%22path%22%3A%22r%3A%5C%5CREADME.md%22%2C%22ref%22%3A%22~%22%7D
[GitFileSystemProvider][stat] Repository not found - git:/r%3A/README.md?%7B%22path%22%3A%22r%3A%5C%5CREADME.md%22%2C%22ref%22%3A%22~%22%7D
```
`git -C R:/ diff -- README.md` succeeds and displays the expected change.
No network storage or third-party filesystem driver is required to reproduce.
## Possible cause
Inspection of the installed Git extension's repository-containment helper
suggests that removing a trailing separator before Windows path normalization
turns a drive root such as `R:\` into drive-relative `R:.`. An isolated test of
that helper rejected child paths under drive roots but accepted repository
subfolders. This is a suspected cause, not a verified fix.
This specific local reproduction has not yet been repeated with optional
extensions disabled or on Insiders.
VS Code version: Code 1.137.0 (645f29cc3176500b4b5762ba887cf2a7f0ffdf2c, 2026-09-08T13:43:59-07:00)
OS version: Windows_NT x64 10.0.26200
Modes:
System Info
|Item|Value|
|---|---|
|CPUs|Intel(R) Core(TM) Ultra 7 155H (22 x 2995)|
|GPU Status|2d_canvas: enabled
GPU0: VENDOR= 0x8086, DEVICE=0x7d55 [Intel(R) Arc(TM) Pro Graphics], DRIVER_VENDOR=Intel, DRIVER_VERSION=32.0.101.8517 *ACTIVE*
GPU1: VENDOR= 0x10de, DEVICE=0x28ba [NVIDIA RTX 500 Ada Generation Laptop GPU], DRIVER_VERSION=32.0.15.9658
GPU2: VENDOR= 0x1414, DEVICE=0x008c [Microsoft Basic Render Driver], DRIVER_VERSION=10.0.26100.9278
Machine model name:
Machine model version:
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
trees_in_viz: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgpu: enabled
webnn: disabled_off|
|Load (avg)|undefined|
|Memory (System)|63.51GB (36.20GB free)|
|Process Argv|--crash-reporter-id e5c5885a-ae58-4058-8a02-0cf4edc53e49|
|Screen Reader|no|
|VM|0%|
Extensions (56)
Name|Identifier|Author|Version
---|---|---|---
TypeScript + Webpack Problem Matchers|amodio.tsl-problem-matcher|amodio|0.6.2
IBMi Languages|barrettotte.ibmi-languages|barrettotte|0.7.0
Continue - open-source AI code agent|continue.continue|Continue|2.0.0
ESLint|dbaeumer.vscode-eslint|dbaeumer|3.0.34
Dioxus|dioxuslabs.dioxus|DioxusLabs|0.7.3
Docker DX|docker.docker|docker|0.18.0
Prettier - Code formatter|esbenp.prettier-vscode|esbenp|12.4.0
Dependi|fill-labs.dependi|fill-labs|1.5.0
Go|golang.go|golang|0.56.1
Code for IBM i|halcyontechltd.code-for-ibmi|halcyontechltd|3.0.13
Code for IBM i Walkthroughs|halcyontechltd.vscode-ibmi-walkthroughs|halcyontechltd|0.5.0
Prettier SQL VSCode|inferrinizzard.prettier-sql-vscode|inferrinizzard|1.6.0
SSH FS|kelvin.vscode-sshfs|Kelvin|1.27.0
Pretty Formatter|mblode.pretty-formatter|mblode|0.3.1
Container Tools|ms-azuretools.vscode-containers|ms-azuretools|2.5.0
Docker|ms-azuretools.vscode-docker|ms-azuretools|2.0.0
Python Debugger|ms-python.debugpy|ms-python|2026.6.0
Python|ms-python.python|ms-python|2026.4.0
Pylance|ms-python.vscode-pylance|ms-python|2026.3.1
Python Environments|ms-python.vscode-python-envs|ms-python|1.36.0
Jupyter|ms-toolsai.jupyter|ms-toolsai|2025.9.1
Jupyter Keymap|ms-toolsai.jupyter-keymap|ms-toolsai|1.1.2
Jupyter Notebook Renderers|ms-toolsai.jupyter-renderers|ms-toolsai|1.3.0
Jupyter Cell Tags|ms-toolsai.vscode-jupyter-cell-tags|ms-toolsai|0.1.9
Jupyter Slide Show|ms-toolsai.vscode-jupyter-slideshow|ms-toolsai|0.1.6
WSL|ms-vscode-remote.remote-wsl|ms-vscode-remote|0.104.3
CMake Tools|ms-vscode.cmake-tools|ms-vscode|1.24.42
C/C++ DevTools|ms-vscode.cpp-devtools|ms-vscode|0.6.18
C/C++|ms-vscode.cpptools|ms-vscode|1.35.0
C/C++ Extension Pack|ms-vscode.cpptools-extension-pack|ms-vscode|1.5.1
Extension Test Runner|ms-vscode.extension-test-runner|ms-vscode|0.0.14
JavaScript Debugger (Nightly)|ms-vscode.js-debug-nightly|ms-vscode|2026.9.1108
Makefile Tools|ms-vscode.makefile-tools|ms-vscode|0.12.17
RPG|nielsliisberg.rpg|NielsLiisberg|0.2.1
Codex – OpenAI’s coding agent|openai.chatgpt|openai|26.908.40401
Material Icon Theme|pkief.material-icon-theme|PKief|5.38.1
IceBreak IFS|pno.icebreak-ifs|PNO|0.2.2
Thunder Client|rangav.vscode-thunder-client|rangav|2.41.1
Language Support for Java(TM) by Red Hat|redhat.java|redhat|1.56.0
XML|redhat.vscode-xml|redhat|0.29.3
rust-analyzer|rust-lang.rust-analyzer|rust-lang|0.3.3041
IceTerm|sitemule.iceterm|sitemule|0.1.3
Even Better TOML|tamasfe.even-better-toml|tamasfe|0.21.2
Tauri|tauri-apps.tauri-vscode|tauri-apps|0.2.9
CodeLLDB|vadimcn.vscode-lldb|vadimcn|1.12.3
Spring Boot Extension Pack|vmware.vscode-boot-dev-pack|vmware|0.2.2
Spring Boot Tools|vmware.vscode-spring-boot|vmware|2.4.0
GitHub Copilot modernization|vscjava.migrate-java-to-azure|vscjava|1.23.0
Gradle for Java|vscjava.vscode-gradle|vscjava|3.18.0
Debugger for Java|vscjava.vscode-java-debug|vscjava|0.59.0
Project Manager for Java|vscjava.vscode-java-dependency|vscjava|0.27.6
Extension Pack for Java|vscjava.vscode-java-pack|vscjava|0.31.1
Test Runner for Java|vscjava.vscode-java-test|vscjava|0.46.0
Maven for Java|vscjava.vscode-maven|vscjava|0.45.3
Spring Boot Dashboard|vscjava.vscode-spring-boot-dashboard|vscjava|0.14.0
Spring Initializr Java Support|vscjava.vscode-spring-initializr|vscjava|0.12.0
A/B Experiments
```
vsliv368:30146709
vswsl492:30256859
binariesv615:30325510
nativeloc1:31344060
dwcopilot:31170013
dwoutputs:31242946
copilot_t_ci:31333650
e5gg6876:31282496
pythonrdcb7:31342333
6518g693:31463988
aj953862:31281341
envsactivate1:31551504
478i5457:31544283
cloudbuttont:31379625
3efgi100_wstrepl:31403338
ddidtcf:31399634
ec5jj548:31422691
cp_cls_t_966_ss:31526232
4je02754:31466945
c3h7c220:31478652
cp_cls_c_1081:31454833
conptydll_true:31498968
e9c30283:31461165
46204921:31447328
capico_bxe_098a3278:31582665
ei9d7968:31496641
chat:31457767
8hig5102:31480529
89g7j272:31518289
i2gc6536:31499202
52612955:31516516
ec1eg703:31520046
ddid_c:31478207
hmra_i5g22:31518061
7df3h592:31512476
cp_cls_t_1082:31535311
logging_enabled_new:31498466
j0d79568:31499440
jb_cp_cls_t_632:31543129
56dj4588:31512888
32d76977:31512328
ha629193:31508444
jh5f2457_c:31540921
jbcp_cls_pctr_t:31531130
cp_intellij_t_nes:31548657
jf4hg949:31526829
ahp-both-windows:31556933
ihg5j128:31534457
7g2b5551:31542111
enable_editor_pane_layout:31569726
allow-none:31555437
36h42362:31564511
c7c27ce7:31554789
1h923230:31564177
treatment-23-1:31555779
unuse_dynamic_mcp:31555281
0d8dfbc3:31570291
a1hcc538:31559322
0c1h4866:31566224
vrbsty_tr:31561058
session-mark-done:31558131
5b8j3302:31564601
mangle-name-control:31572633
allow-signed-out:31581176
intellij_nes_preview_t:31580086
39a5d156:31574986
2bfb8b39:31576696
soft:31581111
aw-autom-off:31582551
revealsession_control_7ed7e840:31582193
```
Contributor guide
Assessment
This issue has not been assessed yet.