Repository navigation
fix(server): Sol Ultrafast stops vanishing from the Codex model picker - #18200
Conversation
Codex app-server starts its catalog refresh before `initialize` names the client, so that fetch goes out as the plain CLI and the backend omits Sol Ultrafast. It writes that catalog to the shared models_cache.json, which model/list then serves to every Codex client on the machine for five minutes. Spawn app-server with the T3 Code originator set, and have the provider probe wait for its own startup refresh before trusting model/list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR changes all T3 Codex app-server launches to advertise a different originator and adds cache polling/re-fetch behavior that changes existing provider discovery and model availability. Because the propagated environment value controls non-trivial downstream catalog filtering, the runtime impact should receive human review. You can add or adjust custom eligibility rules. Learn more. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
## What's Changed * feat(pull-requests): guided reviews, a beta tour of a pull request by @juliusmarminge in pingdotgg/t3code#18124 * feat(mcp): agents can write and read pull request review guides by @juliusmarminge in pingdotgg/t3code#18143 * fix(server): Sol Ultrafast stops vanishing from the Codex model picker by @t3dotgg in pingdotgg/t3code#18200 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261011.2967...v0.0.46-nightly.20261011.2980 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261011.2980
## What's Changed * feat(pull-requests): guided reviews, a beta tour of a pull request by @juliusmarminge in pingdotgg/t3code#18124 * feat(mcp): agents can write and read pull request review guides by @juliusmarminge in pingdotgg/t3code#18143 * fix(server): Sol Ultrafast stops vanishing from the Codex model picker by @t3dotgg in pingdotgg/t3code#18200 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261011.2967...v0.0.46-nightly.20261011.2980 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261011.2980
Sync 1011c: pingdotgg#18200 (Codex Ultrafast tier), pingdotgg#18143 (agent PR review guides). Conflict in t3ToolSummary.test.ts: both sides added a test at the same spot; kept both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GPT-6.1 Sol's Ultrafast tier kept disappearing from the Codex model picker, and threads set to Ultrafast got knocked down to Standard or Fast. Refreshing providers brought it back for a few minutes, then it vanished again.
Why it recurs. The ChatGPT backend tailors the model catalog to the client's
originator. Ultrafast is in the catalog forT3 Code, not for the plain CLI (codex_cli_rs). Codex 0.162 has two traits that combine badly:codex app-serverstarts its catalog refresh beforeinitializenames the client, so that first fetch goes out ascodex_cli_rs.CODEX_HOME/models_cache.json. The cache key ignores originator, andmodel/listserves any cache under 5 minutes old.So every app-server start (T3's provider probes and sessions, the Codex daemon, the CLI) can write a catalog without Ultrafast, and T3's probe, which lists models right after spawn, publishes whatever is on disk.
Fix.
codex app-serverT3 spawns setsCODEX_INTERNAL_ORIGINATOR_OVERRIDE=T3 Code, so its startup fetch asks for T3's catalog. A value the user already set wins.Real entitlement changes still remove tiers: the probe uses the fresh backend answer and pins nothing.
Proof.
CodexProvider.catalog.test.tsruns the real probe against a fake app-server with the same race. It fails without either half of the fix. A second case checks that Ultrafast is dropped when the account loses it.mainreturned[default, priority]2/2; this branch returned[default, priority, ultrafast]3/3.Known limit: if another Codex client writes the cache in the same few hundred milliseconds as the probe's refresh, that probe can still get its catalog. The next probe corrects it. The real fix belongs upstream in Codex (start the refresh after
initialize, or include originator in the cache key).Reviewed with sol-loop: 2 rounds with GPT-6.1 Sol on high.
Created with Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code