[BUG] Native macOS/Linux builds (>=v2.1.117) removed Glob/Grep tools, but model guidance still points to them — Claude reaches for tools that no longer exist

Open 💬 3 comments Opened Jun 21, 2026 by voidfreud

What's Wrong?

On native macOS/Linux builds, the Glob and Grep tools were removed in v2.1.117 and replaced by embedded ugrep/bfs routed through the Bash tool (per the v2.1.117 changelog). But the model's own operating guidance still tells it to "prefer dedicated tools over Bash" and to use Glob/Grep for search — and nothing signals to the model, in its guidance or at runtime, that those tools no longer exist on this build.

The result: Claude confidently announces it will use Glob/Grep, then has to scramble onto Bash when they aren't there, burning turns and tokens. This is the "fake model stupidity" several users have reported running into.

#51781 tracks the public documentation side of this change. This report is specifically about the model-facing guidance and runtime behavior, which #51781 does not address.

What Should Happen?

On native builds where Glob/Grep are removed, the model's guidance should reflect that file/content search now runs through Bash (embedded bfs/ugrep), and/or the model should receive a runtime signal that these tools are unavailable — so it never advertises or attempts tools that don't exist on the running build. The user-facing manuals should be updated in lockstep (tracked in #51781) so the model guidance, the docs, and the actual tool surface all agree.

Error Messages/Logs

No crash — behavioral. Example: the model says "I'll use the Grep tool to search…",
then finds no such tool in its tool list and falls back to a Bash `grep` call.

Steps to Reproduce

1. Use a native macOS or Linux build >= v2.1.117 (NOT the npm-installed or Windows build).
2. Start a session and ask Claude to search the codebase, or ask "do you have Grep and Glob?"
3. Per its guidance, Claude says it will use the Glob/Grep tools — but they are absent
   from its actual tool list on this build. It has no awareness they were removed.

Verification of the underlying change:
- `type grep` / `type find` inside the Bash tool show injected shell functions that
  re-exec the Claude binary via argv0 as `ugrep` / `bfs`.
- Changelog v2.1.117: "Native builds on macOS and Linux: the Glob and Grep tools are
  replaced by embedded bfs and ugrep available through the Bash tool."

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version.

Last Working Version

v2.1.116 — the build before the v2.1.117 tool swap, when the model guidance still matched the tool surface.

Claude Code Version

2.1.185 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other (cmux, Ghostty-backed)

Additional Information

Related: #51781 covers the public docs/SDK pages; this issue is the model-guidance/runtime-behavior counterpart, and the two should be fixed together so guidance + docs + tool surface stay consistent.

Minor adjacent note (not the focus here): the grep->ugrep shim is invoked with --ignore-files (gitignore-aware), but the find->bfs shim is not, so file search traverses gitignored paths like node_modules while content search doesn't.

View original on GitHub ↗

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