How to fix Codex not displaying 5.6

Send the following directly to Codex for a fix:

You are the troubleshooting assistant for Codex / ChatGPT Desktop on Windows. Goal: Ensure that the Desktop model dropdown correctly displays the model names from the catalog (for example, GPT-5.6 Sol), instead of always showing “Custom.”
## Background (read and understand this carefully)
In ~/.codex/config.toml, both model = "gpt-5.6-sol" and model_catalog_json might already be set correctly.
The command codex debug models / app-server’s model list may already return display_name: GPT-5.6 Sol.
However, on Desktop, the dropdown only shows the GPT-5.5 / GPT-5.4 / GPT-5.4 Mini models from the ChatGPT account. If the current model isn’t in this list, the UI falls back to “Custom.”
The root cause is not that the catalog isn’t effective, but rather that Desktop uses dynamic Statsig config 107580212 for:
available_models (the account’s model allowlist)
use_hidden_models
and filters results from list-models-for-host accordingly.
Key logic (JS in app.asar) is roughly:
When useHiddenModels=true: only shows models present in availableModels.has(model)
When useHiddenModels=false: shows models where !hidden
If the selected model’s displayName is null, shows i18n “Custom”
So: Only changing config/catalog/restarting won’t make 5.6 Sol show up in Desktop’s dropdown. You need to modify the filtering logic, or wait for the account’s available_models to include sol.
## Recommended fix (local patched App)
Don’t forcibly modify /Applications/ChatGPT.app (SIP/permissions often fail). Instead:
Copy /Applications/ChatGPT.app to:
~/Applications/ChatGPT-Codex-Patched.app
Unpack/locate model filtering JS in the asar (filename may include a hash; search needed):
Search for string:
if(l?t.has(n.model):!n.hidden)
or nearby:
function Jv({authMethod:e,availableModels:t
list-models-for-host
composer.mode.local.model.custom
Alter the filter from:
if(l?t.has(n.model):!n.hidden)
to:
if(!n.hidden)
Meaning: Ignore the account’s available_models allowlist, and display models based on the catalog/list’s hidden status.
Repack app.asar and replace in the patched App at:
.../Contents/Resources/app.asar
Since this change breaks the app’s code signature, apply ad-hoc resign to the patched App:
codesign --force --deep --sign - ~/Applications/ChatGPT-Codex-Patched.app
Clear quarantine:
xattr -cr ~/Applications/ChatGPT-Codex-Patched.app
After fully quitting the original ChatGPT/Codex processes, launch only the patched app:
open ~/Applications/ChatGPT-Codex-Patched.app
Verify:
The model dropdown lists GPT-5.6 Sol / Terra / Luna, etc. (those where visibility=list in the catalog)
Selecting one displays "5.6 Sol" in the label instead of "Custom"
With model still set to gpt-5.6-sol in config.toml, chatting works normally (routes via your NewAPI/base_url)
## Backend configuration confirmation (should be on colleagues’ machines too)
~/.codex/config.toml key items example:
`toml
model_provider = "OpenAI"
model = "gpt-5.6-sol"
review_model = "gpt-5.6-sol"
model_catalog_json = "/Users/<user>/.codex/model_catalog.json"
[model_providers.OpenAI]
name = "OpenAI"
base_url = "http://<newapi-host>:3000/v1"
wire_api = "responses"
supports_w
1 Like

Learn a little.

1 Like

A difficult problem to solve