diff --git a/scripts/debug-claude-usage.ts b/scripts/debug-claude-usage.ts index 4a5d46ea1..58af153e5 100644 --- a/scripts/debug-claude-usage.ts +++ b/scripts/debug-claude-usage.ts @@ -69,7 +69,9 @@ const pickAnthropicTokens = (store: { }; const fetchAnthropicOAuthUsage = async (token: string) => { - const res = await fetch("https://api.anthropic.com/api/oauth/usage", { + const baseUrl = process.env.ANTHROPIC_BASE_URL?.trim() || "https://api.anthropic.com"; + const url = `${baseUrl}/api/oauth/usage`; + const res = await fetch(url, { headers: { Authorization: `Bearer ${token}`, Accept: "application/json", diff --git a/src/agents/models-config.providers.ts b/src/agents/models-config.providers.ts index 0cd034c82..11c19cc1e 100644 --- a/src/agents/models-config.providers.ts +++ b/src/agents/models-config.providers.ts @@ -246,6 +246,15 @@ export function normalizeProviders(params: { normalizedProvider = googleNormalized; } + // Apply ANTHROPIC_BASE_URL environment variable override + if (normalizedKey === "anthropic") { + const baseUrl = process.env.ANTHROPIC_BASE_URL?.trim(); + if (baseUrl && normalizedProvider.baseUrl !== baseUrl) { + mutated = true; + normalizedProvider = { ...normalizedProvider, baseUrl }; + } + } + next[key] = normalizedProvider; } @@ -396,6 +405,15 @@ export async function resolveImplicitProviders(params: { allowKeychainPrompt: false, }); + // Add Anthropic provider if ANTHROPIC_BASE_URL is set + const anthropicBaseUrl = process.env.ANTHROPIC_BASE_URL?.trim(); + if (anthropicBaseUrl) { + providers.anthropic = { + baseUrl: anthropicBaseUrl, + models: [], + }; + } + const minimaxKey = resolveEnvApiKeyVarName("minimax") ?? resolveApiKeyFromProfiles({ provider: "minimax", store: authStore }); diff --git a/src/infra/provider-usage.fetch.claude.ts b/src/infra/provider-usage.fetch.claude.ts index 654962c93..79fabda64 100644 --- a/src/infra/provider-usage.fetch.claude.ts +++ b/src/infra/provider-usage.fetch.claude.ts @@ -99,8 +99,10 @@ export async function fetchClaudeUsage( timeoutMs: number, fetchFn: typeof fetch, ): Promise { + const baseUrl = process.env.ANTHROPIC_BASE_URL?.trim() || "https://api.anthropic.com"; + const url = `${baseUrl}/api/oauth/usage`; const res = await fetchJson( - "https://api.anthropic.com/api/oauth/usage", + url, { headers: { Authorization: `Bearer ${token}`,