claude-bin --channels churns sessions and repeatedly kills the plugin MCP server (2.1.283 regression)

Status Open
Reported on v2.1.283
Maintainer reply None cached
Activity 1 comment · opened Sep 27, 2026

Environment: macOS 27.0 (headless Mac mini), Claude Code 2.1.283, telegram channel plugin v0.0.7 (bun server.ts over stdio).

Summary: Running as a long-lived daemon (claude-bin --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions under launchd), the process starts a new session roughly every 2 minutes and tears down the previous one, closing the plugin's MCP connection each time. The plugin's stdio server sees stdin EOF and self-exits, so the channel stops polling until something respawns it. On 2.1.177 the same setup held a single persistent session and MCP connection for weeks.

Evidence (MCP logs under ~/Library/Caches/claude-cli-nodejs/-/mcp-logs-plugin-telegram-telegram/): repeated cycles of Successfully connected -> Channel notifications registered -> Cleared connection cache for reconnection -> MCP server process exited cleanly, each with a different sessionId. The parent claude-bin process stays alive throughout (launchd KeepAlive is on the wrapper, so nothing restarts the MCP child).

Expected: In --channels daemon mode the session and its MCP connections should persist for the lifetime of the process.

Actual: Session and MCP connection are recycled every couple of minutes, making a channel plugin unusable as a persistent listener.

Workaround: roll the daemon back to 2.1.177, or run an external supervisor that restarts the daemon when the MCP child dies.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗