[BUG] degraded tool usage when on-demand
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
I have used claude code over several months daily. When claude code switched to loading mcp tools on-demand, there was a noticeable degradation of "smartness" in using tools, like it's reading only the mcp tool names instead of descriptions.
- calls the wrong tool
- calls a tool with incorrect argument names (guesses at the names, like pullRequestID instead of prID)
- ignores existence of tools and tries Bash() or other ways to do the task
In addition, I have also seen the built-in Explore() agent make poor choices for searching through files. Basically, it will keep trying to use grep and sed in Bash() (and prompt me for permission many times) instead of using built-in Search or Read tools. If I deny permission and say "prefer built-in tools," then it will switch to using the built-in tools like it should.
What Should Happen?
Tool choice should be smarter.
Error Messages/Logs
Steps to Reproduce
Make a git mcp server (to do common git operations like commit, push, branch, etc.). I did this to avoid getting prompted for permissions when claude does Bash(git...). There are other tools I have that also manifest this problem, but this might get you a repro case.
Make sure that you have enough mcp servers that the git mcp is loaded on demand (or set your %context to get all loaded on demand).
Then ask claude to commit some files. It will likely use Bash(git) even though there are git tools.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.76
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗