Thanks to visit codestin.com
Credit goes to github.com

Skip to content

🤖 feat: add first-class support for OpenAI GPT-6 Astra - #4064

Merged
ibetitsmike merged 4 commits into
mainfrom
gpt-6-astra-prep
Sep 4, 2026
Merged

🤖 feat: add first-class support for OpenAI GPT-6 Astra#4064
ibetitsmike merged 4 commits into
mainfrom
gpt-6-astra-prep

Conversation

@ThomasK33

@ThomasK33 ThomasK33 commented Sep 2, 2026

Copy link
Copy Markdown
Member

Summary

Adds first-class support for OpenAI's GPT-6 Astra (openai:gpt-6-astra, released 2026-09-03): a new GPT_6_ASTRA registry entry (aliases astra / gpt-6-astra), a 5-level thinking policy with native max effort, 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 bare gpt alias 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 onto main at 7b95f21bd.

Launch-day corrections

Item Pre-release assumption Verified value Change
API model id gpt-6-astra gpt-6-astra (no bare gpt-6 alias) none
Context window / max output 1,050,000 / 128,000 1,050,000 / 128,000 none
Knowledge cutoff omitted 2026-04-30 added
List pricing $5/M input, $30/M output, $0.50/M cached, $6.25/M cache write (Sol's rates) $10/M input, $50/M output, $1/M cached, $12.50/M cache write corrected (2x Sol)
Long-context tier >272K: 2x input / 1.5x output >272K: 2x input / 1.5x output ($20 / $75 / $2 / $25 per M) none (rates follow base)
Reasoning levels off, low, medium, high, xhigh, max with off -> explicit none low, medium, high, xhigh, max: Astra rejects none with HTTP 400 and lists no minimal; OpenAI's migration guidance maps both to low off removed; unset/off clamps to low (forced-thinking pattern, like Mythos / GLM 5.3 / Gemini 3.8 Flash)
Native max effort supported supported none
Pro reasoning mode not enabled docs split: the model guide lists pro mode among the GPT-5.6 capabilities Astra inherits, but the reasoning guide's "Reasoning mode" reference names only GPT-5.6 models and the model page omits reasoning.mode none (stays withheld; the comment records the split and the flip condition: reference lists Astra or a live reasoning.mode: "pro" probe succeeds)
Capability flags tool calling, vision, reasoning, structured output text + image in, text out; tool calling (Responses API), structured outputs, streaming, prompt caching none
Tokenizer openai/gpt-5 (approximate) GPT-6 tokenizer unpublished none
Chat Completions not considered served, but "tool calling requires Responses" (reasoning guide) comment on the stats entry + one sentence in the wire-format docs; no enforcement, wireFormat stays a user gateway choice (same treatment as GPT-5.5 Pro's Responses-only note)
Sampling parameters not considered temperature, top_p, logprobs rejected none needed: @ai-sdk/openai already strips them on both wire formats for GPT-5+ ids unless effort is none, which Astra never receives; rationale recorded on modelRejectsSamplingParameters

Implementation

  • knownModels.ts: new GPT_6_ASTRA entry (provider: "openai", id gpt-6-astra, aliases ["astra", "gpt-6-astra"], tokenizer override openai/gpt-5 like 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: isGpt6AstraModel predicate (bare id or dated snapshot only; rejects gpt-6-astra-mini, gpt-6, numeric qualifiers); openaiSupportsNativeMaxEffort covers GPT-5.6 or Astra; new openaiRejectsDisabledReasoning (Astra); getOpenAIReasoningEffort maps Astra max -> "max" and clamps a stray off -> "low" instead of "none". openaiSupportsProMode stays 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 in resolveEffectiveThinkingLevel, so unset/off clamps to low before provider options are built. GPT-5.6 keeps its 6 levels with explicit none.
  • ai/providerOptions.ts: no logic change; the direct-OpenAI and Copilot-gateway call sites route through getOpenAIReasoningEffort (Copilot still degrades max -> xhigh; Astra off arrives as low on both routes). Comments updated.
  • tokens/models-extra.ts: gpt-6-astra stats entry with the verified pricing, limits, 272K tier, and cutoff. Its own object, not a Sol alias.
  • ai/modelDisplay.ts: formatCompactModelDisplayName treats astra as a durable tier name like sol|terra|luna (composer shows "Astra"; full name "GPT-6 Astra").
  • Docs / generated: docs/config/models.mdx table row; docs/config/providers.mdx wire-format note (Astra tool calling needs responses); builtInSkillContent.generated.ts regenerated.
  • Comment-only: openaiSupportsProMode records the pro-mode doc split and flip condition; modelRejectsSamplingParameters explains 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 the gpt alias.

Validation

  • Touched suites (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 bare gpt-6 falling through to the default policy, unset/off clamped to low (Sol's real off unaffected), medium default floor, native max on 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), gpt alias unchanged, alias isolation in the model picker, and display names.
  • Red-green on the correction commit: reverting each seam independently (off -> none mapping, 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 head 9eadcea91.
  • Sampling-parameter claim verified in @ai-sdk/openai 4.0.43: getGptVersion("gpt-6-astra") parses as GPT major 6 (isReasoningModel), and both the Responses and Chat Completions language models drop temperature/top_p (and logprobs) with an unsupported warning unless reasoning.effort === "none".
  • Deployment cross-check: the same launch facts drive feat: add GPT-6 Astra to the known models catalog, price book, and chatd coder#28955 (price book + chatd transport/reasoning) and coder/dogfood#465 (dev.coder.com model config).

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 getOpenAIReasoningEffort predicate 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's off clamp is gated on openaiRejectsDisabledReasoning so Sol/Terra/Luna keep explicit none.

Launch-day corrections (commit ac76e51c8c) were made by Xum on behalf of @ibetitsmike; the follow-up (9eadcea91, doc-split comments + rebase) by Xum on behalf of @ThomasK33.


Generated with xum • Model: anthropic:claude-fable-5-1 • Thinking: xhigh • Cost: $20.06

@chatgpt-codex-connector

This comment has been minimized.

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread src/common/utils/tokens/modelStats.test.ts Outdated
Comment thread src/common/types/thinking.ts Outdated
@chatgpt-codex-connector

This comment has been minimized.

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: 78af0600ad

ℹ️ 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".

@chatgpt-codex-connector

This comment has been minimized.

Copy link
Copy Markdown
Contributor

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

Item PR assumes Published Fix
List pricing $5 input / $30 output / $0.50 cached / $6.25 cache write per 1M $10 input / $50 output / $1 cached input / $12.50 cache write per 1M (Standard) models-extra.ts: input_cost_per_token 0.00001, output_cost_per_token 0.00005, cache_read_input_token_cost 0.000001, cache_creation_input_token_cost 0.0000125
Long-context prices (>272K) $10 / $45 / $1 / $12.50 $20 input / $75 output / $2 cached input / $25 cache write (the 2x input and cache, 1.5x output structure itself is confirmed, threshold 272K input tokens) *_above_200k_tokens: input 0.00002, output 0.000075, cache read 0.000002, cache creation 0.000025
Reasoning levels off, low, medium, high, xhigh, max with off sent as explicit none reasoning.effort supports low, medium, high, xhigh, max only. none is rejected with HTTP 400 (changelog and reasoning guide); minimal is not listed either Per the PR's own contingency: add Astra to the forced-thinking set so off is clamped (the "off not clamped" tests flip), keep native max

Confirmed as assumed: model id gpt-6-astra (the only snapshot/alias OpenAI lists; there is no gpt-6 alias, so the bare gpt alias staying on Sol is unaffected), 1,050,000 context window (922,000 max input tokens), 128,000 max output, function calling, image input, structured outputs, reasoning.

Additional published facts worth folding in

  • Knowledge cutoff is published: Apr 30, 2026 (knowledge_cutoff can be set instead of omitted).
  • Pro mode: the model guide says Astra supports the GPT-5.6 capabilities including pro mode, so openaiSupportsProMode can be flipped if you want the toggle. Optional.
  • Tool calling requires the Responses API; Chat Completions does not support function calling with Astra. Relevant for the Chat Completions wire-format path.
  • temperature, top_p, and logprobs are unsupported (custom values are rejected), so any sampling parameters sent for OpenAI models must be dropped for Astra.
  • Batch and Flex are 50% of Standard; Fast mode is 2x ($20 / $100 / $2 / $25) and is unavailable with EU data residency.
  • Availability: rolling out today to Trusted Access Program enterprises, with API and Plus/Pro/Business/Enterprise access "in the coming days". A Responses probe through the dev.coder.com AI Gateway currently returns model_not_found (as it does for gpt-5.6-sol on that project, so it is not a clean availability signal). The merge-gate condition of a public model id is met; a live probe may still need a few days.

Companion PRs adding Astra to Coder: coder/coder#28955 (price book + known models) and coder/dogfood#465 (dev.coder.com model config).

Xum posted this comment on behalf of @ibetitsmike.

@ibetitsmike ibetitsmike changed the title 🤖 feat: prepare first-class support for OpenAI GPT-6 Astra (pre-release, merge-gated) 🤖 feat: add first-class support for OpenAI GPT-6 Astra Sep 3, 2026

Copy link
Copy Markdown
Contributor

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

Reviewed commit: ac76e51c8c

ℹ️ 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".

@chatgpt-codex-connector

This comment has been minimized.

Copy link
Copy Markdown
Contributor

CI status on ac76e51c8c: every job is green except Test / Integration (and therefore Required). The failures are the live-OpenAI streaming suites (sendMessage.basic/context/images, openaiPreviousResponseIdRecovery, openaiWebSearch) all dying with Model 'gpt-5.6-sol' does not exist or is not available / Model 'gpt-5.2' ... from the CI OPENAI_API_KEY. None of those tests touch Astra, and the same job has failed identically on every PR run in this repo since about 18:55 UTC today (agent-turns-4r9r, mike/resume-stranded-tool-turn, mike/server-bind-before-recovery); the last main run at 17:24 UTC was green. This looks like the CI key's OpenAI project losing access to those model ids, not a regression in this branch. I will re-run the failed job once another PR's Integration job passes again.

Posted by Xum on behalf of @ibetitsmike.

@ibetitsmike
ibetitsmike added this pull request to the merge queue Sep 3, 2026
@ibetitsmike
ibetitsmike removed this pull request from the merge queue due to a manual request Sep 3, 2026
ThomasK33 and others added 4 commits September 4, 2026 08:27
…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.
…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.
@mintlify

mintlify Bot commented Sep 4, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
Mux 🟢 Ready View Preview Sep 4, 2026, 8:31 AM

💡 Tip: Enable Automations to automatically generate PRs for you.

@ThomasK33

Copy link
Copy Markdown
Member Author

@ibetitsmike thanks for the launch-day audit — folded the rest of it in on top of ac76e51c8c and rebased onto main (7b95f21bd). New head 9eadcea91. Item by item:

  • Pricing / long-context / reasoning levels / knowledge cutoff — all in your ac76e51c8c; I re-checked each value against the model page and reasoning guide, no further corrections.
  • Pro mode — kept withheld, but the code comment was wrong ("docs list no reasoning.mode"). The docs actually split: the model guide lists pro mode among the GPT-5.6 capabilities Astra inherits, while the reasoning guide's "Reasoning mode" reference still says "GPT-5.6 models support standard and pro" and the model page omits reasoning.mode. Since an unsupported reasoning.mode fails the whole request and we cannot probe yet, openaiSupportsProMode stays GPT-5.6-only; the comment now records the split and the flip condition (reference lists Astra, or a live reasoning.mode: "pro" probe succeeds). One-line change when that happens.
  • Chat Completions tool calling — comment on the stats entry plus one sentence in docs/config/providers.mdx (wire-format section): keep responses for Astra. No enforcement: wireFormat is a gateway choice (Azure Gov etc.), and forcing Responses would break those setups entirely; this matches how GPT-5.5 Pro's Responses-only note is treated.
  • temperature / top_p / logprobs — verified no Xum change is needed: @ai-sdk/openai 4.0.43 parses gpt-6-astra as GPT major 6 → isReasoningModel, and both the Responses and Chat Completions models drop temperature/top_p (and logprobs) with an unsupported warning unless reasoning.effort === "none" — which Astra never receives after your clamp. Recorded that rationale on modelRejectsSamplingParameters so nobody adds it there redundantly.
  • Batch / Flex / Fast pricing — out of the price book by convention (Standard rates only; request-time multipliers are not baked in, same as Grok's Priority Processing note).
  • Availability — no change; live probe still pending API rollout.

Validation: touched suites 442 pass; make static-check green on 9eadcea91. Re-requesting Codex next; will keep an eye on Test / Integration for the CI-key issue you diagnosed.

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 9eadcea912

ℹ️ 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".

@chatgpt-codex-connector

This comment has been minimized.

@ibetitsmike
ibetitsmike merged commit 0ec7953 into main Sep 4, 2026
36 of 39 checks passed
@ibetitsmike
ibetitsmike deleted the gpt-6-astra-prep branch September 4, 2026 09:00
yermakoffivan pushed a commit to yermakoffivan/mux that referenced this pull request Sep 9, 2026
## 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 -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants