From e3040c3b3b29b7f3069e3891f48d99786a67e3f1 Mon Sep 17 00:00:00 2001 From: kapelame Date: Thu, 13 Aug 2026 19:32:25 +0800 Subject: [PATCH] fix: use bearer auth for MiniMax in Claude Code --- .../connector/agentdaemon/model_injection.go | 7 ++++++ .../agentdaemon/model_injection_test.go | 25 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/server/internal/connector/agentdaemon/model_injection.go b/server/internal/connector/agentdaemon/model_injection.go index bb86dd1..77c0382 100644 --- a/server/internal/connector/agentdaemon/model_injection.go +++ b/server/internal/connector/agentdaemon/model_injection.go @@ -306,6 +306,13 @@ func injectClaudeManagedModel(opts map[string]any, modelID string, mr store.Mode // (ANTHROPIC_AUTH_TOKEN). When both vars are set Claude Code prefers // AUTH_TOKEN, so set only the one matching the scheme. authScheme := stringFromMap(mr.ProviderConfig, "auth_scheme") + if authScheme == "" { + switch strings.ToLower(strings.TrimSpace(mr.ProviderType)) { + case "minimax-cn", "minimax-en": + // MiniMax's Claude Code setup uses Authorization: Bearer. + authScheme = "bearer" + } + } if authScheme == "bearer" { delete(env, "ANTHROPIC_API_KEY") env["ANTHROPIC_AUTH_TOKEN"] = apiKey diff --git a/server/internal/connector/agentdaemon/model_injection_test.go b/server/internal/connector/agentdaemon/model_injection_test.go index 4e4520b..5f7d2c2 100644 --- a/server/internal/connector/agentdaemon/model_injection_test.go +++ b/server/internal/connector/agentdaemon/model_injection_test.go @@ -506,6 +506,31 @@ func TestInjectManagedModel_BearerAuthScheme_InjectsAuthToken(t *testing.T) { } } +func TestInjectManagedModel_MiniMaxDefaultsToAuthToken(t *testing.T) { + for _, providerType := range []string{"minimax-cn", "minimax-en"} { + t.Run(providerType, func(t *testing.T) { + opts := map[string]any{} + mr := store.ModelRuntime{ + ModelID: "model-minimax", + ModelKey: "MiniMax-M3", + ProviderType: providerType, + Adapter: "@ai-sdk/anthropic", + BaseURL: "https://api.minimax.io/anthropic", + } + if err := injectClaudeManagedModel(opts, mr.ModelID, mr, "sk-minimax"); err != nil { + t.Fatalf("injectClaudeManagedModel: %v", err) + } + env := opts["env"].(map[string]any) + if got := env["ANTHROPIC_AUTH_TOKEN"]; got != "sk-minimax" { + t.Fatalf("ANTHROPIC_AUTH_TOKEN=%v, want sk-minimax", got) + } + if _, exists := env["ANTHROPIC_API_KEY"]; exists { + t.Fatal("ANTHROPIC_API_KEY should not be set for MiniMax Claude Code") + } + }) + } +} + // ---------------------------------------------------------------------- // applySpecMemoryInjection // ----------------------------------------------------------------------