Agent tool's `model` override silently ignored — fork always runs as parent's model

Resolved 💬 3 comments Opened Apr 30, 2026 by CaseyLeask Closed May 31, 2026

Environment

  • Plan: Team
  • Surface: Claude Code CLI (Opus 4.7, 1M context)
  • Date observed: 2026-04-30

Description

The Agent tool documents a model parameter with enum: ["sonnet", "opus", "haiku"] that "takes precedence over the agent definition's model frontmatter." Passing "model": "sonnet" is accepted without error, the fork runs to completion, but the run is billed against the parent model (Opus) rather than the requested Sonnet.

Settings → Usage dashboard confirms 0% Sonnet used after multiple Agent dispatches with model: "sonnet" explicit, while All models weekly limit climbs proportionally to the Opus token counts reported in the task notification.

Repro

  1. From a Claude Code session running on Opus, dispatch:

``
Agent({
description: "tiny test",
isolation: "worktree",
model: "sonnet",
prompt: "Edit one file: bump a number from 0.25 to 0.18, run tests, push, report SHA."
})
``

  1. Wait for the task notification; note the <usage><total_tokens>...</total_tokens></usage> count.
  2. Open Settings → Usage on claude.ai/settings/usage. Observe Sonnet only shows 0% used despite the dispatched fork having completed.

Expected

Fork runs on Sonnet; Sonnet quota increments by the fork's token usage; All-models quota does not increment (or increments at Sonnet's lower rate).

Actual

Fork runs on the parent's model (Opus); Sonnet quota stays at 0%; All-models quota increments at Opus rates. A ~30-line numerical change cost ~557k tokens — consistent with Opus, not Sonnet.

Impact

Users hitting weekly limits on Team plan can't redirect mechanical/implementation forks to Sonnet to stay under quota. The documented model override is effectively a no-op.

Workaround

Avoid forks for small work; do edits inline in main thread. Reserve forks for genuinely large tool-output cases.

View original on GitHub ↗

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