Skip to content

feat(app): add GPT-6 Sol and GPT-6 Luna to the Codex model picker - #1828

Open
chphch wants to merge 1 commit into
slopus:mainfrom
chphch:feat/gpt-6-sol-codex-picker
Open

chphch wants to merge 1 commit into
slopus:mainfrom
chphch:feat/gpt-6-sol-codex-picker

Conversation

@chphch

@chphch chphch commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

OpenAI released GPT-6 Sol and GPT-6 Luna to Codex on 22 September, and the Codex picker still offers only GPT-6 Astra from that generation. This adds two rows, gpt-6-sol and gpt-6-luna, directly under Astra, plus their entries in CODEX_EFFORTS_BY_MODEL. Existing rows and the Codex default (gpt-5.6-sol) are unchanged.

Where the values come from

Codex's own registry, codex-rs/models-manager/models.json on openai/codex main:

field gpt-6-sol gpt-6-luna
visibility list list
minimal_client_version 0.155.0 0.155.0
supported_reasoning_levels low … ultra (6) low … max (5, no ultra)

Sol publishes ultra and Luna does not — the same split GPT-5.6 Sol and GPT-5.6 Luna already have — so each row gets exactly the levels its registry entry lists, not a shared list.

Both are in one PR because the rows sit on adjacent lines: two separate PRs would conflict with each other the moment either merged.

Caveat: access is still rolling out

On codex 0.155.1 with a ChatGPT account, codex exec -m gpt-6-sol and -m gpt-6-luna both currently get The '<model>' model is not supported when using Codex with a ChatGPT account from the server — the same gate Astra hit at launch (see #1748). The rows are listed anyway for the reason Astra was: both models are public in Codex's registry, and the rows start working the moment an account gets access, with no further app release.

Proof

Screenshot in the comments below: the /new Codex model picker with both new rows under Astra, and the effort picker for each, read back from the live DOM as well as screenshotted. vitest run sources/components/modelModeOptions.test.ts passes with the assertions updated alongside, and tsc --noEmit is clean.

🤖 Generated with Claude Code

@chphch

chphch commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

Proof — the Codex picker offers GPT-6 Sol

Captured locally from this PR's commit: a throwaway standalone happy-server (PGlite) + Expo web, authenticated through the dev_token URL bypass and driven headlessly with Playwright.

Left: Codex model picker with GPT-6 Sol under GPT-6 Astra. Right: GPT-6 Sol selected, effort picker listing Low through Ultra

Read back from the live DOM:

model:  ["GPT-6 Astra","GPT-6 Sol","GPT-5.6 Sol","GPT-5.6 Terra","GPT-5.6 Luna"]
effort: ["Low","Medium","High","xHigh","Max","Ultra"]   (with GPT-6 Sol selected)

How Codex was reachable in a daemon-less harness, since it affects what this proves: the agent picker offers nothing until a machine is selected and online, so the capture registered a machine via POST /v1/machines and held a presence-only socket that sends the daemon's machine-alive heartbeat. No session was created. This proves the picker's contents and the per-model effort levels — not that a session can start on gpt-6-sol, which the rollout caveat in the description covers.

OpenAI released GPT-6 Sol and GPT-6 Luna to Codex on 2026-09-22, and the picker
still offers only GPT-6 Astra from that generation.

Keys and effort levels come from Codex's own registry
(codex-rs/models-manager/models.json): slugs `gpt-6-sol` and `gpt-6-luna`, both
visibility `list` with minimal client 0.155.0. Sol publishes low through ultra,
Luna stops at max — the same split GPT-5.6 Sol and GPT-5.6 Luna already have —
so each row gets exactly the levels its registry entry lists.

Account access is still rolling out. On codex 0.155.1 with a ChatGPT account
the server currently answers `The '<model>' model is not supported when using
Codex with a ChatGPT account` for both — the same gate Astra went through at
launch — so the rows can fail for accounts the rollout has not reached. They
are listed anyway for the reason Astra was: both models are public in Codex's
registry, and the rows start working the moment an account gets access, with
no further release.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
@chphch
chphch force-pushed the feat/gpt-6-sol-codex-picker branch from b342162 to a142ec3 Compare September 23, 2026 01:16
@chphch chphch changed the title feat(app): add GPT-6 Sol to the Codex model picker feat(app): add GPT-6 Sol and GPT-6 Luna to the Codex model picker Sep 23, 2026
@chphch

chphch commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

Proof — updated for GPT-6 Luna (supersedes the Sol-only screenshot above)

Re-captured from the current head, same harness as before (standalone happy-server + Expo web, dev-token bypass, headless Playwright, a presence-only machine so Codex is selectable; no session created).

Left: Codex model picker with GPT-6 Sol and GPT-6 Luna under GPT-6 Astra. Middle: GPT-6 Sol selected, effort Low through Ultra. Right: GPT-6 Luna selected, effort Low through Max, no Ultra

Read back from the live DOM:

model:              ["GPT-6 Astra","GPT-6 Sol","GPT-6 Luna","GPT-5.6 Sol","GPT-5.6 Terra","GPT-5.6 Luna"]
effort, GPT-6 Sol:  ["Low","Medium","High","xHigh","Max","Ultra"]
effort, GPT-6 Luna: ["Low","Medium","High","xHigh","Max"]      (no "Ultra" node anywhere in the DOM)

The Luna frame is the one that matters most: it shows each row takes its own registry entry's levels rather than a shared list.

This branch has not been deployed

No deployments
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.

1 participant