[BUG] Permission relay not working with --dangerously-load-development-channels server: channels

Resolved 💬 3 comments Opened Mar 28, 2026 by vimholic Closed Apr 29, 2026

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

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

  1. Start Claude Code with the server channel:

``bash
claude --dangerously-load-development-channels server:telegram-home
``

  1. Send a message via Telegram that triggers a tool requiring permission (e.g., "run ls -la")
  1. Claude sends a permission request to Telegram with Allow/Deny inline buttons
  1. 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/permission capability in its MCP server capabilities
  • The plugin's setNotificationHandler for notifications/permission_request fires 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_response notifications from server: channels
  • Ref: The plugin README mentions permission relay was added in v0.0.2 for --channels mode

View original on GitHub ↗

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