github / github/copilot-cli

`glob` tool false-negatives on any multi-segment pattern unless prefixed with `**/`

Open
#4,271 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:tools
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

Describe the bug

The built-in glob tool returns "No files matched the pattern." for any
pattern containing a path separator
, unless the pattern is prefixed with
**/. Literal relative paths (2026/07/26.md) and wildcarded multi-segment
patterns (2026/07/*.md) both fail even though the files exist directly under
the given paths root. Single-segment patterns (inbox.md, *.md) and
**/-prefixed patterns work.

This is worse than an inconvenience: the agent trusts the empty result. In one
session the agent checked for a file with its exact relative path, got no
match, and confidently declared the file missing — then acted on that false
premise.

Affected version

1.0.70-0 (running as the VS Code Agent Sessions CLI backend; macOS arm64)

Steps to reproduce the behavior

Against a repo containing 2026/07/26.md and inbox.md at the root:

  1. glob with pattern: "2026/07/26.md", paths: ["<repo>"]
    No files matched the pattern. (file exists)
  2. glob with pattern: "2026/07/*.md", same paths →
    No files matched the pattern. (31 files exist there)
  3. glob with pattern: "**/07/26.md", same paths →
    <repo>/2026/07/26.md
  4. glob with pattern: "inbox.md", same paths →
    <repo>/inbox.md

So the failure is specifically: multi-segment pattern not prefixed with
**/. It looks like the matcher compares patterns against basenames (or a
single path segment) unless a globstar forces full-path matching.

Expected behavior

A relative pattern is resolved against the given paths roots, per standard
glob semantics: 2026/07/26.md matches <root>/2026/07/26.md. At minimum,
the tool description should say patterns must be **/-prefixed to traverse
directories — but fixing the matching is much better than documenting the
trap, since empty results are treated as evidence of absence.

Additional context

  • OS: macOS 26.5.2, arm64
  • Observed both from VS Code Agent Sessions and reproduced deterministically
    (4 calls above, same session, seconds apart)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the built-in glob tool and its path-matching implementation, then reproduce the four patterns from the issue against a repository containing the listed files. Trace how relative patterns are compared with the paths roots. Done means multi-segment relative patterns match existing files while the existing single-segment and **/ cases continue to work.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
cli, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.