[BUG] Development channel allowlist is ignored for local installed plugin channels

Resolved 💬 4 comments Opened Apr 3, 2026 by Pectics Closed May 13, 2026

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

  1. Create a local marketplace directory containing a plugin entry that points to a local Claude Code plugin.
  2. Add the marketplace:

``bash
claude plugin marketplace add /path/to/local-marketplace
``

  1. Install the plugin from that local marketplace:

``bash
claude plugin install napcat@local-napcat --scope user
``

  1. 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
``

  1. When the warning dialog appears, select:

``text
I am using this for local development
``

  1. Inspect the debug log.
  1. 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@inline using --plugin-dir
  • plugin:napcat@local-napcat using a locally installed marketplace plugin

This suggests the problem may be in development plugin channel allowlist handling rather than in the plugin itself.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗