diff --git a/extensions/minimax/openclaw.plugin.json b/extensions/minimax/openclaw.plugin.json index 211a25ac72c..9484fe65fb4 100644 --- a/extensions/minimax/openclaw.plugin.json +++ b/extensions/minimax/openclaw.plugin.json @@ -6,7 +6,7 @@ "autoEnableWhenConfiguredProviders": ["minimax", "minimax-portal"], "nonSecretAuthMarkers": ["minimax-oauth"], "providerAuthEnvVars": { - "minimax": ["MINIMAX_API_KEY"], + "minimax": ["MINIMAX_CODE_PLAN_KEY", "MINIMAX_CODING_API_KEY", "MINIMAX_API_KEY"], "minimax-portal": ["MINIMAX_OAUTH_TOKEN", "MINIMAX_API_KEY"] }, "providerAuthChoices": [ diff --git a/src/infra/provider-usage.auth.plugin.test.ts b/src/infra/provider-usage.auth.plugin.test.ts index 93380d99f75..4cc79ee4235 100644 --- a/src/infra/provider-usage.auth.plugin.test.ts +++ b/src/infra/provider-usage.auth.plugin.test.ts @@ -263,6 +263,37 @@ describe("resolveProviderAuths plugin boundary", () => { expect(ensureAuthProfileStoreMock).not.toHaveBeenCalled(); }); + it("keeps plugin usage auth when provider-owned usage env credentials exist", async () => { + resolveProviderUsageAuthWithPluginMock.mockResolvedValueOnce({ + token: "plugin-minimax-token", + }); + + await withTempHome(async (homeDir) => { + await expect( + resolveProviderAuths({ + providers: ["minimax"], + skipPluginAuthWithoutCredentialSource: true, + env: { + HOME: homeDir, + MINIMAX_CODE_PLAN_KEY: "code-plan-key", + }, + }), + ).resolves.toEqual([ + { + provider: "minimax", + token: "plugin-minimax-token", + }, + ]); + }); + + expect(resolveProviderUsageAuthWithPluginMock).toHaveBeenCalledWith( + expect.objectContaining({ + provider: "minimax", + }), + ); + expect(ensureAuthProfileStoreMock).not.toHaveBeenCalled(); + }); + it("does not overlay external auth profiles while checking the skip gate", async () => { hasAnyAuthProfileStoreSourceMock.mockReturnValue(true); diff --git a/src/secrets/provider-env-vars.ts b/src/secrets/provider-env-vars.ts index c8dc009dd95..dd7e8deb32d 100644 --- a/src/secrets/provider-env-vars.ts +++ b/src/secrets/provider-env-vars.ts @@ -210,8 +210,6 @@ export function getProviderEnvVars( return Array.isArray(envVars) ? [...envVars] : []; } -const EXTRA_PROVIDER_AUTH_ENV_VARS = ["MINIMAX_CODE_PLAN_KEY", "MINIMAX_CODING_API_KEY"] as const; - // OPENCLAW_API_KEY authenticates the local OpenClaw bridge itself and must // remain available to child bridge/runtime processes. export function listKnownProviderAuthEnvVarNames(params?: ProviderEnvVarLookupParams): string[] { @@ -219,7 +217,6 @@ export function listKnownProviderAuthEnvVarNames(params?: ProviderEnvVarLookupPa ...new Set([ ...Object.values(resolveProviderAuthEnvVarCandidates(params)).flatMap((keys) => keys), ...Object.values(resolveProviderEnvVars(params)).flatMap((keys) => keys), - ...EXTRA_PROVIDER_AUTH_ENV_VARS, ]), ]; }