You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CLI /plugins browser does not show installed local plugins #29654
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.
Working directory when reproduced: ~/Projects/MLX-Community
Reproduction
Start Codex CLI.
Run /plugins in 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-curated
box@openai-curated
coderabbit@openai-curated
build-web-apps@openai-curated
circleci@openai-curated
hugging-face@openai-curated
remotion@openai-curated
codex-security@openai-curated
hyperframes@openai-curated
build-ios-apps@openai-curated
build-macos-apps@openai-curated
build-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.
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 list reading from different marketplace sources.
codex plugin list always asks for the curated marketplace to be included. See codex-rs/cli/src/plugin_cmd.rs:210:
The TUI /plugins browser does not. It calls the app-server plugin/list RPC 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 passes include_openai_curated = false. See codex-rs/app-server/src/request_processors/plugins.rs:567-590:
When include_openai_curated is 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/installed RPC that does pass include_openai_curated = true and 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 installed slack@openai-curated plugin, include_openai_curated = true lists it as installed (count 1), and include_openai_curated = false drops 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-curated plugin installed in config.toml.
Two possible fix directions, depending on intended behavior:
Have the TUI /plugins browser also consult plugin/installed (like the desktop app) so installed state shows regardless of catalog mode.
Or keep including locally installed @openai-curated plugins in plugin/list even when the remote global catalog is active, and dedupe against the remote entries.
Happy to help with whichever direction the team prefers.
Opening /plugins in 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 local openai-curated marketplace.
In this case, Gmail was present in the marketplace entry:
But the /plugins UI collapsed before it could be selected.
Workaround
Direct CLI install works even though the TUI picker does not:
codex plugin add gmail@openai-curated --json
After that:
codex plugin list --json
reported both gmail@openai-curated and github@openai-curated as installed and enabled, and ~/.codex/config.toml contained:
[plugins."gmail@openai-curated"]
enabled = true
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.
Activity
github-actions commentedon Jun 23, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
abhay-codes07 commentedon Jun 23, 2026
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.
DungeonsAndDough commentedon Jun 24, 2026
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:
{ "name": "gmail", "source": { "source": "local", "path": "./plugins/gmail" }, "policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, "category": "Communication" }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.