--plugin-dir breaks --channels — channel plugins (e.g. Telegram) silently fail to start

Resolved 💬 2 comments Opened Apr 1, 2026 by HAL-XP Closed May 9, 2026

Environment

  • Claude Code: v2.1.89
  • OS: Windows 11 Pro (10.0.26200)
  • Node: v22.16.0
  • Bun: 1.3.11

Description

--plugin-dir and --channels are incompatible. Using both flags in the same session causes the channel plugin to fail silently — no error, no log, no diagnostic. The channel MCP server simply never starts.

This effectively makes --plugin-dir unusable for anyone who also uses --channels (Telegram, or any future channel plugin). Since both flags are documented and independently functional, users will naturally combine them. The silent failure makes it extremely hard to diagnose — we lost ~2 hours tracking this down.

Reproduction steps

  1. Create a minimal local plugin:
my-plugin/
  .claude-plugin/plugin.json   # { "name": "test", "version": "1.0.0" }
  .mcp.json                    # { "mcpServers": { "test": { "command": "node", "args": ["-e", "..."] } } }
  1. Launch with both flags:
claude --channels plugin:telegram@claude-plugins-official --plugin-dir ./my-plugin
  1. Run /mcp:
  • my-plugin MCP → ✓ connected
  • plugin:telegram:telegram✗ failed
  1. Relaunch without --plugin-dir:
claude --channels plugin:telegram@claude-plugins-official
  1. Run /mcp → Telegram now shows ✓ connected

Key observations

  • Each flag works perfectly in isolation. --plugin-dir alone loads plugins fine. --channels alone loads channel plugins fine. The breakage only occurs when combined.
  • The failure is completely silent. No stderr, no crash, no entry in /doctor. The only clue is ✗ failed in /mcp — easy to miss.
  • The local plugin is the survivor. The --plugin-dir plugin connects successfully while the --channels plugin is the one that dies.
  • The channel plugin binary works. Tested the Telegram MCP server standalone — full MCP handshake succeeds, valid token, deps installed. The server itself is fine; Claude Code just never starts it.
  • Workaround: load local plugins via the project .mcp.json instead of --plugin-dir. Identical functionality, no conflict with --channels.

Impact

--plugin-dir cannot be used alongside --channels in any session. This blocks the local plugin development workflow for anyone who relies on channel plugins (Telegram being the primary one today). The silent failure means users will waste significant time debugging before discovering the root cause.

View original on GitHub ↗

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