Plugin skill paths leak mutable marketplace cache commit into model-visible context

Open 💬 1 comment Opened Jun 1, 2026 by MascaraDeemo

Plugin skill paths leak mutable marketplace cache commit into model-visible context

Summary

Codex Desktop exposes local plugin cache paths for skills in model-visible context. For the Superpowers plugin, the path includes the current openai-curated marketplace commit prefix, for example:

$HOME/.codex/plugins/cache/openai-curated/superpowers/8770e9d2/skills/using-superpowers/SKILL.md

That cache suffix changes when the curated marketplace repository updates, even when the Superpowers plugin itself has not changed. This makes an internal implementation detail user-visible and potentially confusing, and it leaks local filesystem layout into prompts/context.

Environment

  • Product: Codex Desktop
  • Session cli_version: 0.135.0-alpha.1
  • Platform: macOS
  • Plugin: superpowers@openai-curated
  • Superpowers plugin version: 5.1.0
  • Current curated marketplace commit: 8770e9d21ce393173797c63b25dc38fb18ddd7c8

Observed behavior

The available skills list shown to the model includes absolute local paths like:

$HOME/.codex/plugins/cache/openai-curated/superpowers/8770e9d2/skills/systematic-debugging/SKILL.md

Earlier sessions referenced the same plugin under a different cache suffix:

$HOME/.codex/plugins/cache/openai-curated/superpowers/6188456f/skills/systematic-debugging/SKILL.md

On the current machine:

$ cat ~/.codex/.tmp/plugins.sha
8770e9d21ce393173797c63b25dc38fb18ddd7c8

$ git -C ~/.codex/.tmp/plugins log -1 --format='%H %cI %s'
8770e9d21ce393173797c63b25dc38fb18ddd7c8 2026-05-31T23:02:32-07:00 Add Moody's plugin skills (#293)

$ grep -n '"version"' ~/.codex/plugins/cache/openai-curated/superpowers/8770e9d2/.codex-plugin/plugin.json
3:  "version": "5.1.0",

So the visible cache suffix appears to be derived from the whole openai/plugins marketplace revision, not from the Superpowers plugin content or version. A marketplace update for an unrelated plugin caused the user-visible Superpowers cache path to change.

Expected behavior

Users and models should not need to know local plugin cache paths. Model-visible skill metadata should expose stable identifiers such as:

superpowers:systematic-debugging
superpowers:using-superpowers

or a stable virtual URI, not a mutable absolute filesystem path.

Impact

  • Users can notice and ask why an internal Superpowers cache path changed even though they changed nothing.
  • Generated instructions, debugging output, or user scripts may accidentally rely on volatile cache paths.
  • The model-visible prompt leaks local filesystem details such as home directory layout.
  • Marketplace updates for unrelated plugins can make a stable plugin appear to have moved.

Suggested fixes

  1. Do not include absolute local SKILL.md paths in model-visible skill metadata. Expose stable skill IDs and let the loader resolve them internally.
  2. Consider stable virtual URIs for internal references, for example codex://skills/superpowers/systematic-debugging.
  3. Scope plugin cache keys to the individual plugin content hash or plugin version rather than the whole marketplace commit.
  4. Keep active-session plugin paths stable across marketplace refreshes, or resolve through an immutable session manifest.
  5. Add a regression test that refreshes openai-curated with an unrelated plugin change and verifies that model-visible Superpowers skill identifiers remain unchanged and do not contain $HOME/.codex/plugins/cache/....

View original on GitHub ↗

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