Subagent UI label shows session model instead of per-agent model override

Open 💬 1 comment Opened Jul 8, 2026 by mrmartan

Description

When the main session runs on one model (Fable 5 / claude-fable-5) and subagents are dispatched via the Agent tool with an explicit model: "opus" override, the agents UI labels every spawned agent as Fable — the session's model — not the model the agent actually runs on.

The override itself IS honored: grepping the agents' JSONL transcripts (grep -o '"model":"[^"]*"' <task output_file>) shows every assistant message was generated by claude-opus-4-8 (the model field echoed in each API response), e.g.:

{"type": "assistant", "model": "claude-opus-4-8", "usage_in": 13766, "usage_out": 7}

So this is display-only, but it's misleading: the user believed a 15-agent review fan-out was burning Fable tokens (and challenged it twice) when it was running on Opus as requested.

Steps to reproduce

  1. Start a session on claude-fable-5.
  2. Have Claude dispatch a subagent: Agent(subagent_type: "general-purpose", model: "opus", ...).
  3. Observe the agent's model label in the agents/tasks UI: shows Fable.
  4. Grep the agent's transcript JSONL: all assistant messages are claude-opus-4-8.

Expected

The agent list should show the model the subagent actually resolved to (the per-agent override), not the parent session's model.

Environment

  • Claude Code CLI on macOS (darwin 25.4.0)
  • Session model: claude-fable-5; agent override: opus → claude-opus-4-8

🤖 Generated with Claude Code

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗