Agent tool schema missing `model` parameter — blocks dynamic model routing at invocation time

Resolved 💬 2 comments Opened Mar 5, 2026 by emmahyde Closed Mar 5, 2026

Description

The Agent (Task) tool's JSON schema does not include a model parameter (was removed last night as far as I can tell). This means there is no way to specify a model when invoking a subagent at runtime.

The current schema accepts: description, prompt, subagent_type, isolation, mode, name, resume, run_in_background, team_name — but not model.

How this differs from previous issues

Previous issues (#9243, #11682, #18873) reported that a model parameter existed but was silently ignored or returned 404. This issue is different: the parameter has been removed from the tool schema entirely, so it cannot even be passed.

Impact

Our organization uses Claude Code agents extensively and routes to different models based on the type of problem being solved, not based on a static agent definition. For example:

  • A complex architectural question → Opus
  • A straightforward file search → Haiku
  • A standard implementation task → Sonnet

This routing decision is made dynamically at invocation time by the parent agent based on the problem context. Without a model parameter on the Agent tool, we cannot do this. The only current workaround is to define a separate agent .md file for every model variant (e.g., researcher-haiku.md, researcher-sonnet.md, researcher-opus.md), which is brittle, duplicative, and defeats the purpose of dynamic routing (not to mention incompatible with 3rd party plugins).

Expected behavior

The Agent tool schema should accept an optional model parameter (e.g., "model": "opus", "model": "haiku", "model": "sonnet") that overrides the default model for that subagent invocation. This would allow the parent agent to make cost/capability-appropriate model selections at runtime.

I support the idea of being ABLE to declare a DEFAULT model for an agent, but that is not mutually exclusive with overriding a model in response to dynamic issues, and this is a big miss for us.

Current workarounds

| Workaround | Limitation |
|---|---|
| Define separate agent files per model (foo-haiku.md, foo-opus.md) | Duplicative, doesn't scale, can't respond to problem complexity dynamically, incompatible with plugin architecture |
| Set model in agent frontmatter | Static — locks an agent type to one model regardless of task complexity |
| Change session model before spawning | Affects the entire session, not just the subagent |

Environment

  • Claude Code version: 2.1.49
  • Model: Opus 4.6 [1m] [Bedrock]
  • Platform: macOS (Darwin 25.3.0)

Related issues

  • #9243 — Original report of model parameter being ignored (closed)
  • #11682 — Task Tool Model Parameter Causes API 404 Error (closed as duplicate)
  • #18873 — Task tool model parameter returns 404 (open, stale)
  • #26740 — Feature: Per-tool model routing to optimize cost and latency (open)

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗