[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
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.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗