CLI /plugins browser does not show installed local plugins
Summary
In Codex CLI 0.142.0, the TUI /plugins browser shows Installed 0 of 7 available plugins, even though codex plugin list reports multiple OpenAI-curated plugins as installed and enabled from ~/.codex/config.toml.
Uploaded feedback thread: 019ef514-aaff-7cd2-8106-4c2f2ddb4790
Environment
- Codex CLI:
0.142.0 - Platform: macOS arm64
- Install method: npm
- Working directory when reproduced:
~/Projects/MLX-Community
Reproduction
- Start Codex CLI.
- Run
/pluginsin the TUI. - Observe the plugin browser output.
- In a shell, run
codex plugin list.
Observed behavior
The TUI /plugins browser shows only 7 available category/workspace-style plugins, such as:
- Creative Production
- Data Analytics
- Investment Banking
- Metabase
- Product Design
- Public Equity Investing
- Sales
It reports:
Installed 0 of 7 available plugins.
However, codex plugin list reports multiple plugins as installed and enabled, including:
canva@openai-curatedbox@openai-curatedcoderabbit@openai-curatedbuild-web-apps@openai-curatedcircleci@openai-curatedhugging-face@openai-curatedremotion@openai-curatedcodex-security@openai-curatedhyperframes@openai-curatedbuild-ios-apps@openai-curatedbuild-macos-apps@openai-curatedbuild-web-data-visualization@openai-curated
The same entries are enabled in ~/.codex/config.toml.
Expected behavior
The TUI /plugins browser should show the same installed/enabled plugin state as codex plugin list, or clearly distinguish the cloud/workspace plugin directory from the local CLI plugin registry.
Notes
This appears to be a source mismatch in the TUI plugin browser rather than a missing local installation. The installed plugin skills and MCP-backed tools are still available in the session.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Hi @ft-ioxcs I looked into this and I think I found the root cause. It comes down to the TUI browser and
codex plugin listreading from different marketplace sources.codex plugin listalways asks for the curated marketplace to be included. Seecodex-rs/cli/src/plugin_cmd.rs:210:The TUI
/pluginsbrowser does not. It calls the app-serverplugin/listRPC with no marketplace_kinds (codex-rs/tui/src/app/background_requests.rs:1008). On the server, when the RemotePlugin feature is on and you are signed in with ChatGPT (Codex backend auth), the handler switches to the remote global catalog and passesinclude_openai_curated = false. Seecodex-rs/app-server/src/request_processors/plugins.rs:567-590:When
include_openai_curatedis false, the local openai-curated marketplace root is never added (codex-rs/core-plugins/src/manager.rs:2406), so the curated plugins you installed are not in the response at all. The browser then computes "Installed X of Y" purely from that response (codex-rs/tui/src/chatwidget/plugin_catalog.rs:729-763), so it reads 0. The verticals you see (Creative Production, Data Analytics, and so on) are the remote global catalog, and none of those entries carry your local install state, which is why it shows "Installed 0 of 7".The desktop app has a separate
plugin/installedRPC that does passinclude_openai_curated = trueand reconciles installed state (plugins.rs:779-870). The TUI never calls it, so the browser has no second source to recover the installed plugins.I confirmed the core of this locally. I added a small test against
list_marketplaces_for_config: with an installedslack@openai-curatedplugin,include_openai_curated = truelists it as installed (count 1), andinclude_openai_curated = falsedrops the curated marketplace entirely (count 0). So the installed plugins disappear from the listing exactly when the curated marketplace is excluded.Repro conditions that match the report: RemotePlugin enabled, ChatGPT auth, and at least one
@openai-curatedplugin installed in config.toml.Two possible fix directions, depending on intended behavior:
/pluginsbrowser also consultplugin/installed(like the desktop app) so installed state shows regardless of catalog mode.@openai-curatedplugins inplugin/listeven when the remote global catalog is active, and dedupe against the remote entries.Happy to help with whichever direction the team prefers.
Additional reproduction from
codex-cli 0.142.0on WSL/Ubuntu:Environment
Relevant local checks:
Observed behavior
Opening
/pluginsin the CLI initially shows the full marketplace-size list, then after a few seconds without user input the list switches/collapses to only 7 entries. This makes plugins like Gmail impossible to select from the TUI even though they exist in the localopenai-curatedmarketplace.In this case, Gmail was present in the marketplace entry:
But the
/pluginsUI collapsed before it could be selected.Workaround
Direct CLI install works even though the TUI picker does not:
After that:
reported both
gmail@openai-curatedandgithub@openai-curatedas installed and enabled, and~/.codex/config.tomlcontained:This matches the source mismatch described above: the local marketplace has the expected entries, but the TUI refresh appears to replace or hide the local curated catalog with the smaller remote/vertical catalog.