Bug
When using Plannotator’s Pi phase config to switch models between planning and execution, approving a plan updates the session model but the current in-flight agent loop continues using the planning model.
Example setup:
- Planning model:
openai-codex/gpt-5.5
- Executing model:
fireworks/accounts/fireworks/models/deepseek-v4-pro
~/.pi/agent/plannotator.json:
{
"phases": {
"executing": {
"model": {
"provider": "fireworks",
"id": "accounts/fireworks/models/deepseek-v4-pro"
}
}
}
}
After approving the plan, Pi records the model switch:
model_change openai-codex gpt-5.5
model_change fireworks accounts/fireworks/models/deepseek-v4-pro
custom plannotator-execute ...
custom plannotator { phase: "executing", ... }
But subsequent assistant messages in that same run still come from the planning model:
assistant openai-codex gpt-5.5 toolUse
assistant openai-codex gpt-5.5 toolUse
...
This means execution is still bounded by the planning model’s context window until a fresh user turn starts. In my case, execution eventually hit a Codex/GPT context-window error even though the visible/session model was DeepSeek V4 Pro.
Expected
After plan approval applies the executing phase config, implementation should run on the executing model.
If Pi snapshots the model at the start of an agent loop, then plan approval probably needs to become a turn boundary: approve the plan, stop the current run, then start execution in a fresh turn so Pi captures the executing model.
Workaround
After approving the plan, manually abort the current turn and send a fresh message like:
Continue executing the approved Plannotator plan.
That fresh turn correctly uses the configured executing model.
Bug
When using Plannotator’s Pi phase config to switch models between planning and execution, approving a plan updates the session model but the current in-flight agent loop continues using the planning model.
Example setup:
openai-codex/gpt-5.5fireworks/accounts/fireworks/models/deepseek-v4-pro~/.pi/agent/plannotator.json:{ "phases": { "executing": { "model": { "provider": "fireworks", "id": "accounts/fireworks/models/deepseek-v4-pro" } } } }After approving the plan, Pi records the model switch:
But subsequent assistant messages in that same run still come from the planning model:
This means execution is still bounded by the planning model’s context window until a fresh user turn starts. In my case, execution eventually hit a Codex/GPT context-window error even though the visible/session model was DeepSeek V4 Pro.
Expected
After plan approval applies the executing phase config, implementation should run on the executing model.
If Pi snapshots the model at the start of an agent loop, then plan approval probably needs to become a turn boundary: approve the plan, stop the current run, then start execution in a fresh turn so Pi captures the executing model.
Workaround
After approving the plan, manually abort the current turn and send a fresh message like:
That fresh turn correctly uses the configured executing model.