Plugin: support codex-resident plugins (skip marketplace mirror tier)
Problem
When a marketplace and its plugins live in the same git repo, the current
three-tier architecture (canonical source -> marketplace mirror -> runtime
cache) creates an invisible drift hazard. The author edits canonical source,
but Claude Code consumes the marketplace mirror -- and the two can drift if
anything updates one without updating the other.
Repro
On 2026-05-06, in a repo that hosts both a marketplace and its plugins, theclaude-conversations plugin's Stop hook silently broke. Diagnosis:
- Canonical source:
<repo>/plugin-sources/claude-conversations/hooks/
declared only UserPromptSubmit; on-stop.sh was NOT present.
- Marketplace mirror:
~/.claude/plugins/marketplaces/<marketplace>/plugin-sources/claude-conversations/hooks/
declared both Stop and UserPromptSubmit; on-stop.sh WAS present.
- Runtime cache (built from the marketplace mirror) tried to invoke
on-stop.sh from a path that didn't exist in the cache, producing
a No such file or directory warning on every Stop event.
Fix: a single commit syncing canonical to mirror. The bug was invisible
until a hook started failing, because nothing surfaces canonical-vs-mirror
divergence.
Ask
For plugins whose marketplace lives in the same git repo as the source, one
or more of the following would eliminate the drift class:
- Option A (preferred): allow a marketplace declaration to point to a
repo-relative path, and have Claude Code skip the mirror tier (link the
runtime cache directly to the canonical source).
- Option B: require the marketplace mirror tier to be git-tracked in
the repo, so canonical and mirror are guaranteed in sync via normal git
workflow.
- Option C: provide a CLI command (e.g.
claude plugin doctor) that
flags canonical-vs-mirror divergence so authors can detect drift before
it manifests as a runtime failure.
Severity
Low for end users (the standard plugin update workflow is unaffected).
High for plugin authors who host the marketplace in the same repo as
the plugin source -- silent breakage with no diagnostic surface.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗