From d4e3eea68b2e799749efb271cb080c4b86dd8f02 Mon Sep 17 00:00:00 2001 From: chadbyte Date: Mon, 20 Jul 2026 15:34:51 +1200 Subject: [PATCH] feat(codex): add GPT-5.6 sol/terra/luna models Add the GPT-5.6 model family (gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna) to the Codex adapter's model list and make gpt-5.6-terra the default (5.5-class quality at lower cost). Register the 5.6 context window (272000) so the context panel reports usage correctly instead of falling back to 200000. Verified the bundled @openai/codex 0.144.4 binary already recognizes all three model ids. --- lib/public/modules/app-panels.js | 1 + lib/yoke/adapters/codex.js | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/public/modules/app-panels.js b/lib/public/modules/app-panels.js index 450d36db..2e722305 100644 --- a/lib/public/modules/app-panels.js +++ b/lib/public/modules/app-panels.js @@ -108,6 +108,7 @@ var CODEX_WEBSEARCH_OPTIONS = [ var KNOWN_CONTEXT_WINDOWS = { "opus-4-6": 1000000, "claude-sonnet-4": 1000000, + "gpt-5.6": 272000, "gpt-5.5": 1048576, "gpt-5.4": 1048576, "gpt-5.3": 1048576, diff --git a/lib/yoke/adapters/codex.js b/lib/yoke/adapters/codex.js index d46b6f19..40aade0c 100644 --- a/lib/yoke/adapters/codex.js +++ b/lib/yoke/adapters/codex.js @@ -620,7 +620,7 @@ function createCodexQueryHandle(appServer, queryOpts) { done: false, aborted: false, loopStarted: false, - model: queryOpts.model || "gpt-5.5", + model: queryOpts.model || "gpt-5.6-terra", // Track incremental text deltas textBlocks: {}, // itemId -> true (text_start sent) textLengths: {}, // itemId -> last sent length @@ -865,7 +865,7 @@ function createCodexQueryHandle(appServer, queryOpts) { // Start or resume thread var threadParams = { - model: queryOpts.model || "gpt-5.5", + model: queryOpts.model || "gpt-5.6-terra", sandbox: queryOpts.sandboxMode || "workspace-write", approvalPolicy: queryOpts.approvalPolicy || "on-failure", cwd: queryOpts.cwd, @@ -1086,6 +1086,9 @@ function createCodexAdapter(opts) { // slow/failed `initialize` leaves the picker empty and the chip shows the // previous vendor's model. var CODEX_MODELS = [ + "gpt-5.6-terra", + "gpt-5.6-sol", + "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", @@ -1131,7 +1134,7 @@ function createCodexAdapter(opts) { function buildReadyResponse(skillNames) { return { models: _cachedModels, - defaultModel: "gpt-5.5", + defaultModel: "gpt-5.6-terra", skills: skillNames || [], slashCommands: skillNames || [], fastModeState: null, @@ -1428,7 +1431,7 @@ function createCodexAdapter(opts) { throw new Error("[yoke/codex] Adapter not initialized. Call init() first."); } - var model = queryOpts.model || "gpt-5.5"; + var model = queryOpts.model || "gpt-5.6-terra"; var ac = queryOpts.abortController || new AbortController(); var activeEntry = { abort: function() {