From cecb6cf60044dd55d60a9b1cee0a301d107b8efa Mon Sep 17 00:00:00 2001 From: xingzhou Date: Mon, 6 Jul 2026 15:56:20 +0800 Subject: [PATCH] fix(openai): keep missing-auth hint on default model (#100579) --- .../openai-provider-missing-auth.test.ts | 32 +++++++++++++++++++ extensions/openai/openai-provider.ts | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 extensions/openai/openai-provider-missing-auth.test.ts diff --git a/extensions/openai/openai-provider-missing-auth.test.ts b/extensions/openai/openai-provider-missing-auth.test.ts new file mode 100644 index 00000000000..a835426a0ed --- /dev/null +++ b/extensions/openai/openai-provider-missing-auth.test.ts @@ -0,0 +1,32 @@ +import { afterEach, describe, expect, it, vi } from "vitest"; + +const FUTURE_DEFAULT_MODEL = "openai/gpt-next-default"; + +describe("OpenAI missing auth message", () => { + afterEach(() => { + vi.doUnmock("./default-models.js"); + vi.resetModules(); + }); + + it("uses the shared OpenAI default model in the ChatGPT/Codex OAuth hint", async () => { + vi.resetModules(); + vi.doMock("./default-models.js", async (importOriginal) => { + const actual = await importOriginal(); + return { + ...actual, + OPENAI_DEFAULT_MODEL: FUTURE_DEFAULT_MODEL, + OPENAI_CODEX_DEFAULT_MODEL: FUTURE_DEFAULT_MODEL, + }; + }); + + const { buildOpenAIProvider } = await import("./openai-provider.js"); + const provider = buildOpenAIProvider(); + + const message = provider.buildMissingAuthMessage?.({ + provider: "openai", + listProfileIds: (providerId: string) => (providerId === "openai" ? ["openai:codex"] : []), + } as never); + + expect(message).toContain(`Use ${FUTURE_DEFAULT_MODEL} with the ChatGPT/Codex OAuth profile`); + }); +}); diff --git a/extensions/openai/openai-provider.ts b/extensions/openai/openai-provider.ts index cb08efe9650..5f0ed2aaf11 100644 --- a/extensions/openai/openai-provider.ts +++ b/extensions/openai/openai-provider.ts @@ -871,7 +871,7 @@ export function buildOpenAIProvider(): ProviderPlugin { if (ctx.listProfileIds(PROVIDER_ID).length === 0) { return undefined; } - return 'No API key found for provider "openai". You are authenticated with OpenAI ChatGPT/Codex OAuth. Use openai/gpt-5.5 with the ChatGPT/Codex OAuth profile, or set OPENAI_API_KEY for direct OpenAI API access.'; + return `No API key found for provider "openai". You are authenticated with OpenAI ChatGPT/Codex OAuth. Use ${OPENAI_DEFAULT_MODEL} with the ChatGPT/Codex OAuth profile, or set OPENAI_API_KEY for direct OpenAI API access.`; }, matchesContextOverflowError: ({ errorMessage }) => /content_filter.*(?:prompt|input).*(?:too long|exceed)/i.test(errorMessage),