CLI plugin inventory can report account-installed plugins as uninstalled

Open
#33,506 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
55/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
rust
Domain
cli

Research direction

Start in codex-rs/cli/src/plugin_cmd.rs at run_plugin_list, then trace list_marketplaces_for_config and build_and_cache_remote_installed_plugin_marketplaces. Add focused CLI tests for configured, account, and combined scopes, preserving canonical marketplace identities, offline configured behavior, and explicit authentication or remote failures.

Written by the indexing model from the issue text.

Description

bug CLI skills windows-os
Codex variant

CLI. Observed on codex-cli 0.144.4 on Windows 11 / PowerShell 7.6. The configured-only list path is also present in release 0.144.5 and current main (1d941253e9354fe583a033660a6288df66e27488).

Behavior gap

codex plugin list reports configured marketplace snapshots, while account-backed installed plugins live in a separate remote inventory. When both inventories contain the same display name, the CLI can show an uninstalled configured entry while omitting the enabled account-installed entry. This makes a healthy installation look missing to users and diagnostics.

Concrete example:

  • superpowers@openai-curated-remote 6.1.1 is account-installed and enabled.
  • superpowers@openai-curated 5.1.3 is a distinct configured-marketplace entry and is not installed.

codex plugin list --available --json exposes only the second row. App-server plugin/installed exposes the first. Installing the configured 5.1.3 row would create a real duplicate and is not a valid repair.

Source-level cause

codex-rs/cli/src/plugin_cmd.rs::run_plugin_list calls PluginsManager::list_marketplaces_for_config(...), so its inventory is configured-only. Account installations are loaded separately through PluginsManager::build_and_cache_remote_installed_plugin_marketplaces(...) and app-server plugin/installed.

The two records have distinct canonical marketplace identities and must not be coalesced by display name.

Requested behavior

Please expose an explicit account-installed CLI inventory, for example:

codex plugin list --scope configured   # current default, unchanged and offline
codex plugin list --scope account      # account-installed/enabled inventory
codex plugin list --scope all          # both inventories, canonical IDs preserved

The exact command shape is flexible. The important compatibility requirements are:

  • Existing invocations and configured-scope JSON retain their current shape and offline behavior.
  • Account and combined output preserve marketplace provenance and return same-name identities separately.
  • Missing authentication or a remote failure is explicit, never represented as installed: false.
  • --available continues to apply only to configured catalog entries.

I traced the reusable manager API and can contribute focused CLI tests and an implementation. I have not opened a pull request because docs/contributing.md requires an explicit Codex-team invitation.

Dominant language
Rust
Stars
125k
Forks
19.5k
Avg merge
1m
Merged PRs (30d)
1k

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from openai/codex

All issues in openai/codex

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.