0.49.0 — Every agent pinned to Opus 5.5 at medium
⚠️ Your existing config does not change on its own
Setup never rewrites ~/.claude-workbench/dev-team-config.json without your say-so. After updating, re-run /workbench-dev-team:setup.
It compares each agent's model and effort against the new pin. For every agent that differs, it shows the current value and the replacement, then asks. Until you answer Replace, dispatch keeps using your old values, because config flags beat agent frontmatter.
📌 What changed
All three agents now ship the same exact pin:
| Agent | Before | Now |
|---|---|---|
| Lestrade | sonnet / high |
claude-opus-5-5[1m] / medium |
| Holmes | opus / high |
claude-opus-5-5[1m] / medium |
| Watson | opus / session effort |
claude-opus-5-5[1m] / medium |
lensModel, fanout, fallback, and maxBudgetUsd are unchanged.
🧭 Why
- Exact ID, not the
opusalias. The alias moves to the next Opus release without anyone approving it. [1m]. It keeps the 1M context window the agents budget their working context against.mediumfor all three, Holmes included. Anthropic publishes Opus 5.5 guidance on this. Atmedium, Opus 5.5 beats Opus 5 athighon coding and code review. At the same level, Opus 5.5 also thinks more per turn than Opus 5.
Watch Holmes's bounce and escalation rate after the switch. Raise it to high only if either gets worse.
🔧 How the pin reaches both dispatch paths
- Interactive. The Agent tool's
modelparameter accepts aliases only, and it overrides frontmatter. So setup's Step 6a now stampsmodelinto agent frontmatter alongsideeffort, and the orchestrate skill never passes that parameter. - Scheduled.
bin/dispatch-agent.shpasses--modeland--effortonly when the config names them. It keeps no baked-in model default. - Deliberate opt-outs.
CLAUDE_CODE_SUBAGENT_MODELwithCLAUDE_CODE_SUBAGENT_MODEL_FORCE=1beats the frontmatter model.CLAUDE_CODE_EFFORT_LEVELbeats--efforton the scheduled path.
🛡️ Hardening found in review
Two Holmes local reviews found six blockers, and all six are fixed:
- The model validator accepted a value spanning several lines. It now refuses any newline.
- A wrong-shaped config entry (for example
"watson": "opus") is reported for a manual fix, never offered for replacement. - A failed config write, including a failed
mv, now exits 1 and leaves the file byte-for-byte unchanged.
✅ Tests
New commands/test-config-pin.sh has 28 cases. agents/test-effort-stamp.sh and bin/test-dispatch-agent.sh now enforce the pin for all three agents. Every new guard was broken on purpose, and its test went red. The full suite passes.