Glob tool fails to match files when pattern starts with a dotdirectory literal
Description
The Glob tool fails to find files when the pattern contains a literal dotdirectory prefix (e.g., .flightops/ARTIFACTS.md), even though the file exists and can be found via Read or via ** wildcard patterns.
Reproduction
Given a file at /home/user/project/.flightops/ARTIFACTS.md:
| Pattern | Path | Result |
|---------|------|--------|
| .flightops/ARTIFACTS.md | /home/user/project | Not found |
| .flightops/* | /home/user/project | Not found |
| **/ARTIFACTS.md | /home/user/project | Found |
Using Read on the full path /home/user/project/.flightops/ARTIFACTS.md succeeds, confirming the file exists.
Expected behavior
A literal dotdirectory in the glob pattern (e.g., .flightops/ARTIFACTS.md) should match the corresponding directory and file, since the user is explicitly naming it — not relying on wildcard expansion.
Actual behavior
Glob returns "No files found" when the pattern starts with a dotdirectory component, even without any wildcards.
Impact
This caused a false negative when checking for a prerequisite file (.flightops/ARTIFACTS.md), which blocked a workflow that depended on its existence. The workaround is to use Read instead of Glob for known paths, but this is a footgun since the tool silently returns no results rather than erroring.
Environment
- Claude Code CLI
- Platform: Linux (WSL2)
- Model: claude-opus-4-6
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗