Telegram channel plugin silently stops receiving messages after period of inactivity

Resolved 💬 3 comments Opened Mar 21, 2026 by vatsalj Closed Apr 18, 2026

Description

The Telegram channel plugin (plugin:telegram@claude-plugins-official) silently stops receiving messages after a period of inactivity (~20-30 minutes). The Claude Code session remains fully alive, MCP connection shows as connected, no errors are logged, but notifications/claude/channel events stop flowing. New Telegram messages are never delivered to the session.

Environment

  • Claude Code v2.1.81
  • macOS (Apple Silicon, Darwin 25.3.0)
  • Running in tmux with --channels plugin:telegram@claude-plugins-official
  • --permission-mode bypassPermissions
  • --debug mcp --debug-file /tmp/exec-assistant-debug.log

Steps to Reproduce

  1. Start Claude Code with Telegram channel: claude --channels plugin:telegram@claude-plugins-official --permission-mode bypassPermissions
  2. Send messages via Telegram — they arrive correctly as notifications/claude/channel
  3. Wait ~20-30 minutes with no inbound Telegram messages
  4. Send a new message via Telegram
  5. Message never arrives — no channel notification in debug log

Debug Log Evidence

Instance 1: Tool becomes unavailable, auto-reconnect works but delayed

06:24:16 [DEBUG] MCP server "plugin:telegram:telegram": Tool 'reply' completed successfully in 412ms
06:25:15 [DEBUG] MCP server "plugin:telegram:telegram": notifications/claude/channel: <message received>
06:25:37 [WARN]  Filtering out tool_reference for unavailable tool: mcp__plugin_telegram_telegram__reply
06:26:05 [ERROR] Error: Error: Tool mcp__plugin_telegram_telegram__reply not found
06:26:06 [DEBUG] MCP server "plugin:telegram:telegram": Starting connection with timeout of 30000ms
06:26:06 [DEBUG] MCP server "plugin:telegram:telegram": Successfully connected (148ms)
06:26:06 [DEBUG] MCP server "plugin:telegram:telegram": Channel notifications registered
06:30:10 [DEBUG] MCP server "plugin:telegram:telegram": Tool 'reply' completed successfully (371ms) ← recovered

Instance 2: Complete silence, no reconnection attempt

06:30:10 [DEBUG] MCP server "plugin:telegram:telegram": Tool 'reply' completed successfully in 371ms
06:30:40 [DEBUG] Stopped caffeinate, allowing sleep
... (25+ minutes of silence — no errors, no warnings, no Telegram activity)
... session alive at ❯ prompt, /mcp shows telegram as "connected"
... messages sent via Telegram at 12:37 and 12:38 IST never arrive

Instance 3 (earlier session, no debug): Tool unavailable for hours

04:05:14 — Last successful reply
04:25:27 — First WARN: Filtering out tool_reference for unavailable tool: mcp__plugin_telegram_telegram__reply
04:25 - 05:50 — Same warning every 5 minutes on cron tick. No reconnection attempt. No error.

Key Observations

  • The MCP stdio connection stays alive — no crash, no disconnect logged
  • /mcp shows plugin:telegram:telegram · ✔ connected even when messages aren't flowing
  • grammy's long-polling appears to silently stop receiving updates
  • In Instance 1, the auto-reconnect worked when Claude tried to call the reply tool and got an error. But in Instance 2, since nothing triggered a tool call, the silent failure was never detected.
  • CronCreate jobs fire normally during the failure period — only the channel notification path is broken
  • This is NOT a sleep issue — confirmed Mac was awake (Amphetamine running, pmset assertions active, other tools working)

Expected Behavior

The Telegram channel plugin should either:

  1. Maintain the long-polling connection reliably, or
  2. Detect when long-polling stops receiving and reconnect automatically, or
  3. Implement a heartbeat/health check that detects silent failures

Workaround

Currently no reliable workaround. The heartbeat script only detects if the tmux session / claude process dies, not if the Telegram plugin is silently broken.

View original on GitHub ↗

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