Feature Request: Liveness indicator for external channels (Telegram, etc.) via WebSockets

Resolved 💬 3 comments Opened Mar 21, 2026 by dhruv-anand-aintech Closed Apr 20, 2026

Summary

When using Claude Code with external channels (e.g., Telegram via the channel plugin), there is currently no way to know whether the Claude Code session is actively running and processing a request. This makes the experience feel opaque — messages are sent and you wait with no feedback.

Proposed Solution

Add a liveness/activity indicator that is pushed back to external channel integrations in real-time, ideally via WebSockets or a similar push mechanism. This would allow channel integrations to display a "typing..." or "processing..." status indicator while Claude Code is actively working.

Use Case

  • User sends a message via Telegram to a Claude Code session
  • The Telegram integration receives a liveness signal (e.g., a heartbeat or "processing" event over WebSocket)
  • A typing indicator or status message is shown in Telegram so the user knows the session is alive and working
  • When Claude Code finishes, the indicator clears and the response arrives

Why This Matters

Without a liveness signal:

  • Users don't know if their message was received
  • Users don't know if Claude Code is still processing or has crashed/timed out
  • Long-running tasks feel broken

Suggested Implementation Approaches

  1. WebSocket push events: Claude Code emits structured events ({ type: "processing" }, { type: "idle" }) over a WebSocket that channel integrations can subscribe to
  2. Heartbeat/polling endpoint: A lightweight endpoint that returns current session state
  3. Hook-based: A onProcessingStart / onProcessingEnd hook that channel integrations can listen to

Additional Context

This would significantly improve the UX of any external channel integration with Claude Code (Telegram, Slack, Discord, etc.) and make the tool feel more responsive and production-grade for remote use cases.

🤖 Filed via Claude Code

View original on GitHub ↗

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