Workflow tool: meta.phases[].model reads as a model override but is display-only - agents silently inherit an expensive session model
Summary
In a Workflow-tool script, the meta.phases entries accept a model field. The tool docs describe it as: "Add model to a phase entry when that phase uses a specific model override." This reads as if it sets the model for that phase's agents. It does not - it is display metadata only. The effective surface is opts.model on each individual agent() call, which defaults to inheriting the main-loop session model.
What happened
A ~35-agent research workflow was authored in a session running claude-fable-5 (premium tier). The script annotated every phase with model: 'opus' in meta.phases, and the authoring model stated "Opus throughout" - but omitted opts.model on the agent() calls. Every spawned agent silently ran on Fable. The user (subscription billing) reports roughly 10% of a weekly usage allowance consumed before the mismatch was caught - and it was caught only because the user happened to ask which model the agents were on. Nothing in the run surface (launch result, progress UI) warned that a premium session model was being inherited by a large fan-out.
Why this is a footgun
- Two surfaces accept the same field name (
model) with opposite effects: one is decorative, one is effective. The decorative one appears first in the documented script skeleton. - Inherit-by-default is the documented and usually correct behavior, but from a premium-tier session it silently multiplies the most expensive model across an entire fan-out.
- There is no launch-time echo of the resolved model per phase/agent, so the mistake is invisible until spend has occurred.
Suggested fixes (any of)
- Make
meta.phases[].modelactually set the default model foragent()calls in that phase, or reject/warn on the field if it remains display-only. - Echo the resolved model distribution in the Workflow launch result (e.g. "35 agents: 35x claude-fable-5") so a mismatch is visible before meaningful spend.
- An optional warning or confirmation when a workflow of more than N agents will inherit a top-tier session model with no explicit overrides.
Environment
- Claude Code CLI on macOS (Darwin 25.5.0), session model
claude-fable-5 - Workflow tool, background run; script authored inline by the session model
🤖 Generated with Claude Code