Symptom
A native tool call whose arguments JSON is an array, string, or number reaches fn(**args) and raises TypeError: dict argument ....
Evidence what you'll see
parse_tool_call_args('["oops"]', "get_weather", "call_1")JSON-decodes the string and returns a list, with no error.- Native tool execution in
agent_utilsthen uses that value as kwargs.
Why it happens
parse_tool_call_args returns whatever type json.loads produced. A JSON array, string, or number is not a mapping, so later fn(**args) raises TypeError. The issue says native tool calls do not coerce non-object JSON to a dict.
Affected versions
Windows 11, Python 3.12, crewAI checkout main as named in the report. The linked issue does not name a released crewai version.
Fix steps
0 of 2 done
Your check marks stay in this browser only.
How to check it worked
parse_tool_call_args('["oops"]', "get_weather", "call_1")returns an error instead of a list, andfn(**args)is not called.
If it still fails
- A 18 Oct 2026 stale comment says the issue had been open 30 days with no activity. Pull request 7576 was still open at that time.
- The linked issue does not give a workaround other than avoiding non-object arguments JSON.
Sources and credit
Summarized in our own words from these public reports. Credit goes to their authors.
Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change
Hit an error we don't cover? Submit it