Agent view row shows the parent/default model, not the per-spawn `model` override — same root cause you already fixed for `/agents` in #20291 (v2.1.199)
Summary
When a subagent is spawned via the Task/Agent tool with an explicit model
override (e.g. model: "fable"), the interactive agent view row (the panel
that opens below the status bar) displays the parent session's model, not the
override the subagent is actually running on. The subagent runs correctly on the
override; only the row's label is wrong.
This is the same wrong-source display bug already reported and fixed for the/agents command in #20291 (area:model, area:core, closed completed) —
just on a different surface that the fix didn't cover.
Why it matters
It's display-only — but the thing it displays wrong is *which model (and therefore
which quota/cost tier) a running agent is on*. That's exactly the fact you consult
the row to confirm. Concretely:
- You cannot trust the UI to verify that a
modeloverride took effect — you have
to go read the session transcript to know what's actually running.
- For anyone managing model routing or spend across a fleet of subagents, the one
at-a-glance surface that should answer "what is this agent costing me?" answers
with the parent's model instead.
It's a wrong-source read, not missing data (evidence)
The correct value is already present in the stream the row renders from. For a
subagent spawned with model: "fable" on an Opus 4.8 parent session:
- Row label:
4.8(the parent session's model). - The subagent's own transcript: every per-turn assistant response envelope
reports "message":{"model":"claude-fable-5", ...} — 10/10 turns, zero
claude-opus anywhere in the file.
So the resolved model is flowing through the same task event stream that drives
the row's live status; the row simply isn't reading it. This mirrors #20291,
where /agents showed the inherited/default model while the subagent ran on the
correct one.
Reproduce (~1 min)
- From a session on any model (e.g. Opus 4.8), spawn a subagent via the Task tool
with a different explicit model override, e.g. subagent_type: "general-purpose",
model: "fable" (any override that differs from the parent works).
- Open the agent's row in the view below the status bar → it shows the parent
model.
- Confirm the subagent is really on the override: read its task transcript
(.../tasks/<id>.output) — every assistant message.model is the override
model. Label and reality disagree.
Likely mechanism (inference — I can't see the renderer source)
The row appears to resolve its model label once, at spawn time, from the
agent-type default / parent inheritance, rather than binding to the subagent's
live resolved model. Two consequences that a fix should handle:
- Before the first turn there is no response envelope yet, so the pre-first-token
label should fall back to the requested override, not the parent.
- The model can legitimately change across turns (a workflow agent, or an agent
that itself delegates), so the label should track the current turn's
message.model, i.e. a live binding rather than a value set once.
Suggested fix (small, well-scoped)
Point the row's label at the resolved model already in the stream:row.model = latestAssistant.message.model ?? requestedOverride ?? configuredDefault
— reactive to the latest turn. This is the same class of fix that closed #20291
for /agents; it just needs to extend to the agent-view row / Task-tool surface.
Prior art / why this isn't a duplicate to auto-close
- #20291 — same root cause (parent/default shown instead of resolved model),
but scoped to the /agents command; closed completed. This report is the
uncovered surface of that fix, still reproducing on 2.1.199.
- #24094 ("show model name in tool call UI for subagents") — the adjacent
ask; closed not_planned / stale, so the correct-model display is currently
neither shipped nor tracked for the interactive surface.
Expected
The agent-view row shows the model the subagent is actually running on (the
resolved override), updating if it changes across turns.
Environment
Claude Code 2.1.199 · Linux · Task/Agent tool subagent with model override ·
parent session Claude Opus 4.8 · subagent resolved to claude-fable-5.
Ask
Could this be human-triaged (area:model / area:tui) and treated as the
unfixed surface of #20291's already-accepted root cause, rather than auto-deduped
against the /agents issue or the closed #24094? Happy to supply session JSONL
or additional repros.