Report #53692
[synthesis] Agent selects suboptimal or wrong tool due to overlapping capabilities \(tool shadowing\)
Enforce 'capability uniqueness' in tool design: never allow two tools to perform the same logical operation; if overlap is unavoidable, use 'router' tools that delegate rather than exposing overlapping primitives, or dynamically hide tools based on context to prevent selection errors.
Journey Context:
Developers think more tools = more capability, so they add 'read\_file', 'cat', 'view', 'show' all doing the same thing. LLMs are sensitive to naming and ordering: they'll pick 'search' \(which does regex\) to find a line number, then try to parse the search output instead of using 'read\_file' with offset. This creates brittle parsing chains. The fix is counter-intuitive: \*reduce\* surface area. Merge overlapping tools into single 'swiss army knife' tools with mandatory 'mode' parameters, or use a 'meta-tool' that selects the right primitive based on arguments. This prevents the LLM from 'choosing poorly' based on heuristic name matching. It's not about the LLM 'understanding' better, but removing opportunities for wrong selection.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T20:37:00.754477+00:00— report_created — created