From fa39a8746573979ca9d29bd6d25bd1a61c5f1a9a Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Wed, 18 Mar 2026 10:23:56 -0400 Subject: [PATCH] fix(model-resolver): prefer provider's recommended variant over saved base model (#1131) --- .../pi-coding-agent/src/core/model-resolver.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/pi-coding-agent/src/core/model-resolver.ts b/packages/pi-coding-agent/src/core/model-resolver.ts index 7318e0588..c168806be 100644 --- a/packages/pi-coding-agent/src/core/model-resolver.ts +++ b/packages/pi-coding-agent/src/core/model-resolver.ts @@ -504,6 +504,20 @@ export async function findInitialModel(options: { if (defaultProvider && defaultModelId) { const found = modelRegistry.find(defaultProvider, defaultModelId); if (found) { + // Check if the provider's recommended default is a higher-capability variant + // of the saved model (e.g. saved "claude-opus-4-6" vs recommended "claude-opus-4-6[1m]"). + // If so, prefer the recommended variant to avoid using a smaller context window (#1125). + const recommendedId = defaultModelPerProvider[defaultProvider as KnownProvider]; + if (recommendedId && recommendedId !== defaultModelId && recommendedId.startsWith(defaultModelId)) { + const recommended = modelRegistry.find(defaultProvider, recommendedId); + if (recommended) { + model = recommended; + if (defaultThinkingLevel) { + thinkingLevel = defaultThinkingLevel; + } + return { model, thinkingLevel, fallbackMessage: undefined }; + } + } model = found; if (defaultThinkingLevel) { thinkingLevel = defaultThinkingLevel;