MCP channel plugin: intermittent 'not allowlisted' errors on tool calls despite correct access.json
Resolved 💬 3 comments Opened Apr 14, 2026 by nobonne Closed Apr 14, 2026
Description
When using the Discord channel plugin (plugin:discord@claude-plugins-official) in --channels mode, MCP tool calls (reply, fetch_messages, etc.) intermittently fail with:
channel <id> is not allowlisted — add via /discord:access
The access.json file is correctly configured and does not change during the session. The error is not caused by the Discord bot or the plugin's server.ts logic.
Reproduction steps
- Start Claude Code with
--channels plugin:discord@claude-plugins-official - Exchange several messages via Discord
- Perform a time-consuming internal operation (e.g., reading multiple image files with the Read tool)
- Attempt to call the
replytool → fails with "not allowlisted" - All subsequent MCP tool calls (
reply,fetch_messages,react, etc.) also fail with the same error - When a new inbound Discord message arrives (triggering an MCP notification), the block is immediately lifted and tool calls succeed again
Observed pattern
- Text-only conversations may also trigger the block, but heavy operations (multiple image reads) make it more likely
- The block duration varies from minutes to hours
fetch_messages(read-only) fails with the same error, confirming it is not a Discord API rate limit- Rewriting
access.jsondoes not resolve the issue - Only an inbound MCP notification (new Discord message) restores functionality
Analysis
server.tshas no timeout, keepalive, or rate-limiting logicfetchAllowedChannel()readsaccess.jsonon every call vialoadAccess()(non-static mode) — the file contents are correct- MCP transport is
StdioServerTransport— the issue appears to be in the Claude Code ↔ MCP stdio pipe, not in the plugin or Discord API - The fact that an inbound notification "wakes" the connection suggests the transport layer enters a suspended or unresponsive state during prolonged internal processing
Environment
- Claude Code: latest (channels mode)
- Plugin:
plugin:discord@claude-plugins-officialv0.0.4 - OS: macOS (Darwin 25.4.0, Apple Silicon)
- Running in tmux via LaunchAgent
Expected behavior
MCP tool calls should succeed regardless of internal processing time, as long as access.json is correctly configured.
Workaround
The user can send a message via Discord to trigger an inbound notification, which immediately restores the ability to make outbound tool calls.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗