[BUG] Development channel allowlist is ignored for local installed plugin channels
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
When testing a locally installed Claude Code plugin channel, Claude Code shows the development channel confirmation dialog, I explicitly confirm "I am using this for local development", and the plugin MCP server connects successfully.
However, channel registration still fails and inbound channel notifications are skipped with this log:
MCP server "plugin:napcat:napcat": Channel notifications skipped: plugin napcat@local-napcat is not on the approved channels allowlist (use --dangerously-load-development-channels for local dev)
This appears to mean the development channel approval is accepted in the UI but not honored by the runtime allowlist check.
What Should Happen?
After I launch Claude Code with:
claude \
--channels plugin:napcat@local-napcat \
--dangerously-load-development-channels plugin:napcat@local-napcat \
--debug
and explicitly confirm the development channel warning dialog, the plugin channel should be added to the approved allowlist for that session, and channel notifications should be registered instead of skipped.
Error Messages/Logs
WARNING: Loading development channels
--dangerously-load-development-channels is for local channel development only. Do not use this option to run channels you have downloaded off the internet.
Please use --channels to run a list of approved channels.
Channels: plugin:napcat@local-napcat
❯ 1. I am using this for local development
2. Exit
2026-04-03T11:35:01.826Z [DEBUG] MCP server "plugin:napcat:napcat": Starting connection with timeout of 30000ms
2026-04-03T11:35:01.954Z [DEBUG] Loading plugin napcat from source: "./plugins/napcat"
2026-04-03T11:35:01.991Z [DEBUG] Using manifest version for napcat@local-napcat: 0.2.0
2026-04-03T11:35:01.993Z [DEBUG] Plugin napcat@local-napcat version 0.2.0 already cached at /home/pectics/.claude/plugins/cache/local-napcat/napcat/0.2.0
2026-04-03T11:35:01.993Z [DEBUG] Resolved local plugin napcat to versioned cache: /home/pectics/.claude/plugins/cache/local-napcat/napcat/0.2.0
2026-04-03T11:35:02.756Z [DEBUG] MCP server "plugin:napcat:napcat": Successfully connected (transport: stdio) in 930ms
2026-04-03T11:35:02.756Z [DEBUG] MCP server "plugin:napcat:napcat": Connection established with capabilities: {"hasTools":true,"hasPrompts":false,"hasResources":true,"hasResourceSubscribe":false,"serverVersion":{"name":"napcat","version":"0.2.0"}}
2026-04-03T11:35:02.756Z [DEBUG] [MCP] Server "plugin:napcat:napcat" connected with subscribe=false
2026-04-03T11:35:02.771Z [DEBUG] MCP server "plugin:napcat:napcat": Channel notifications skipped: plugin napcat@local-napcat is not on the approved channels allowlist (use --dangerously-load-development-channels for local dev)
/home/pectics/.claude/settings.json contains:
"enabledPlugins": {
"napcat@local-napcat": true
}
Steps to Reproduce
- Create a local marketplace directory containing a plugin entry that points to a local Claude Code plugin.
- Add the marketplace:
``bash``
claude plugin marketplace add /path/to/local-marketplace
- Install the plugin from that local marketplace:
``bash``
claude plugin install napcat@local-napcat --scope user
- Launch Claude Code with the installed plugin channel enabled:
``bash``
claude \
--channels plugin:napcat@local-napcat \
--dangerously-load-development-channels plugin:napcat@local-napcat \
--debug
- When the warning dialog appears, select:
``text``
I am using this for local development
- Inspect the debug log.
- Observe that the plugin MCP server connects successfully, but channel notifications are still skipped because the plugin is reported as not being on the approved channels allowlist.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.90 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
WSL (Windows Subsystem for Linux)
Additional Information
This does not appear to be a plugin implementation failure.
The plugin is installed successfully, the plugin skills load, and the plugin MCP server connects successfully with tools/resources available. The failure is specifically in channel allowlist registration after the user accepts the development channel confirmation dialog.
I also observed similar behavior with both:
plugin:napcat@inlineusing--plugin-dirplugin:napcat@local-napcatusing a locally installed marketplace plugin
This suggests the problem may be in development plugin channel allowlist handling rather than in the plugin itself.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗