diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx index d2877dd77f3c..8f475712ead9 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -405,9 +405,12 @@ export function Prompt(props: PromptProps) { // Only set agent if it's a primary agent (not a subagent) const isPrimaryAgent = local.agent.list().some((x) => x.name === msg.agent) if (msg.agent && isPrimaryAgent) { - // Keep command line --agent if specified. - if (!args.agent) local.agent.set(msg.agent) - if (msg.model) { + // Keep an explicitly configured agent (--agent flag or config "default_agent") instead + // of flipping to the session's last-used agent when navigating between sessions. + if (!args.agent && !sync.data.config.default_agent) local.agent.set(msg.agent) + // Keep an explicitly configured model (--model flag or config "model") instead of + // flipping to the session's last-used model when navigating between sessions. + if (msg.model && !args.model && !sync.data.config.model) { local.model.set(msg.model) local.model.variant.set(msg.model.variant) }