What version of the Codex App are you using (From "About Codex" dialog)?
OpenAI.Codex_26.616.6631.0_x64__2p2nqsd0c76g0
Confirmed locally via Windows package query:
Name: OpenAI.Codex
Version: 26.616.6631.0
PackageFullName: OpenAI.Codex_26.616.6631.0_x64__2p2nqsd0c76g0
InstallLocation: C:\Program Files\WindowsApps\OpenAI.Codex_26.616.6631.0_x64__2p2nqsd0c76g0
What subscription do you have?
ChatGPT Pro account.
The local app-server `account/read` response reports:
account.type = chatgpt
planType = prolite
requiresOpenaiAuth = true
Public redaction note:
I am not posting my account email or account id publicly. The in-app feedback report can include the session/log context for OpenAI staff.
What platform is your computer?
Microsoft Windows NT 10.0.19045.0 x64
What issue are you seeing?
The Codex Desktop Plugin Directory on Windows shows only the small bundled plugin subset, even though the local app-server and marketplace state contain the OpenAI-curated plugin catalog.
Observed UI symptom:
- Plugin Marketplace / "By OpenAI" effectively shows only bundled entries such as Computer Use, Chrome, and LaTeX.
- Broader OpenAI-curated plugins and categories are absent from the visible Plugin Directory.
- The page takes roughly 10 seconds to load.
- Restarting the Codex app did not fix the issue.
This does not look like an empty marketplace, auth loss, or local cache corruption. The local app-server returns the curated catalog, but the renderer appears to filter it out when a server-provided Statsig gate is true.
What steps can reproduce the bug?
- Start Codex Desktop on Windows.
- Open the Plugins view.
- Select the "By OpenAI" tab.
- Observe that the visible Plugin Directory shows only a tiny bundled subset rather than the expected OpenAI-curated catalog.
- Restart the Codex app.
- Open Plugins again.
- Observe that the reduced bundled-only Plugin Directory still persists.
Local diagnostic reproduction / evidence:
The local app-server was probed over a temporary loopback WebSocket using codex app-server --listen ws://127.0.0.1:<port>.
Auth state was valid:
account/read.account.type = chatgpt
account/read.planType = prolite
getAuthStatus.authMethod = chatgpt
getAuthStatus.requiresOpenaiAuth = true
Plugin catalog state was not empty:
plugin/list { marketplaceKinds: ["local", "vertical"] }
openai-bundled: 4
openai-curated: 177
openai-curated-remote: 7
marketplaceLoadErrors: []
featuredPluginIds: 45
plugin/list { }
openai-bundled: 4
openai-curated: 177
marketplaceLoadErrors: []
featuredPluginIds: 45
Local marketplace snapshots also contained the expected separate marketplace roots:
openai-bundled
openai-curated
openai-curated-remote
I decoded the current Chromium LocalStorage LevelDB for the Codex app read-only:
C:\Users\PJ\AppData\Roaming\Codex\web\Codex\Default\Local Storage\leveldb
The latest decoded Statsig evaluation record was current and network-sourced:
File: 002952.ldb
Key: _app://-\0\1statsig.cached.evaluations.1368333507
Sequence: 9957
File mtime: 2026-06-22T22:01:34.246619 local
source: Network
gate_count: 168
dynamic_config_count: 96
layer_count: 45
contains_4218407052: true
The gate value was:
{
"name": "4218407052",
"value": true,
"rule_id": "2rlGt7Bws4GC2gC8HqYQI4:100.00:8",
"id_type": "userID",
"secondary_exposures": [
{
"gate": "3006008350",
"gateValue": "false",
"ruleID": "default"
}
]
}
There was also a freshness record:
Key: _app://-\0\1statsig.last_modified_time.evaluations
Sequence: 9958
File: 002952.ldb
statsig.cached.evaluations.1368333507: 1782158429977
Packaged renderer code appears to have this decision path:
function pe(e){return e !== "chatgpt" && e !== "apikey" && e !== "amazonBedrock"}
m = pe(authMethod)
p = statsig("4218407052")
if (m) hidden = [openai-curated, openai-curated-remote]
else if (p) hidden = [openai-curated]
includeVerticalCatalog = !p
With the measured local values:
authMethod = chatgpt
=> m = false
statsig("4218407052") = true
=> p = true
=> includeVerticalCatalog = false
=> openai-curated is filtered out by the renderer
=> only the small bundled plugin subset remains visible
I did not patch the app bundle, did not edit the Statsig cache, and did not mutate the marketplace cache.
What is the expected behavior?
The Codex App Plugin Directory should show OpenAI-curated plugins when the local app-server can load openai-curated and there are no marketplace load errors.
If this account/build is intentionally not allowed to see openai-curated, the UI should explain that state instead of silently showing a bundled-only subset.
Additional information
Why this looks like a server-side rollout / renderer feature-gate issue:
- The app-server returns
openai-curated: 177.
marketplaceLoadErrors is empty.
- Auth is
chatgpt, so the auth-hide predicate in the renderer path should be false.
- The current local Statsig evaluation is
source: Network and sets 4218407052=true.
- The packaged renderer code appears to hide
openai-curated when statsig("4218407052") is true.
Side observation from current Sentry scope:
Request encoding failed for https://ab.chatgpt.com/v1/initialize
InvalidCharacterError: Failed to execute 'btoa' on 'Window':
The string to be encoded contains characters outside of the Latin1 range.
I do not think that warning is the primary cause because the decoded evaluation record is current, network-sourced, and includes the gate value. It may still be relevant to Statsig/bootstrap robustness.
Related public issues:
In-app feedback was submitted with id:
019eef59-0890-71e0-91e3-769d7168605f
Optional screenshot:
C:\Users\PJ\Downloads\Codex-App-Plugins.PNG
Request:
Please confirm whether gate 4218407052=true is intended to hide openai-curated for this ChatGPT account / Windows build. If it is not intended, please correct the gate rule or rollout. If it is intended, please expose a clear UI status explaining why curated plugins are unavailable.
What version of the Codex App are you using (From "About Codex" dialog)?
What subscription do you have?
Public redaction note:
What platform is your computer?
What issue are you seeing?
The Codex Desktop Plugin Directory on Windows shows only the small bundled plugin subset, even though the local app-server and marketplace state contain the OpenAI-curated plugin catalog.
Observed UI symptom:
This does not look like an empty marketplace, auth loss, or local cache corruption. The local app-server returns the curated catalog, but the renderer appears to filter it out when a server-provided Statsig gate is true.
What steps can reproduce the bug?
Local diagnostic reproduction / evidence:
The local app-server was probed over a temporary loopback WebSocket using
codex app-server --listen ws://127.0.0.1:<port>.Auth state was valid:
Plugin catalog state was not empty:
Local marketplace snapshots also contained the expected separate marketplace roots:
I decoded the current Chromium LocalStorage LevelDB for the Codex app read-only:
The latest decoded Statsig evaluation record was current and network-sourced:
The gate value was:
{ "name": "4218407052", "value": true, "rule_id": "2rlGt7Bws4GC2gC8HqYQI4:100.00:8", "id_type": "userID", "secondary_exposures": [ { "gate": "3006008350", "gateValue": "false", "ruleID": "default" } ] }There was also a freshness record:
Packaged renderer code appears to have this decision path:
With the measured local values:
I did not patch the app bundle, did not edit the Statsig cache, and did not mutate the marketplace cache.
What is the expected behavior?
The Codex App Plugin Directory should show OpenAI-curated plugins when the local app-server can load
openai-curatedand there are no marketplace load errors.If this account/build is intentionally not allowed to see
openai-curated, the UI should explain that state instead of silently showing a bundled-only subset.Additional information
Why this looks like a server-side rollout / renderer feature-gate issue:
openai-curated: 177.marketplaceLoadErrorsis empty.chatgpt, so the auth-hide predicate in the renderer path should be false.source: Networkand sets4218407052=true.openai-curatedwhenstatsig("4218407052")is true.Side observation from current Sentry scope:
I do not think that warning is the primary cause because the decoded evaluation record is current, network-sourced, and includes the gate value. It may still be relevant to Statsig/bootstrap robustness.
Related public issues:
vertical#26492 is related to theverticalplugin catalog path, but it errors with unknown variant instead of silently hiding curated plugins.authMethod=chatgptand does not depend on a custom provider.In-app feedback was submitted with id:
Optional screenshot:
Request:
Please confirm whether gate
4218407052=trueis intended to hideopenai-curatedfor this ChatGPT account / Windows build. If it is not intended, please correct the gate rule or rollout. If it is intended, please expose a clear UI status explaining why curated plugins are unavailable.