From 7f369f75dce8dbb1d5dde9b63c51219e46614533 Mon Sep 17 00:00:00 2001 From: Kenneth Wong Date: Fri, 10 Jul 2026 00:39:19 +0800 Subject: [PATCH 1/2] fix: claude model no get the 1m tag --- .../config/extended-context-config.ts | 50 ++++++++++++++----- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/src/cliproxy/config/extended-context-config.ts b/src/cliproxy/config/extended-context-config.ts index 7c63c68c..1b55b784 100644 --- a/src/cliproxy/config/extended-context-config.ts +++ b/src/cliproxy/config/extended-context-config.ts @@ -13,9 +13,12 @@ import type { CLIProxyProvider } from '../types'; import { supportsExtendedContext } from '../model-catalog'; import { warn } from '../../utils/ui'; import { + ANTHROPIC_MODEL_ENV_KEYS, applyExtendedContextPreferenceToAnthropicModels, applyExtendedContextSuffix as applyExtendedContextSuffixShared, + hasExtendedContextSuffix, isNativeGeminiModel, + stripExtendedContextSuffix, stripModelConfigurationSuffixes, } from '../../shared/extended-context-utils'; @@ -73,20 +76,41 @@ export function applyExtendedContextConfig( provider: CLIProxyProvider, extendedContextOverride?: boolean ): void { - if (extendedContextOverride === false) { - Object.assign(envVars, applyExtendedContextPreferenceToAnthropicModels(envVars, false)); + if (extendedContextOverride === true || extendedContextOverride === false) { + Object.assign( + envVars, + applyExtendedContextPreferenceToAnthropicModels(envVars, extendedContextOverride, { + supportsExtendedContext: (modelId) => + shouldApplyExtendedContext( + provider, + stripModelConfigurationSuffixes(modelId), + extendedContextOverride + ), + }) + ); return; } - Object.assign( - envVars, - applyExtendedContextPreferenceToAnthropicModels(envVars, true, { - supportsExtendedContext: (modelId) => - shouldApplyExtendedContext( - provider, - stripModelConfigurationSuffixes(modelId), - extendedContextOverride - ), - }) - ); + // Auto mode (no explicit --1m/--no-1m this launch): don't force-strip a + // previously saved [1m] preference just because the model is Claude — only + // strip when the model no longer supports extended context. Native Gemini + // models still get auto-toggled based on catalog support. + for (const key of ANTHROPIC_MODEL_ENV_KEYS) { + const value = envVars[key]; + if (typeof value !== 'string' || value.trim().length === 0) { + continue; + } + const modelId = stripModelConfigurationSuffixes(value); + + if (isNativeGeminiModel(modelId)) { + envVars[key] = supportsExtendedContext(provider, modelId) + ? applyExtendedContextSuffixShared(value) + : value; + continue; + } + + if (hasExtendedContextSuffix(value) && !supportsExtendedContext(provider, modelId)) { + envVars[key] = stripExtendedContextSuffix(value); + } + } } From 5943c8fa3cc16814e7f3cd44279f1a11be3b3609 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Mon, 13 Jul 2026 09:14:04 -0400 Subject: [PATCH 2/2] fix: strip stale Gemini extended context suffixes --- .../__tests__/extended-context-config.test.ts | 20 +++++++++++++++++++ .../config/extended-context-config.ts | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/cliproxy/ai-providers/__tests__/extended-context-config.test.ts b/src/cliproxy/ai-providers/__tests__/extended-context-config.test.ts index 9d241a3a..33e84ed2 100644 --- a/src/cliproxy/ai-providers/__tests__/extended-context-config.test.ts +++ b/src/cliproxy/ai-providers/__tests__/extended-context-config.test.ts @@ -168,6 +168,26 @@ describe('applyExtendedContextConfig', () => { expect(env.ANTHROPIC_MODEL).toBe('gemini-2.5-pro(high)[1m]'); }); + it('preserves a saved [1m] preference for supported Claude models in auto mode', () => { + const env: NodeJS.ProcessEnv = { + ANTHROPIC_MODEL: 'claude-sonnet-4-5-20250929[1m]', + }; + + applyExtendedContextConfig(env, 'claude', undefined); + + expect(env.ANTHROPIC_MODEL).toBe('claude-sonnet-4-5-20250929[1m]'); + }); + + it('strips a stale [1m] preference from unsupported native Gemini models', () => { + const env: NodeJS.ProcessEnv = { + ANTHROPIC_MODEL: 'gemini-2.5-flash[1m]', + }; + + applyExtendedContextConfig(env, 'gemini', undefined); + + expect(env.ANTHROPIC_MODEL).toBe('gemini-2.5-flash'); + }); + it('handles empty env vars gracefully', () => { const env: NodeJS.ProcessEnv = {}; applyExtendedContextConfig(env, 'gemini', undefined); diff --git a/src/cliproxy/config/extended-context-config.ts b/src/cliproxy/config/extended-context-config.ts index 1b55b784..98115888 100644 --- a/src/cliproxy/config/extended-context-config.ts +++ b/src/cliproxy/config/extended-context-config.ts @@ -105,7 +105,7 @@ export function applyExtendedContextConfig( if (isNativeGeminiModel(modelId)) { envVars[key] = supportsExtendedContext(provider, modelId) ? applyExtendedContextSuffixShared(value) - : value; + : stripExtendedContextSuffix(value); continue; }