Workflow tool's subagents fail every tool call - permission handler strips required parameters
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?
Subagents spawned via the Workflow tool fail every single tool call they attempt (WebSearch, WebFetch, Bash, Read, Glob, ToolSearch), all with the same error:
"The permission handler returned updatedInput for <Tool> that failed schema validation: <Tool> failed due to the following issue: The required parameter <param> is missing. This is a configuration issue in your canUseTool callback, PermissionRequest hook, or permission-prompt tool"
This happened on 30/30 subagents in one batch, 100% failure rate across 6 different tool types. No hooks are configured in my project or user settings, so this isn't a user-side config problem, it looks like the harness's own auto-approval layer for headless Workflow subagents is stripping required parameters from the call before it reaches the tool.
A secondary issue: after tool calls fail, the subagent reports its structured output (e.g. {"found": false}), which itself gets rejected with "Output does not match required schema: root: must have required property 'found'", even though the property is clearly present.
Plain Agent-tool subagents in the same session do NOT have this problem, they call tools successfully. This isolates the bug to Workflow's specific subagent permission path.
What Should Happen?
Workflow-spawned subagents should be able to call standard tools the same way Agent-tool subagents do, since both are headless/non-interactive and should share a working auto-approval path.
Error Messages/Logs
The permission handler returned updatedInput for ToolSearch that failed schema validation: ToolSearch failed due to the following issue:
The required parameter `query` is missing
This is a configuration issue in your canUseTool callback, PermissionRequest hook, or permission-prompt tool...
Output does not match required schema: root: must have required property 'found'
(despite the submitted payload being {"found": false} / {"found": true})
pipeline[0..29] failed: agent({schema}): StructuredOutput retry cap (5) exceeded — 5 failed calls with no valid output
Usage: agent_count: 30, agents_done: 0, agents_error: 30, subagent_tokens: 1,040,208, tool_uses: 417
Steps to Reproduce
- In a Claude Code session, call the Workflow tool with a script using pipeline() to fan out over N items, where each stage calls agent(prompt, {schema}) and the prompt asks the subagent to use a tool (e.g. WebSearch).
- Observe that the subagent's tool call is rejected immediately with a "permission handler returned updatedInput... failed schema validation... required parameter is missing" error, for every tool type attempted.
- Compare against Agent tool: launch an equivalent single Agent() call (not via Workflow) with the same prompt, it succeeds normally.
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.220 (Claude Code)
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Terminal.app (macOS)
Additional Information
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗