Feature request: programmatic model switching mid-session
Context
We're building a multi-agent framework (BMAD) on top of Claude Code, using 12 specialized agents that hand off work to each other via the Skill tool. Each agent has an optimal model configured (e.g., opus for code review, sonnet for simpler checks).
Problem
When agents hand off to each other using the Skill tool, the next agent inherits the parent session's model. There is no way to programmatically change the model mid-session — the /model command exists but is interactive-only.
This means we're forced to either:
- Use the same model everywhere (expensive — opus for all 12 agents)
- Relaunch separate sessions (loses conversation context, costs more tokens to reconstitute)
Neither option is ideal.
Proposal
Any of the following would solve this elegantly:
modelparameter on the Skill tool — allow specifying the model when invoking a skill:
````
Skill tool -> skill: "my-agent", model: "sonnet"
- A
ModelSwitchtool — a tool that agents can call to change the session model while preserving context
- Any programmatic equivalent of
/model— the interactive command already proves mid-session model switching is technically possible
Why this matters
The Agent tool already supports a model parameter, which is great — but it creates an isolated subprocess that loses conversation context. Having similar control over the Skill tool (which preserves context) would enable cost-efficient multi-agent workflows without sacrificing quality.
Current workaround
All agents use opus to ensure correct model across handoff chains. This works but is more expensive than necessary for simpler agents.
Thank you for considering this! Claude Code is an amazing tool and this would make multi-agent workflows even more powerful.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗