[Feat] Add GPT-6 Sol and Luna to OpenAI model catalogs - #1755
Conversation
Add gpt-6-sol and gpt-6-luna to the OpenAI native and OpenAI Codex (ChatGPT subscription) model catalogs, announced by OpenAI on September 22, 2026: - gpt-6-sol: $2 input / $10 output per MTok, 1.05M context, 128K max output, cache writes 1.25x input, cached reads 90% off, flex 50% / priority 2x tiers, >272K long-context pricing - gpt-6-luna: $0.10 input / $0.50 output per MTok with the same context, caching, tier, and long-context structure Both support reasoning effort levels none through max (default medium), image input, and verbosity, mirroring the GPT-5.6 family entries. Codex catalog entries use subscription pricing with the 372K context window of their GPT-5.6 predecessors.
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Repository: Zoo-Code-Org/Zoo-Code/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Review statusThis PR was opened by an automated account. A human maintainer must verify the change intent, provenance, and validation before merging. Current step: Required CI passed. Waiting for automated review of the latest commit. If automated review does not start, a maintainer must restart it. Review-state labels are managed by this workflow; do not edit them manually. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
| "gpt-6-sol": { | ||
| maxTokens: 128000, | ||
| contextWindow: 372000, | ||
| 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-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows via ChatGPT subscription", | ||
| }, | ||
| "gpt-6-luna": { | ||
| maxTokens: 128000, | ||
| contextWindow: 372000, | ||
| 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-6 Luna: The fastest, most affordable member of the GPT-6 family via ChatGPT subscription", | ||
| }, |
There was a problem hiding this comment.
These are the only new catalog entries in this PR without test coverage — nothing in the test suite imports openAiCodexModels, so a typo in contextWindow or the tool filters would ship silently. Would it make sense to lock these alongside the native entries in openai-models.test.ts?
| expect(openAiNativeModels["gpt-6-sol"]).toMatchObject({ | ||
| maxTokens: 128_000, | ||
| contextWindow: 1_050_000, | ||
| supportsImages: true, | ||
| supportsPromptCache: true, | ||
| supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], | ||
| reasoningEffort: "medium", | ||
| supportsTemperature: false, | ||
| inputPrice: 2, | ||
| cacheWritesPrice: 2.5, | ||
| cacheReadsPrice: 0.2, | ||
| outputPrice: 10, | ||
| longContextPricing: { | ||
| thresholdTokens: 272_000, | ||
| inputPriceMultiplier: 2, | ||
| outputPriceMultiplier: 1.5, | ||
| cacheWritesPriceMultiplier: 2, | ||
| cacheReadsPriceMultiplier: 2, | ||
| appliesToServiceTiers: ["default", "flex", "priority"], | ||
| }, | ||
| }) | ||
|
|
||
| expect(openAiNativeModels["gpt-6-sol"].tiers).toEqual([ | ||
| { | ||
| name: "flex", | ||
| contextWindow: 1_050_000, | ||
| inputPrice: 1, | ||
| outputPrice: 5, | ||
| cacheWritesPrice: 1.25, | ||
| cacheReadsPrice: 0.1, | ||
| }, | ||
| { | ||
| name: "priority", | ||
| contextWindow: 1_050_000, | ||
| inputPrice: 4, | ||
| outputPrice: 20, | ||
| cacheWritesPrice: 5, | ||
| cacheReadsPrice: 0.4, | ||
| }, | ||
| ]) | ||
|
|
||
| expect(openAiNativeModels["gpt-6-luna"]).toMatchObject({ | ||
| maxTokens: 128_000, | ||
| contextWindow: 1_050_000, | ||
| supportsImages: true, | ||
| supportsPromptCache: true, | ||
| supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], | ||
| reasoningEffort: "medium", | ||
| supportsTemperature: false, | ||
| inputPrice: 0.1, | ||
| cacheWritesPrice: 0.125, | ||
| cacheReadsPrice: 0.01, | ||
| outputPrice: 0.5, | ||
| }) |
There was a problem hiding this comment.
The toMatchObject assertions here leave includedTools/excludedTools, supportsVerbosity, and Luna's longContextPricing unpinned (Sol's is checked), so mutations to those fields would pass CI. Would switching both to full-entry toEqual — as the tiers asserts already do — close that in one move?
There was a problem hiding this comment.
Added full tests for both Codex model entries.
Related GitHub Issue
No linked issue: this PR was requested directly (via Discord) in response to OpenAI's GPT-6 Sol/Luna release announcement: https://openai.com/index/introducing-gpt-6-sol-and-luna/
Description
Adds
gpt-6-solandgpt-6-lunato the OpenAI model catalogs, mirroring how the GPT-5.6 family (sol/terra/luna) was added in #876:packages/types/src/providers/openai.ts— both models inopenAiNativeModelswith verified pricing from OpenAI's model docs (gpt-6-sol, gpt-6-luna):gpt-6-sol: $2 input / $10 output per MTok, cache writes $2.50 (1.25× input), cached reads $0.20 (90% off), flex tier at 50%, priority tier at 2×, >272K long-context pricing (2× input/cache, 1.5× output)gpt-6-luna: $0.10 input / $0.50 output per MTok, cache writes $0.125, cached reads $0.01, same tier and long-context structurenone/low/medium/high/xhigh/max(defaultmedium), image input, verbosity, prompt cachingpackages/types/src/providers/openai-codex.ts— both models in the Codex (ChatGPT subscription) catalog with subscription pricing ($0), using the 372K context window of their GPT-5.6 predecessors (the Codex backend model metadata is not publicly verifiable; announced availability covers Plus, Pro, Business, Enterprise, and Edu)packages/types/src/__tests__/openai-models.test.ts— catalog assertions for both modelsReviewer notes / deliberate scope decisions:
gpt-5.6-sol).gpt-6-astra's required-reasoning curation, and gateway availability of the new models is not yet verified — gateways will pick them up dynamically like the GPT-5.6 family.opencode-gountouched: it curates onlygpt-5.6-lunabecause the Go gateway catalogue lacks metadata; Go gateway support for the GPT-6 models is unverified.RESPONSES_LITE_MODEL_IDSset (an internal wire-format requirement that can't be verified without Codex backend access).Test Procedure
pnpm testfrom the repo root: all 13 turbo tasks pass (includingpackages/types435 tests and webview 1866 tests).packages/typesvitest foropenai-models.test.ts(3/3),srcvitest foropenai-codex/openai-native/openai-native-usagespecs (158/158).eslint --max-warnings=0on the three touched files: clean;tsc --noEmitinpackages/types: clean.Pre-Submission Checklist
*.visual.tsxsnapshot inwebview-ui/. Seewebview-ui/AGENTS.md→ "When a UI change needs a snapshot".Visual Snapshots
N/A — catalog data only; no UI rendering changes.
Videos (interaction / animation only)
N/A
Documentation Updates
Additional Notes
Pricing and capability values were taken from OpenAI's announcement and the official per-model API docs pages (cached input at 10% of input rate, cache writes at 1.25× input, Flex/Batch at 50% of standard rates, Fast/priority at 2×, and >272K long-context multipliers).
Related PRs
Get in Touch
Discord: taltas1