## The problem

Issue crewAIInc/crewAI#4495 (closed, 30 comments): ### Description After upgrading CrewAI from 1.6.1 → 1.9.3, a custom tool wrapper around BedrockKBRetrieverTool no longer receives its required query argument. The tool call fails with: • ParsedBedrockKBRetrieverTool._run() missing 1 required positional argument: 'query' …and the agent repeatedly attempts to use the tool, effectively entering an infinite tool-calling loop. In crewai==1.6.1, the same code and workflow work as expected. The logs also show an events mismatch warning during the loop: [CrewAIEventsBus] Warning: Event pairing mismatch. 'tool_usage_finished' closed 'flow_started' (ex

## The verified fix

Reporter abdullahshahin's drive-by diagnosis: the tool-call args extraction fails before _run is reached, so query arrives as {} and the agent retries forever (watch for the tool_usage_finished-closing-flow_started pairing warning as the signal). If the wrapper subclasses BaseTool and overrides __init__, args_schema can be shadowed by Pydantic field resolution in 1.9.x  -  declaring args_schema on the subclass and re-passing it via super().__init__(args_schema=KBQueryInput) restores arg parsing.