Seeded plugins need a manual /reload-plugins in every fresh session
Version: Claude Code 2.1.296 (also present in 2.1.300)
Setup
Start an interactive session with CLAUDE_CODE_PLUGIN_SEED_DIR pointing at a seed dir that holds one marketplace with an enabled plugin, and an empty CLAUDE_CODE_PLUGIN_CACHE_DIR (any fresh container or VM home).
What happens
The first plugin load finds no marketplaces, so the seeded plugins are not loaded. The background startup checks then copy the seed marketplaces into the cache (Synced 1 marketplace(s) from seed dir(s) in --debug) and mark plugins as needing a refresh. The user sees "Plugins changed. Run /reload-plugins to activate", and the seeded plugins stay inactive until they run it.
Expected
Plugins from the seed dir are active on the first prompt, with no notice. Seed dirs exist for read-only images, where every session starts with an empty cache. So in that setup, this happens in every session.
Suggested fix (either one)
- Run the seed-marketplace sync before the first plugin load, or
- When the sync only fills an empty cache at startup, reload plugins quietly instead of asking the user.
Current workaround
Before launch, we write known_marketplaces.json into the cache in the exact shape the seed sync writes. That copies an internal format, so it breaks whenever the format changes.