[BUG] Telegram channel plugin: Desktop app zombie processes steal bot polling, MCP server fails

Resolved 💬 2 comments Opened Mar 23, 2026 by AMX-Claw Closed Apr 21, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report
  • [x] I am using the latest version of Claude Code

What's Wrong?

When using the Claude Code Desktop app alongside the CLI --channels Telegram plugin, the Desktop app spawns background processes that hold the Telegram bot polling connection. When you then start claude --channels plugin:telegram@claude-plugins-official in the terminal, the MCP server for Telegram shows as failed because the Desktop app's zombie processes are already polling the same bot token.

The Telegram Bot API only allows one active polling connection per bot token. The Desktop app's lingering processes claim this slot, preventing the CLI channels plugin from connecting.

Steps to Reproduce

  1. Have Claude Code Desktop app running (or recently closed — zombie processes persist)
  2. Install the Telegram plugin: /plugin install telegram@claude-plugins-official
  3. Configure bot token: /telegram:configure <token>
  4. Start CLI with channels: claude --channels plugin:telegram@claude-plugins-official
  5. Check /mcp — Telegram server shows as failed
  6. The bot does not respond to Telegram messages

What Should Happen?

  • The Desktop app should not spawn or retain background processes that poll Telegram bots
  • OR the CLI channels plugin should detect and handle the conflict gracefully
  • OR there should be a mechanism to ensure only one process polls a given bot token at a time

Workaround

Fully quit the Desktop app (not just close the window) and kill any zombie Claude processes before starting the CLI with --channels. However, this defeats the purpose for users who want to use both the Desktop app for chat and the CLI for Telegram integration.

Error Messages/Logs

/mcp output:
plugin:telegram:telegram · ✘ failed

Manual test of the MCP server works fine standalone:
$ echo '{"jsonrpc":"2.0","id":1,"method":"initialize",...}' | bun run server.ts
→ responds correctly, shows "telegram channel: polling as @bot_name"
→ but immediately shuts down when CC tries to start it, because another process holds the polling slot

Claude Code Version

2.1.81

Platform

Claude.ai login (Max plan)

Operating System

macOS (Apple Silicon, Darwin 25.3.0)

Terminal/Shell

zsh

View original on GitHub ↗

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