@@ -212,8 +212,8 @@ export function setOpenClawDefaultModel(provider: string, modelOverride?: string
212212 config . agents = agents ;
213213
214214 // Configure models.providers for providers that need explicit registration.
215- // For built -in providers this comes from registry; for custom/ollama-like
216- // providers callers can supply runtime overrides .
215+ // Built -in providers (anthropic, google) are part of OpenClaw's pi-ai catalog
216+ // and must NOT have a models. providers entry — it would override the built-in .
217217 const providerCfg = getProviderConfig ( provider ) ;
218218 if ( providerCfg ) {
219219 const models = ( config . models || { } ) as Record < string , unknown > ;
@@ -229,7 +229,6 @@ export function setOpenClawDefaultModel(provider: string, modelOverride?: string
229229 : [ ] ;
230230 const registryModels = ( providerCfg . models ?? [ ] ) . map ( ( m ) => ( { ...m } ) ) as Array < Record < string , unknown > > ;
231231
232- // Merge model entries by id and ensure the selected/default model id exists.
233232 const mergedModels = [ ...registryModels ] ;
234233 for ( const item of existingModels ) {
235234 const id = typeof item ?. id === 'string' ? item . id : '' ;
@@ -245,13 +244,25 @@ export function setOpenClawDefaultModel(provider: string, modelOverride?: string
245244 ...existingProvider ,
246245 baseUrl : providerCfg . baseUrl ,
247246 api : providerCfg . api ,
248- apiKey : providerCfg . apiKeyEnv ,
247+ apiKey : `\${ ${ providerCfg . apiKeyEnv } }` ,
249248 models : mergedModels ,
250249 } ;
251250 console . log ( `Configured models.providers.${ provider } with baseUrl=${ providerCfg . baseUrl } , model=${ modelId } ` ) ;
252251
253252 models . providers = providers ;
254253 config . models = models ;
254+ } else {
255+ // Built-in provider: remove any stale models.providers entry that may
256+ // have been written by an earlier version. Leaving it in place would
257+ // override the native pi-ai catalog and can break streaming/auth.
258+ const models = ( config . models || { } ) as Record < string , unknown > ;
259+ const providers = ( models . providers || { } ) as Record < string , unknown > ;
260+ if ( providers [ provider ] ) {
261+ delete providers [ provider ] ;
262+ console . log ( `Removed stale models.providers.${ provider } (built-in provider)` ) ;
263+ models . providers = providers ;
264+ config . models = models ;
265+ }
255266 }
256267
257268 // Ensure gateway mode is set
@@ -338,7 +349,7 @@ export function setOpenClawDefaultModelWithOverride(
338349 models : mergedModels ,
339350 } ;
340351 if ( override . apiKeyEnv ) {
341- nextProvider . apiKey = override . apiKeyEnv ;
352+ nextProvider . apiKey = `\${ ${ override . apiKeyEnv } }` ;
342353 }
343354
344355 providers [ provider ] = nextProvider ;
0 commit comments