[BUG] Telegram channel plugin: Desktop app zombie processes steal bot polling, MCP server fails
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
- Have Claude Code Desktop app running (or recently closed — zombie processes persist)
- Install the Telegram plugin:
/plugin install telegram@claude-plugins-official - Configure bot token:
/telegram:configure <token> - Start CLI with channels:
claude --channels plugin:telegram@claude-plugins-official - Check
/mcp— Telegram server shows as failed - 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
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗