Plugins panel intermittently shows the first-run empty state while 51 plugins are installed (LocalPluginsReader: Found 0 enabled local plugins)

Status Open
Reported on v2.1.247
Maintainer reply None cached
Activity 0 comments · opened Aug 31, 2026

Summary

The Plugins panel ("Your plugins") intermittently renders the first-run empty state
— "Add your first plugins / Give Claude role-level expertise with plugins" — while 51 plugins are
installed and 9 are enabled. The list comes back after a marketplace refresh. Nothing on disk
changes in between.

Environment

| | |
|---|---|
| Desktop app | 1.40609.0 |
| CCD | 2.1.247 |
| OS | Windows 10 Pro 19045 |
| Marketplace | claude-plugins-official (git) |
| State | 51 installed, 9 enabled |

Evidence

Two different counters alternate in %LOCALAPPDATA%\Claude\logs\main.log, seconds apart, with no
intervening user action and no file change:

2026-08-31 09:58:13 [info] [LocalPluginsReader] Found 51 local plugins
2026-08-31 09:58:14 [info] [LocalPluginsReader] Found 51 local plugins
2026-08-31 09:58:14 [info] [LocalPluginsReader] Found 0 enabled local plugins (0 installed)
2026-08-31 10:13:31 [info] [LocalPluginsReader] Found 0 enabled local plugins (0 installed)
2026-08-31 10:18:59 [info] [LocalPluginsReader] Found 51 local plugins

Found 0 enabled local plugins (0 installed) occurs 76 times in this log, 11 of them today.
It also fires seconds after a cold start — the app started at 10:13:25 and logged the empty
count at 10:13:31, which is exactly the window in which a user opens the panel after launching.

Meanwhile ~/.claude/settings.json was untouched (mtime 09:58:12, 51 entries, 9 set to true),
and the remote sync removes nothing:

2026-08-31 10:24:30 [info] [RemotePluginManager] Delta: 0 to download, 0 to remove
2026-08-31 10:24:30 [info] [PluginsFetcher] fetchAutoInstalledPlugins: 0 plugins
2026-08-31 10:24:30 [info] [RemotePluginManager] Sync complete: 0 downloaded, 0 removed, 0 orphans cleaned

The plugins are in fact loaded the whole time — the same log shows the session receiving them:

2026-08-31 10:19:04 [info] [CCD] Passing 10 plugin(s) to SDK (skills: 1, remote: 0, local: 9)

Steps to reproduce

Not deterministic. Observed reliably enough by: launch the app, open the Plugins panel within the
first few seconds, and compare against the panel reopened after a marketplace refresh.

Workaround

Refresh the marketplace — opening the panel's refresh control repopulates the list:

2026-08-31 10:29:48 [info] [CCDMarketplacePluginManagerCLI] Refreshing marketplace: claude-plugins-official
2026-08-31 10:29:51 [info] [LocalPluginsReader] Found 51 local plugins

Expected

The panel should render installed plugins, or an explicit loading state — never the "you have no
plugins" empty state while plugins are installed.

Impact

The empty state is indistinguishable from "you have no plugins here". In our case it was read as
the marketplace not being available on that machine, and the user gave up on installing plugins
there for two days. A "still loading" placeholder instead of the first-run copy would avoid the
false conclusion even if the underlying race stays.

View original on GitHub ↗