10. Models per role
Lets each role work with a different model (for example, a more powerful model for design and code and a faster one for the rest). It opens with Models per role… (agent menu or Roles panel) and also when creating a project.
- A table with each role, its Model and, for models that support it, the Reasoning (effort).
- Default uses the model the team suggests for the role (
modelinteam-ai-console.json; the app’s teams bring Opus for whoever designs, codes or reviews with risk and Sonnet for whoever documents) and, if the team does not suggest one, the model chosen in the top bar and, if there is none there either, the app default. The Roles panel shows the model each role works with. - Suggest fills in a proposal (Opus for design and code, Sonnet for the rest) with the models your plan includes; All default clears it.
- With Codex, the list of models is obtained from your account.
Where each role’s model comes from. On every turn, the app picks the model in this order and passes it to the agent:
- The role’s model in Models per role for this project.
- If there is none, the one the team suggests for that role (Claude Code only).
- If there is none, the one chosen in the project’s top bar.
- If there is none either, the app default model: Sonnet with Claude Code; with Codex, the one your account marks as default. In the top bar this option is called “App default (Sonnet)”.
Whatever you have configured outside the app in the agent (~/.claude/settings.json, variables such as ANTHROPIC_MODEL or ANTHROPIC_DEFAULT_SONNET_MODEL, or ~/.codex/config.toml) doesn’t change the roles’ model, not when switching roles nor in “Aside” with a role. If Codex doesn’t return its model list, the app uses the last one it knew and says so in the chat. If the chosen model isn’t available on your account, the app tells you (see Model not available when used); it never silently uses the agent’s own. The role and team editors and “Aside” with the model keep using their own selector.
Models by plan (Claude Code). The app reads the plan of your Claude Code session and only lets you choose the models it includes: the others appear disabled with “(not available on your plan)”. With Pro, Fable is not included (it can only be used by paying usage credits); with Max all of them are; with a session billed through the API, too. This applies to the models-per-role editor, the model that generates the documentation when adopting a project and the model that writes the handoff when changing team.
- Alternative. If the model that would apply is not on your plan, the closest one that is gets suggested (first a less powerful one, in the order Fable, Opus, Sonnet, Haiku) and the app says so: “Opus isn’t available on your plan; “Tech Lead” will use Sonnet.” You can change it. The same goes for the model the team suggests for a role: the alternative is used when sending the message.
- Unknown plan. If the app can’t tell which models your plan includes (not signed in, or a plan it doesn’t know, such as Team or Enterprise), it says so and you can choose any model.
- Model not available when used. If Claude Code rejects a model because your account doesn’t allow it, the chat shows “”{role}” can’t use {model} on your plan.” with Use {alternative} (changes that role’s model) and Choose another… (opens the models per role). The message is not resent on its own: send it again. From then on, until you close the app, that model appears as not available.
When moving from one role to another, the agent switches to that role’s model within the same conversation. Switching models reprocesses the conversation on the first turn, so it saves the most when a role works several turns in a row and in short chats.
A different agent for each role
If you have Claude Code and Codex installed, each role can work with either one in the same project: for example, the Product Owner with Claude Code and the Full Stack Developer with Codex. With only one agent installed nothing changes: the editor and the chat look as always.
- Where you choose it. In Models per role… (agent menu or Roles panel), which becomes Agent and model for each role. The table gets an Agent column with three options: Project (the default: the chat’s agent), Claude Code and Codex. Each row’s model and reasoning are those of its agent; reasoning only exists in Codex (“—” in Claude Code). Changing a role’s agent does not delete the model it had with the other one: it comes back when you pick that agent again. Propose only changes the Claude Code rows and All default also sets the agents back to “Project”. This editor, opened from the chat, is the only place to choose it: creating or adopting a project still has one tab per agent, without the Agent column.
- What the chat shows. The agent button in the top bar, the session next to it and the current step line of the Flow panel show the active role’s agent and change when the role changes.
- When you switch to a role with another agent. A session cannot move from one agent to another, so the chat leaves a note: “Now Codex (Full Stack Developer) is working. It starts a new session that begins from the sprint documents; it cannot see the previous conversation.” If that agent already had a session in the chat, the note is “{agent} ({role}) is back. It resumes its earlier session, which did not see what happened since…”. The incoming agent receives, without it showing in the chat, the flow state, the previous role’s last message and the list of sprint documents. Whatever was said in the chat and not written in a document does not reach it.
- If the assigned agent is not available (not installed, not signed in, or not included in your license), the project’s agent answers the turn and the chat says so: “Codex is not signed in. Claude Code answers this turn of Full Stack Developer.” The same sentence appears in the editor row. Nothing is blocked.
- Skills. If a role’s skills are not installed for the agent you assign to it, the editor and the agent-change note warn you (“The skills for “{role}” are not installed for Codex. You can continue; the role will work without them.”). It does not prevent sending.
- Stop, permissions and questions always go to the agent that has the turn.
- Project model. The model chosen in the top bar only applies to the chat’s agent; roles with the other agent use their model per role or, if they have none, the app default for that agent.
- The “Aside” chat and the role and team editors keep their own agent. Without the license’s Models per role feature, the Agent column is visible but cannot be changed.