Repository navigation
feat(providers): add GPT-5.6 model family - #6862
Conversation
04776e0 to
3e07b05
Compare
There was a problem hiding this comment.
Code Review
This pull request introduces support for the GPT-5.6 model family (including Sol, Terra, and Luna variants) across OpenAI API, Codex, and ChatGPT Web, while retiring older GPT-5.4 models. The changes span model registries, capabilities, pricing tiers, executors, cost calculations, and VS Code extension metadata, alongside comprehensive test updates. The review feedback correctly identifies a naming inconsistency in the ChatGPT Web model registry where gpt-5-6-thinking was defined with dashes instead of the standard dot-form gpt-5.6-thinking, and provides actionable suggestions to correct this ID, its executor mappings, and all associated unit tests.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
12645fd to
0e7b925
Compare
|
Heads up: this overlaps with #6859 / That branch now has live Codex I think the Codex catalog/discovery parts of this PR may now be redundant or should be reconciled with the dynamic discovery path from #6859. The broader GPT-5.6 provider updates here may still be useful, especially for OpenAI API, ChatGPT Web, pricing, image catalog, and Fast-tier behavior, but we should probably avoid having two competing Codex catalog sources land independently. |
0e7b925 to
fd84d22
Compare
I will look into that issue. |
fd84d22 to
ed67f15
Compare
@JxnLexn I traced the overlap against the merged discovery implementation. The relevant discovery PR is #6776 ( I reconciled the responsibilities instead of replacing the discovery work:
On client identity: #6776 retained 0.142.0 to avoid duplicating the separate #6780 bump. #6780 moved the base to 0.144.0; GPT-5.6 requires at least 0.144.0, and this PR keeps the current stable 0.144.1 identity. Validation after the final rebase includes 111 focused Codex discovery/identity/executor/chat-pipeline tests, plus a fresh Windows dev-server smoke from an empty data directory. The live GitHub fallback detected 3 remote-only candidates while exposing only the curated 26-model Codex catalog and keeping Codex GPT-5.4 out of |
|
A serious bug has been discovered and is currently being fixed. |
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
Fixed. Ready for review. |
7ffd46c to
94a4982
Compare
|
Genuine question - why are we not just bumping the codex client version? I added env var |
|
Small concern on the Codex catalog reconciliation change. In current mergeCodexLiveModelsWithLocalCatalog(remoteModels, staticCodexCatalog)That means live The new #6862 flow switches this to: reconcileCuratedCodexCatalog(remoteModels, staticCodexCatalog)and separates remote-only IDs into Could we please keep the current automatic Codex behavior? Concretely, I think the Codex branch in const mergedModels = mergeCodexLiveModelsWithLocalCatalog(enrichedLiveModels, staticCodexCatalog);
return buildApiDiscoveryResponse(mergedModels);and for GitHub fallback: const mergedModels = mergeCodexLiveModelsWithLocalCatalog(githubCatalogModels, staticCodexCatalog);
return buildApiDiscoveryResponse(
mergedModels,
"Codex live catalog unavailable — using GitHub model catalog"
);So the technical ask is:
I’m fine with the broader GPT-5.6 static catalog updates in #6862, but I’d like the automatic future-proofing from live/GitHub Codex discovery to remain intact. |
First, I’ll restore your auto-discovery feature. However, I propose a compromise: when specific code is added, we’ll include code to remove the corresponding models from the list. I believe this will lead to a mutually satisfactory agreement. In addition, I will start working right away. |
Codex discovery reconciliation (follow-up to @JxnLexn)Pushed Default path is auto-discovery again, then an explicit policy filter:
So:
Concrete helpers: |
f53eb29 to
d95ca51
Compare
|
@JxnLexn — follow-up on the Codex catalog reconciliation. What we changedWe dropped curated-only allowlisting as the default discovery path. Default pipeline is now:
Lifecycle cleanup (Codex only)Persisted synced catalogs can still hold retired IDs after an upgrade. On first-start, app-version change, or setup completion we once:
Success log is a single line: ScopeThis is Codex-only. OpenAI API and other providers are unchanged (API still keeps GPT-5.4 where intentional). If anything here still feels off — merge order, denylist shape, when revalidation fires, persist behavior, etc. — please say so anytime and we can adjust. |
|
Reviewed and verified. All 5 GPT-5.6-specific test files pass, plus a full re-run of the ~90 existing test files this PR touches (594 tests total, 0 failures) — including the identity-version-sync, pricing, VS Code routing, and SSRF self-fetch regression suites. The self-fetch SSRF hardening ( |
030ea05 to
ba2ea39
Compare
…cycle Restore live/GitHub auto-merge for Codex catalogs, drop models via explicit denylist (GPT-5.4 family), and run scrub+live re-sync once on first-start, app upgrade, or setup completion. Success log: kill deprecated models complete.
Expose remote-only Codex models without dropping user custom entries, and complete lifecycle revalidation only after a successful internal sync. Keep credentialed self-fetches pinned to the active dashboard listener.
ba2ea39 to
a4fd0ff
Compare
|
Merged — GPT-5.6 sol-terra provider work, re-synced clean onto the current tip (646/646 tests green). Thanks! (Remaining red checks are unrelated pre-existing base-reds on the release tip: openadapter live-catalog + a stale eslint suppression.) |
…ake and #6862 stronger deepEqual (test-masking)
…GPT-5.6 matrix, #6675 provider removals)
* feat(providers): add GPT-5.6 model family * fix(chatgpt-web): resume temporary chat handoffs * fix(codex): auto-merge discovery, filter denylist, revalidate on lifecycle Restore live/GitHub auto-merge for Codex catalogs, drop models via explicit denylist (GPT-5.4 family), and run scrub+live re-sync once on first-start, app upgrade, or setup completion. Success log: kill deprecated models complete. * fix(codex): preserve live catalog reconciliation Expose remote-only Codex models without dropping user custom entries, and complete lifecycle revalidation only after a successful internal sync. Keep credentialed self-fetches pinned to the active dashboard listener. --------- Co-authored-by: backryun <backryun@daonlab.local>
…w#6897 de-flake and diegosouzapw#6862 stronger deepEqual (test-masking)
…souzapw#6862 GPT-5.6 matrix, diegosouzapw#6675 provider removals)
* feat(providers): add GPT-5.6 model family * fix(chatgpt-web): resume temporary chat handoffs * fix(codex): auto-merge discovery, filter denylist, revalidate on lifecycle Restore live/GitHub auto-merge for Codex catalogs, drop models via explicit denylist (GPT-5.4 family), and run scrub+live re-sync once on first-start, app upgrade, or setup completion. Success log: kill deprecated models complete. * fix(codex): preserve live catalog reconciliation Expose remote-only Codex models without dropping user custom entries, and complete lifecycle revalidation only after a successful internal sync. Keep credentialed self-fetches pinned to the active dashboard listener. --------- Co-authored-by: backryun <backryun@daonlab.local>



Summary
/v1/models; the curated static catalog is metadata/fallback input, not an allowlist.stream_handoffresponses by collecting native resume tokens and resuming native SSE for streaming and non-streaming requests, retrying offsets 0–2 after 404s.Why
The original GPT-5.6 catalog implementation treated the curated Codex list as an approval boundary. That contradicted the agreed discovery behavior: entitled remote-only models were detected but then hidden from provider responses, persistence, and
/v1/models. The reconciliation now keeps live/GitHub discovery authoritative, merges local metadata, and removes only the explicit GPT-5.4 family at delimiter boundaries.Two adjacent regressions were also closed:
Temporary Chat had a separate root cause:
stream_handoffcould arrive before the unsaved conversation detail became queryable, so the legacy detail lookup returned 404. The executor now resumes the native stream directly.Compatibility Guarantees
/v1/modelsresponse shape remains{ object, data }; the Codex client compatibility projection remains scoped to Codex clients.Validation
release/v3.8.47atb5e75bb8(latest root uplift)npm run typecheck:corenpm run lint— latest base exits 2 with 0 errors and 4135 warnings because ESLint 9.39.4 treats warning-only bulk suppressions as unused; no feature lint errors were reported.docs/i18n/zh-CN/docs/reference/ENVIRONMENT.md; this PR changes one default-version string there and avoids a scope-expanding translation reformat.npm run check:file-size— shared base-red from upstream fix(proxy): relay repair + free-pool UX + relay awareness #6909:ProxyRegistryManager.tsxis 1447 lines vs frozen 1437; feature and base blobs are identical.npm run check:cyclesnpm run check:env-doc-syncnpm run check:duplication— 4.54% vs 5.72% baselinenpm run check:complexity— 2055 vs 2054 baseline; the +4 arrived with upstream fix(proxy): relay repair + free-pool UX + relay awareness #6909 and this feature does not touch those proxy files.npm run check:cognitive-complexity— 887 vs 890 baselinenpm run check:complexity-ratchets— shared base-red from the same 2055 vs 2054 complexity drift; cognitive complexity remains 887 vs 890.npm run test:vitest— 28 files, 253/253npm run build— production bundle assembled successfully on macOSThe production build still emits the repository's existing Turbopack broad-file-tracing warnings, but exits successfully. The optional vulnerability and CodeQL ratchets skipped locally because
osv-scannerwas absent and the GitHub token cannot read code-scanning alerts; GitHub CI remains authoritative for those checks.Current CI Status After Latest Root Uplift
ba2ea399aafter rebasing ontob5e75bb8.ProxyRegistryManager.tsx1447 > 1437) and complexity (2055 > 2054). The feature/base blobs for the failing file and baseline are identical, so no unrelated proxy or baseline patch is included here.Temporary Chat Resume Verification
FINAL_GPT_5.6_PRO_OKFINAL_GPT_5.5_PRO_OKFINAL_GPT_5.5_PRO_EXTENDED_OKKey Tests Added Or Updated
tests/unit/codex-catalog-revalidation.test.tstests/unit/codex-catalog-revalidation-runtime.test.tstests/unit/codex-models-catalog-refresh.test.tstests/unit/model-sync-custom-preservation.test.tstests/unit/model-sync-route.test.tstests/unit/model-sync-scheduler.test.tstests/unit/provider-models-custom-merge-6247.test.tstests/unit/provider-models-discovery-split.test.tstests/unit/providers-autosync-ssrf-323.test.tstests/unit/chatgpt-web-handoff-resume.test.tsReviewer Notes
excludeCustom=true.