Skip to content

CLI /plugins browser does not show installed local plugins #29654

Closed

Description

@ft-ioxcs

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

  1. Start Codex CLI.
  2. Run /plugins in the TUI.
  3. Observe the plugin browser output.
  4. 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.

Activity

  1. added
    bugSomething isn't working
    CLIIssues related to the Codex CLI
    TUIIssues related to the terminal user interface: text input, menus and dialogs, and terminal display
    skillsIssues related to skills
    on Jun 23, 2026
  2. github-actions commented on Jun 23, 2026

    @github-actions
    Contributor

    Potential duplicates detected. Please review them and close your issue if it is a duplicate.

    Powered by Codex Action

  3. abhay-codes07 commented on Jun 23, 2026

    @abhay-codes07

    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:

    .list_marketplaces_for_config(&plugins_input, &[], /*include_openai_curated*/ true)

    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:

    let include_global_remote =
        !explicit_marketplace_kinds && config.features.enabled(Feature::RemotePlugin);
    let use_remote_global_catalog =
        include_global_remote && auth_mode.is_some_and(AuthMode::uses_codex_backend);
    // ...
    .list_marketplaces_for_config(
        // ...
        /*include_openai_curated*/ !use_remote_global_catalog,
    )?;

    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.

  4. DungeonsAndDough commented on Jun 24, 2026

    @DungeonsAndDough

    Additional reproduction from codex-cli 0.142.0 on WSL/Ubuntu:

    Environment

    Codex CLI: codex-cli 0.142.0
    OS: Ubuntu 24.04 under WSL
    Auth: ChatGPT auth configured
    Marketplace: openai-curated
    

    Relevant local checks:

    codex plugin marketplace list
    # MARKETPLACE     ROOT
    # openai-curated  /home/catalyst/.codex/.tmp/plugins
    
    node -e "const fs=require('fs'); const j=JSON.parse(fs.readFileSync('/home/catalyst/.codex/.tmp/plugins/.agents/plugins/marketplace.json','utf8')); console.log(j.plugins.length)"
    # 179

    Observed behavior

    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:

    {
      "name": "gmail",
      "source": { "source": "local", "path": "./plugins/gmail" },
      "policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" },
      "category": "Communication"
    }

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    CLIIssues related to the Codex CLITUIIssues related to the terminal user interface: text input, menus and dialogs, and terminal displaybugSomething isn't workingskillsIssues related to skills

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions