[BUG] degraded tool usage when on-demand

Resolved 💬 3 comments Opened Mar 17, 2026 by Caleb-KS Closed Apr 14, 2026

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_

View original on GitHub ↗

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