Skip to content

Codex Desktop Windows hides openai-curated Plugin Directory when Statsig gate 4218407052=true #29478

Description

@pjaeker

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?

  1. Start Codex Desktop on Windows.
  2. Open the Plugins view.
  3. Select the "By OpenAI" tab.
  4. Observe that the visible Plugin Directory shows only a tiny bundled subset rather than the expected OpenAI-curated catalog.
  5. Restart the Codex app.
  6. Open Plugins again.
  7. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingskillsIssues related to skillswindows-osIssues related to Codex on Windows systems

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions