Codex Desktop Windows hides openai-curated Plugin Directory when Statsig gate 4218407052=true
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. marketplaceLoadErrorsis empty.- Auth is
chatgpt, so the auth-hide predicate in the renderer path should be false. - The current local Statsig evaluation is
source: Networkand sets4218407052=true. - The packaged renderer code appears to hide
openai-curatedwhenstatsig("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:
- #24736 looks closest by symptom: no official curated plugins despite plugins feature enabled.
- #25253 is the closest problem class: local package/catalog exists but runtime/server-side gate exposes only a subset.
- #26492 is related to the
verticalplugin catalog path, but it errors with unknown variant instead of silently hiding curated plugins. - #22466 is related to plugin discovery with ChatGPT login/custom providers, but this local case has measured
authMethod=chatgptand does not depend on a custom provider. - #29123 is related to curated plugins hidden in a UI picker, but this case affects the Plugin Directory itself.
- #27899 is related to Statsig bootstrap issues and startup delay, but not the same Plugin Directory filtering behavior.
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.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗