[BUG] VS Code Extension: "@" file picker doesn't discover git submodule directories
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
"@" file picker doesn't discover git submodule directories
Description
In the VS Code extension, the "@" file/folder picker does not find directories that are git submodule mount points. This makes it impossible to reference submodule paths via the "@" autocomplete.
<img width="525" height="308" alt="Image" src="https://github.com/user-attachments/assets/a8e3ec6e-5d8e-4d0d-aa86-e6b8ea7369ba" />
What Should Happen?
Pick up my folder mounted with git submodules. Note that claude CLI works as inteneded:
<img width="683" height="317" alt="Image" src="https://github.com/user-attachments/assets/608c3fa5-42c5-42ca-93f7-ff5ca13d41f3" />
Error Messages/Logs
Steps to Reproduce
- Open a repository that contains git submodules (all initialized via
git submodule update --init) - In the Claude Code chat input, type
@to open the file picker - Search for a top-level folder that is a submodule mount point
Expected: All top-level directories appear, including submodule mount points.
Actual: Submodule-mounted directories are missing from the picker results.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
v2.1.96 (Claude Code VS Extension)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
VS Code integrated terminal
Additional Information
Environment
- Claude Code VS Code extension
- Repository with multiple git submodules (18 submodules across nested paths)
- Linux (devcontainer)
Root cause (suspected)
Git submodules contain their own .git reference (either a .git directory or a .git file pointing to ../.git/modules/). The file discovery logic likely treats these as separate repository boundaries and skips them during traversal.
In the parent repo's index, submodules are tracked as "gitlinks" (special index entries), not as regular directory trees. If the picker relies on git ls-files without --recurse-submodules, the submodule paths appear as opaque file-like entries rather than traversable directories.
Related issues
- #7852 — Add git submodule path support for LS, Grep, and Glob tools
- #15192 — File autocomplete doesn't work for uninitialized git submodules
Workaround
Manually type the full path instead of using "@" autocomplete (e.g., paste Teleop/src/file.cpp directly).
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗