[BUG] Permission relay not working with --dangerously-load-development-channels server: channels
Description
When using the Telegram channel plugin via --dangerously-load-development-channels server:<name> (MCP server approach), permission relay does not work. Permission requests are sent to the Telegram chat via inline buttons, but the relay response never reaches Claude Code — the tool execution times out regardless of the user's Allow/Deny choice.
The same plugin works correctly when loaded via --channels plugin:telegram@claude-plugins-official (official plugin approach) — permission relay functions as expected with v0.0.2+.
Steps to Reproduce
- Register the official Telegram plugin as a local MCP server:
``bash``
claude mcp add -e TELEGRAM_STATE_DIR=~/.claude/channels/telegram -s local telegram-home bun -- run --cwd ~/.claude/plugins/cache/claude-plugins-official/telegram/0.0.4 --shell=bun --silent start
- Start Claude Code with the server channel:
``bash``
claude --dangerously-load-development-channels server:telegram-home
- Send a message via Telegram that triggers a tool requiring permission (e.g., "run
ls -la")
- Claude sends a permission request to Telegram with Allow/Deny inline buttons
- Click "Allow" — nothing happens. The tool execution times out after 60s.
Expected Behavior
Clicking Allow/Deny in Telegram should relay the permission decision back to Claude Code, just like it does with --channels plugin:telegram@claude-plugins-official.
Actual Behavior
The permission request is displayed in Telegram correctly, but the relay response (via claude/channel/permission_response notification) is never received by Claude Code when using the server: channel loading method.
Environment
- Claude Code: v2.1.86 (standalone binary on WSL2)
- Telegram plugin: v0.0.4 (claude-plugins-official)
- OS: Ubuntu 24.04 (WSL2)
- Bun: v1.3.11
Workaround
Using --dangerously-skip-permissions bypasses the issue entirely, but this removes all permission checks.
Notes
- The plugin declares
claude/channel/permissioncapability in its MCP server capabilities - The plugin's
setNotificationHandlerfornotifications/permission_requestfires correctly (buttons appear in Telegram) - The issue appears to be on the Claude Code side: it does not listen for or process
claude/channel/permission_responsenotifications fromserver:channels - Ref: The plugin README mentions permission relay was added in v0.0.2 for
--channelsmode
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗