[Bug] Windows: personal plugin is invocable but remains “not installed” in CLI and is missing from Desktop UI

Open 💬 1 comment Opened Jul 20, 2026 by willbdx-ux

Environment

  • OS: Windows x64
  • Codex Desktop package: 26.715.7063.0
  • Codex Desktop internal CLI: 0.145.0-alpha.18
  • Standalone Codex CLI: 0.142.5
  • Plugin: project-mastery@personal, version 0.1.0

Summary

A local plugin from the default personal marketplace is fully cached, enabled in configuration, loaded into new conversations, and its namespaced skills are invocable.

However, both Codex CLI versions still report the plugin as not installed, and Codex Desktop does not display the personal marketplace or the plugin.

Reproduction

  1. Define a local plugin in the default personal marketplace.
  2. Run:
codex plugin add project-mastery@personal --json
  1. Observe exit code 0.
  2. Restart Codex and open a new conversation.
  3. Run:
codex plugin list --available --json
  1. Invoke:
$project-mastery:project-mastery

Actual result

  • plugin add exits successfully.
  • The plugin cache is present.
  • config.toml contains:
[plugins."project-mastery@personal"]
enabled = true
  • Source and cache contain the same 41 files with matching SHA-256 hashes.
  • Seven namespaced skills are present in a new conversation.
  • The main skill and its referenced resources can be loaded and used.
  • Nevertheless, plugin list returns an empty installed collection and reports:
installed: false
enabled: false
  • Codex Desktop’s Plugins settings do not show the personal marketplace or project-mastery.
  • The standalone and Desktop-internal CLI versions return the same inconsistent status.

Expected result

When a plugin is cached, enabled, injected into a new conversation, and invocable:

  • CLI should report it as installed and enabled;
  • Desktop should display its installation state;
  • plugin add should not return success unless the canonical installed state has been committed.

The plugin-listing, installed-plugin, Desktop UI, and skill-injection surfaces should derive their status from one canonical state.

Additional context

No cache deletion, manual state fabrication, global AGENTS.md workaround, or repeated reinstall was used.

Potentially related:

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗