[BUG] VS Code Extension: "@" file picker doesn't discover git submodule directories

Resolved 💬 3 comments Opened Apr 9, 2026 by jiwenc-nv Closed Apr 12, 2026

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

  1. Open a repository that contains git submodules (all initialized via git submodule update --init)
  2. In the Claude Code chat input, type @ to open the file picker
  3. 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).

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗