[BUG] general-purpose subagents don't receive deferred tools (WebSearch, WebFetch)
Description
general-purpose subagents (spawned via the Agent tool) do not have access to deferred tools like WebSearch and WebFetch. These tools are completely absent from the subagent's available tool list — not a permission denial, but the tools simply don't exist in the subagent's context.
Meanwhile, Explore and claude-code-guide subagent types do receive WebSearch and WebFetch and use them successfully.
Steps to reproduce
- Open Claude Code (tested on v2.1.88)
- Have
WebSearch(*)andWebFetch(*)in~/.claude/settings.json→permissions.allow - Spawn a
general-purposesubagent with a task that requires web search:
````
Agent(subagent_type="general-purpose", prompt="Use WebSearch to find the latest FastAPI version")
- The subagent responds: "I don't have access to WebSearch tool — it's not in my available tools"
- Now spawn an
Exploreorclaude-code-guidesubagent with the same task:
````
Agent(subagent_type="Explore", prompt="Use WebSearch to find the latest FastAPI version")
- The subagent successfully uses WebSearch and returns results.
Root cause analysis
WebSearch and WebFetch are deferred tools — they are not loaded into the tool list upfront but resolved on demand via ToolSearch. The general-purpose subagent type is documented as having "Tools: *", but this wildcard apparently does not include deferred tools. Subagent types that explicitly list WebSearch in their tool definitions (Explore, claude-code-guide) receive the tool correctly.
Expected behavior
general-purpose subagents with "Tools: *" should have access to all tools available in the parent session, including deferred tools like WebSearch and WebFetch.
Actual behavior
general-purpose subagents have no access to WebSearch/WebFetch. The tools are not in their tool list at all. tool_uses: 0 in the subagent response.
Impact
This is a significant regression for research-heavy workflows. Users who rely on subagents for parallel web research get zero results from general-purpose agents, which is the default type. The workaround (using Explore or claude-code-guide types) is not obvious and limits functionality since those types lack write tools (Edit, Write).
Environment
- Claude Code version: 2.1.88
- OS: Linux (Ubuntu)
- Permission mode: default
WebSearch(*)explicitly inpermissions.allow
Workaround
Use subagent_type="Explore" or subagent_type="claude-code-guide" instead of general-purpose when web search is needed. Note: neither of these types can edit files, so tasks requiring both web search and code modification must be split across multiple agents.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗