@@ -120,6 +120,19 @@ export function getBestModel(): ModelName {
120120 return getDefaultOpusModel ( )
121121}
122122
123+ /**
124+ * Resolve the provider's primary model from its env var (e.g. OPENAI_MODEL).
125+ * Returns undefined for providers that don't have a primary-model env var
126+ * (Bedrock, Vertex, Foundry, firstParty).
127+ */
128+ function getProviderPrimaryModel ( ) : ModelName | undefined {
129+ const provider = getAPIProvider ( )
130+ if ( provider === 'openai' ) return process . env . OPENAI_MODEL
131+ if ( provider === 'gemini' ) return process . env . GEMINI_MODEL
132+ if ( provider === 'grok' ) return process . env . GROK_MODEL
133+ return undefined
134+ }
135+
123136// @[MODEL LAUNCH]: Update the default Opus model (3P providers may lag so keep defaults unchanged).
124137export function getDefaultOpusModel ( ) : ModelName {
125138 const provider = getAPIProvider ( )
@@ -138,10 +151,12 @@ export function getDefaultOpusModel(): ModelName {
138151 if ( process . env . ANTHROPIC_DEFAULT_OPUS_MODEL ) {
139152 return process . env . ANTHROPIC_DEFAULT_OPUS_MODEL
140153 }
141- // 3P providers (Bedrock, Vertex, Foundry) all publish Opus 4.7 in sync
142- // with firstParty as of 2026-04-17 (AWS Bedrock, Google Vertex AI, and
143- // Microsoft Foundry announcements and model catalogs all confirm). The
144- // branch is kept as a structural hook in case a future launch lags on 3P.
154+ // 3P providers: if user set a primary model (e.g. OPENAI_MODEL=glm-5.1),
155+ // fall back to it instead of a hardcoded Anthropic model. This prevents
156+ // sideQuery / background tasks from sending requests to Anthropic's API
157+ // when the user configured a third-party provider.
158+ const primaryModel = getProviderPrimaryModel ( )
159+ if ( primaryModel ) return primaryModel
145160 if ( provider !== 'firstParty' ) {
146161 return getModelStrings ( ) . opus47
147162 }
@@ -166,7 +181,11 @@ export function getDefaultSonnetModel(): ModelName {
166181 if ( process . env . ANTHROPIC_DEFAULT_SONNET_MODEL ) {
167182 return process . env . ANTHROPIC_DEFAULT_SONNET_MODEL
168183 }
169- // Default to Sonnet 4.5 for 3P since they may not have 4.6 yet
184+ // 3P providers: fall back to user's primary model instead of a hardcoded
185+ // Anthropic model name. Prevents background API calls from being routed to
186+ // Anthropic when the user configured a third-party endpoint.
187+ const primaryModel = getProviderPrimaryModel ( )
188+ if ( primaryModel ) return primaryModel
170189 if ( provider !== 'firstParty' ) {
171190 return getModelStrings ( ) . sonnet45
172191 }
@@ -191,6 +210,10 @@ export function getDefaultHaikuModel(): ModelName {
191210 if ( process . env . ANTHROPIC_DEFAULT_HAIKU_MODEL ) {
192211 return process . env . ANTHROPIC_DEFAULT_HAIKU_MODEL
193212 }
213+ // 3P providers: fall back to user's primary model instead of a hardcoded
214+ // Anthropic model name.
215+ const primaryModel = getProviderPrimaryModel ( )
216+ if ( primaryModel ) return primaryModel
194217
195218 // Haiku 4.5 is available on all platforms (first-party, Foundry, Bedrock, Vertex)
196219 return getModelStrings ( ) . haiku45
0 commit comments