From d8ded0d4ecd5688ebc9d1dd4ed4156128b484188 Mon Sep 17 00:00:00 2001 From: Naved Date: Fri, 10 Jul 2026 18:58:43 -0700 Subject: [PATCH 1/2] feat(openai): add GPT-5.6 family (sol, terra, luna) support Add the GPT-5.6 model family to both the OpenAI Codex (ChatGPT subscription) and OpenAI Native (API) providers: - gpt-5.6-sol: flagship frontier reasoning/coding model - gpt-5.6-terra: balanced everyday model - gpt-5.6-luna: fastest, most affordable family member Update the default model id for both providers to gpt-5.6-sol and update the corresponding unit test assertions. Closes #871 --- packages/types/src/providers/openai-codex.ts | 52 ++++++++++++- packages/types/src/providers/openai.ts | 74 ++++++++++++++++++- .../providers/__tests__/openai-codex.spec.ts | 2 +- .../providers/__tests__/openai-native.spec.ts | 2 +- 4 files changed, 126 insertions(+), 4 deletions(-) diff --git a/packages/types/src/providers/openai-codex.ts b/packages/types/src/providers/openai-codex.ts index fc80db3893..0f12b35d6b 100644 --- a/packages/types/src/providers/openai-codex.ts +++ b/packages/types/src/providers/openai-codex.ts @@ -16,7 +16,7 @@ import type { ModelInfo } from "../model.js" export type OpenAiCodexModelId = keyof typeof openAiCodexModels -export const openAiCodexDefaultModelId: OpenAiCodexModelId = "gpt-5.3-codex" +export const openAiCodexDefaultModelId: OpenAiCodexModelId = "gpt-5.6-sol" /** * Models available through the Codex OAuth flow. @@ -24,6 +24,56 @@ export const openAiCodexDefaultModelId: OpenAiCodexModelId = "gpt-5.3-codex" * Costs are 0 as they are covered by the subscription. */ export const openAiCodexModels = { + "gpt-5.6-sol": { + maxTokens: 128000, + contextWindow: 400000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + // Subscription-based: no per-token costs + inputPrice: 0, + outputPrice: 0, + supportsVerbosity: true, + supportsTemperature: false, + description: + "GPT-5.6 Sol: OpenAI's flagship model for frontier reasoning, coding, and agentic workflows via ChatGPT subscription", + }, + "gpt-5.6-terra": { + maxTokens: 128000, + contextWindow: 400000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + // Subscription-based: no per-token costs + inputPrice: 0, + outputPrice: 0, + supportsVerbosity: true, + supportsTemperature: false, + description: + "GPT-5.6 Terra: Balanced everyday model with GPT-5.5-competitive performance via ChatGPT subscription", + }, + "gpt-5.6-luna": { + maxTokens: 128000, + contextWindow: 400000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + // Subscription-based: no per-token costs + inputPrice: 0, + outputPrice: 0, + supportsVerbosity: true, + supportsTemperature: false, + description: "GPT-5.6 Luna: The fastest, most affordable member of the GPT-5.6 family via ChatGPT subscription", + }, "gpt-5.1-codex-max": { maxTokens: 128000, contextWindow: 400000, diff --git a/packages/types/src/providers/openai.ts b/packages/types/src/providers/openai.ts index 4f04af0a63..1601961964 100644 --- a/packages/types/src/providers/openai.ts +++ b/packages/types/src/providers/openai.ts @@ -3,9 +3,81 @@ import type { ModelInfo } from "../model.js" // https://openai.com/api/pricing/ export type OpenAiNativeModelId = keyof typeof openAiNativeModels -export const openAiNativeDefaultModelId: OpenAiNativeModelId = "gpt-5.1-codex-max" +export const openAiNativeDefaultModelId: OpenAiNativeModelId = "gpt-5.6-sol" export const openAiNativeModels = { + "gpt-5.6-sol": { + maxTokens: 128000, + contextWindow: 1_050_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + inputPrice: 5.0, + outputPrice: 30.0, + cacheWritesPrice: 6.25, + cacheReadsPrice: 0.5, + longContextPricing: { + thresholdTokens: 272_000, + inputPriceMultiplier: 2, + outputPriceMultiplier: 1.5, + appliesToServiceTiers: ["default", "flex"], + }, + supportsVerbosity: true, + supportsTemperature: false, + tiers: [ + { name: "flex", contextWindow: 1_050_000, inputPrice: 2.5, outputPrice: 15.0, cacheReadsPrice: 0.25 }, + { name: "priority", contextWindow: 1_050_000, inputPrice: 12.5, outputPrice: 75.0, cacheReadsPrice: 1.25 }, + ], + description: "GPT-5.6 Sol: OpenAI's flagship model for frontier reasoning, coding, and agentic workflows", + }, + "gpt-5.6-terra": { + maxTokens: 128000, + contextWindow: 1_050_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + inputPrice: 2.5, + outputPrice: 15.0, + cacheWritesPrice: 3.125, + cacheReadsPrice: 0.25, + longContextPricing: { + thresholdTokens: 272_000, + inputPriceMultiplier: 2, + outputPriceMultiplier: 1.5, + appliesToServiceTiers: ["default", "flex"], + }, + supportsVerbosity: true, + supportsTemperature: false, + tiers: [ + { name: "flex", contextWindow: 1_050_000, inputPrice: 1.25, outputPrice: 7.5, cacheReadsPrice: 0.125 }, + { name: "priority", contextWindow: 1_050_000, inputPrice: 6.25, outputPrice: 37.5, cacheReadsPrice: 0.625 }, + ], + description: "GPT-5.6 Terra: Balanced everyday model with GPT-5.5-competitive performance at 2x lower cost", + }, + "gpt-5.6-luna": { + maxTokens: 128000, + contextWindow: 400000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + inputPrice: 1.0, + outputPrice: 6.0, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + supportsVerbosity: true, + supportsTemperature: false, + tiers: [{ name: "flex", contextWindow: 400000, inputPrice: 0.5, outputPrice: 3.0, cacheReadsPrice: 0.05 }], + description: "GPT-5.6 Luna: The fastest, most affordable member of the GPT-5.6 family", + }, "gpt-5.1-codex-max": { maxTokens: 128000, contextWindow: 400000, diff --git a/src/api/providers/__tests__/openai-codex.spec.ts b/src/api/providers/__tests__/openai-codex.spec.ts index 4ab9755252..22466af3ce 100644 --- a/src/api/providers/__tests__/openai-codex.spec.ts +++ b/src/api/providers/__tests__/openai-codex.spec.ts @@ -22,7 +22,7 @@ describe("OpenAiCodexHandler.getModel", () => { const handler = new OpenAiCodexHandler({ apiModelId: "not-a-real-model" }) const model = handler.getModel() - expect(model.id).toBe("gpt-5.3-codex") + expect(model.id).toBe("gpt-5.6-sol") expect(model.info).toBeDefined() }) diff --git a/src/api/providers/__tests__/openai-native.spec.ts b/src/api/providers/__tests__/openai-native.spec.ts index 2a3ec0afb2..1acb4101be 100644 --- a/src/api/providers/__tests__/openai-native.spec.ts +++ b/src/api/providers/__tests__/openai-native.spec.ts @@ -356,7 +356,7 @@ describe("OpenAiNativeHandler", () => { openAiNativeApiKey: "test-api-key", }) const modelInfo = handlerWithoutModel.getModel() - expect(modelInfo.id).toBe("gpt-5.1-codex-max") // Default model + expect(modelInfo.id).toBe("gpt-5.6-sol") // Default model expect(modelInfo.info).toBeDefined() }) }) From 1cb8ecd5344230ab575868a3a91078e98fa4ef78 Mon Sep 17 00:00:00 2001 From: Naved Date: Fri, 10 Jul 2026 19:33:31 -0700 Subject: [PATCH 2/2] fix(openai-codex): correct GPT-5.6 context windows to 372000 Address review feedback on PR #876: the GPT-5.6 model context windows in the Codex provider were set to 400000, but the OpenAI codex models.json shows context_window and max_context_window of 372000 for all three GPT-5.6 variants (sol, terra, luna). Updated accordingly. --- packages/types/src/providers/openai-codex.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/types/src/providers/openai-codex.ts b/packages/types/src/providers/openai-codex.ts index 0f12b35d6b..2caf00cd09 100644 --- a/packages/types/src/providers/openai-codex.ts +++ b/packages/types/src/providers/openai-codex.ts @@ -26,7 +26,7 @@ export const openAiCodexDefaultModelId: OpenAiCodexModelId = "gpt-5.6-sol" export const openAiCodexModels = { "gpt-5.6-sol": { maxTokens: 128000, - contextWindow: 400000, + contextWindow: 372000, includedTools: ["apply_patch"], excludedTools: ["apply_diff", "write_to_file"], supportsImages: true, @@ -43,7 +43,7 @@ export const openAiCodexModels = { }, "gpt-5.6-terra": { maxTokens: 128000, - contextWindow: 400000, + contextWindow: 372000, includedTools: ["apply_patch"], excludedTools: ["apply_diff", "write_to_file"], supportsImages: true, @@ -60,7 +60,7 @@ export const openAiCodexModels = { }, "gpt-5.6-luna": { maxTokens: 128000, - contextWindow: 400000, + contextWindow: 372000, includedTools: ["apply_patch"], excludedTools: ["apply_diff", "write_to_file"], supportsImages: true,