github / github/copilot-cli

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

オープン
#4,271 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
area:tools
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

## 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: [""]` →
`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 →
`/2026/07/26.md` ✔
4. `glob` with `pattern: "inbox.md"`, same paths →
`/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 `/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)

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず組み込みの glob ツールとそのパス照合の実装を見つけ、次に、記載されたファイルを含むリポジトリに対して issue の 4 つのパターンを再現します。相対パターンがパスのルートとどのように比較されるかを追跡します。複数セグメントの相対パターンが既存のファイルにマッチし、既存の単一セグメントおよび **/ のケースが引き続き機能すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
shell
領域
cli, tooling
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
55/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。