🤖 feat: add first-class support for OpenAI GPT-6 Astra - #4064
Conversation
This comment has been minimized.
This comment has been minimized.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 52a73b0eae
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
This comment has been minimized.
This comment has been minimized.
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
This comment has been minimized.
This comment has been minimized.
|
Launch-day check of the assumption table against OpenAI's published docs (GPT-6 Astra shipped today, 2026-09-03). Sources: model page https://developers.openai.com/api/docs/models/gpt-6-astra, pricing https://developers.openai.com/api/docs/pricing, changelog https://developers.openai.com/api/docs/changelog, reasoning guide https://developers.openai.com/api/docs/guides/reasoning, model guide https://developers.openai.com/api/docs/guides/latest-model. Contradicted assumptions
Confirmed as assumed: model id Additional published facts worth folding in
Companion PRs adding Astra to Coder: coder/coder#28955 (price book + known models) and coder/dogfood#465 (dev.coder.com model config).
|
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
This comment has been minimized.
This comment has been minimized.
|
CI status on
|
…se, merge-gated) Additive registry entry openai:gpt-6-astra (aliases astra, gpt-6-astra), 6-level thinking policy with native max via openaiSupportsNativeMaxEffort, GPT-5.6-style OpenAI effort mapping (max -> max, off -> none), models-extra placeholder stats (all values documented assumptions), compact display name, docs table + regenerated built-in skill content, and tests across the touched suites. gpt alias, fallbacks, pro mode, and Codex OAuth allow-list unchanged.
…uivalence instead of literals
…ort) OpenAI released gpt-6-astra on 2026-09-03. Correct the pre-release assumptions against the published model page and pricing: - models-extra: $10/M input, $50/M output, $1/M cached input, $12.50/M cache writes (2x/1.5x above 272K prompt tokens); cutoff 2026-04-30. - Astra rejects reasoning effort "none" (HTTP 400) and lists no "minimal". Add openaiRejectsDisabledReasoning, drop "off" from the policy (["low", "medium", "high", "xhigh", "max"]), clamp unset/off to "low" in resolveEffectiveThinkingLevel and getOpenAIReasoningEffort. - Native "max" stays; pro mode stays withheld (not documented). - Replace pre-release / merge-gate comments with the verified facts.
…ns tool-calling and sampling caveats
ac76e51 to
9eadcea
Compare
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
|
@ibetitsmike thanks for the launch-day audit — folded the rest of it in on top of
Validation: touched suites 442 pass; |
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
This comment has been minimized.
This comment has been minimized.
## Summary Version bump for the v0.28.5 patch release. Headline changes since v0.28.4: remote server connections in the desktop app (coder#4101), self-updating `xum server` under a restart supervisor (coder#4083, coder#4127), first-class GPT-6 Astra and Astra Pro support including Codex OAuth routing (coder#4064, coder#4094, coder#4106, coder#4124), token-budget context window rollovers (coder#4097), the workspace remembering model and mode on send (coder#3968), in-place plugin updates (coder#4164), the optional flat sidebar chat list (coder#3994), and copying selected chat text as Markdown (coder#4170). It also carries a long run of streaming, compaction, and task-lifecycle fixes (reconnect streaming coder#4123, message edits during active streams coder#4153, Codex OAuth prompt-cache routing coder#4159, compaction/history fencing coder#4133 through coder#4148, task lock ordering coder#4161) plus the Effect Wave 4 runtime refactors and deslop passes 1 through 3. ## Implementation Bumped with `node ./scripts/set-package-version.js 0.28.5` so the root `package.json` and the legacy `packages/mux-compat` forwarding package stay version-locked. `src/common/compat/productIdentity.test.ts` passes locally (8/8). After this PR merges, the `v0.28.5` tag will be applied to the squash commit and the GitHub Release published to trigger the desktop/npm/docker pipelines. --- _Generated with `xum` • Model: `anthropic:claude-fable-5-1` • Thinking: `xhigh` • Cost: `$1.64`_ <!-- mux-attribution: model=anthropic:claude-fable-5-1 thinking=xhigh costs=1.64 -->
Summary
Adds first-class support for OpenAI's GPT-6 Astra (
openai:gpt-6-astra, released 2026-09-03): a newGPT_6_ASTRAregistry entry (aliasesastra/gpt-6-astra), a 5-level thinking policy with nativemaxeffort, OpenAI provider-option wiring, a models-extra stats entry, docs, and regenerated skill content, following the house blueprint for frontier model introductions (GPT-5.6 Sol/Terra/Luna #3708/#3711, Gemini 3.8 Flash #4060). The change is purely additive: the baregptalias keeps tracking GPT-5.6 Sol, and no fallback chain, default, or existing model string moves.This PR was prepared pre-release behind a merge gate. The gate is lifted: every assumption was checked against OpenAI's launch documentation (model page, pricing, changelog, reasoning guide, model guide at developers.openai.com); the corrections below were committed in
ac76e51c8c, and the remaining published facts from the launch-day check (pro-mode doc split, Chat Completions tool calling, sampling parameters) were folded in on top. Branch is rebased ontomainat7b95f21bd.Launch-day corrections
gpt-6-astragpt-6-astra(no baregpt-6alias)off, low, medium, high, xhigh, maxwithoff-> explicitnonelow, medium, high, xhigh, max: Astra rejectsnonewith HTTP 400 and lists nominimal; OpenAI's migration guidance maps both tolowoffremoved; unset/offclamps tolow(forced-thinking pattern, like Mythos / GLM 5.3 / Gemini 3.8 Flash)maxeffortreasoning.modereasoning.mode: "pro"probe succeeds)openai/gpt-5(approximate)wireFormatstays a user gateway choice (same treatment as GPT-5.5 Pro's Responses-only note)temperature,top_p,logprobsrejected@ai-sdk/openaialready strips them on both wire formats for GPT-5+ ids unless effort isnone, which Astra never receives; rationale recorded onmodelRejectsSamplingParametersImplementation
knownModels.ts: newGPT_6_ASTRAentry (provider: "openai", idgpt-6-astra, aliases["astra", "gpt-6-astra"], tokenizer overrideopenai/gpt-5like the GPT-5.6 family; not warmed since the tokenizer is already warmed via GPT). Ordered after the GPT-5.6 tiers on purpose: the compaction "switch to a higher-context model" suggestion picks the first registry entry with the largest window, both Sol and Astra have 1.05M, and Astra bills 2x Sol.types/thinking.ts:isGpt6AstraModelpredicate (bare id or dated snapshot only; rejectsgpt-6-astra-mini,gpt-6, numeric qualifiers);openaiSupportsNativeMaxEffortcovers GPT-5.6 or Astra; newopenaiRejectsDisabledReasoning(Astra);getOpenAIReasoningEffortmaps Astramax -> "max"and clamps a strayoff -> "low"instead of"none".openaiSupportsProModestays GPT-5.6-only.thinking/policy.ts: Astra gets["low", "medium", "high", "xhigh", "max"](recognized reasoning model, default medium floor) and joins the forced-thinking set inresolveEffectiveThinkingLevel, so unset/offclamps tolowbefore provider options are built. GPT-5.6 keeps its 6 levels with explicitnone.ai/providerOptions.ts: no logic change; the direct-OpenAI and Copilot-gateway call sites route throughgetOpenAIReasoningEffort(Copilot still degradesmax -> xhigh; Astraoffarrives aslowon both routes). Comments updated.tokens/models-extra.ts:gpt-6-astrastats entry with the verified pricing, limits, 272K tier, and cutoff. Its own object, not a Sol alias.ai/modelDisplay.ts:formatCompactModelDisplayNametreatsastraas a durable tier name likesol|terra|luna(composer shows "Astra"; full name "GPT-6 Astra").docs/config/models.mdxtable row;docs/config/providers.mdxwire-format note (Astra tool calling needsresponses);builtInSkillContent.generated.tsregenerated.openaiSupportsProModerecords the pro-mode doc split and flip condition;modelRejectsSamplingParametersexplains why OpenAI reasoning models (incl. Astra) are not listed there.Untouched by design:
DEFAULT_MODEL_FALLBACKS,LEGACY_TOKENIZER_MODEL_OVERRIDES, the Codex OAuth allow-list, the GPT-5.6 Chat Completions explicit prompt-caching gate, CI agent matrices, and thegptalias.Validation
knownModels,types/thinking,thinking/policy,ai/providerOptions,tokens/modelStats,ModelSelector/modelFilter,ai/modelDisplay,ai/modelParameterOverrides): 442 tests pass. Coverage pins the verified surface: 5-level policy (direct, gateway, dated,mappedToModel), named variants and baregpt-6falling through to the default policy, unset/offclamped tolow(Sol's realoffunaffected), medium default floor, nativemaxon the direct route, Copilot degrade (max -> xhigh,off -> low), Chat Completions wire format, pro mode withheld even when requested, GA pricing and 272K multipliers via the shared GPT-5.6 table, stats resolution incl. dated + gateway ids, registry ordering (Sol before Astra),gptalias unchanged, alias isolation in the model picker, and display names.off -> nonemapping, the 5-level policy branch, the forced-thinking clamp) fails the corresponding tests; restored state is green.make static-check(typecheck, lint, fmt-check, generated-content freshness, docs links) green on the rebased head9eadcea91.@ai-sdk/openai4.0.43:getGptVersion("gpt-6-astra")parses as GPT major 6 (isReasoningModel), and both the Responses and Chat Completions language models droptemperature/top_p(andlogprobs) with anunsupportedwarning unlessreasoning.effort === "none".Risks
Low: additive metadata plus a stricter reasoning policy for one new model. The only user-visible behavior change is a new selectable model. The
getOpenAIReasoningEffortpredicate swap (isGpt56FamilyModel -> openaiSupportsNativeMaxEffort) is behavior-preserving for every existing model and is covered by the existing GPT-5.6 and pre-5.6 assertions; Astra'soffclamp is gated onopenaiRejectsDisabledReasoningso Sol/Terra/Luna keep explicitnone.Generated with
xum• Model:anthropic:claude-fable-5-1• Thinking:xhigh• Cost:$20.06