AI Automation

Channels: message your running Claude Code session from Telegram, Discord or iMessage

TL;DR

Channels push chat messages, alerts and webhooks into a Claude Code session open on your machine; Claude works and replies through the same channel. Telegram takes a few steps, but anyone on the allowlist can effectively command your machine.

You're at a café and remember you need Claude to check a bug in the repo on your machine at home. Or CI just failed at midnight and you want Claude, which already has a session open on exactly that code, to look right away. Channels let you push messages, alerts and webhooks into a running Claude Code session. Claude reads the event, works on your machine, then replies through the same channel. The research preview ships with Telegram, Discord and iMessage.

How do channels differ from similar features?

FeatureHow it worksGood for
ChannelsEvents from outside sources are pushed into an open local sessionA chat bridge from your phone, receiving CI/alert webhooks
Remote ControlYou drive the local session from claude.ai or the Claude appSteering a running session away from your desk
Claude in SlackAn @Claude mention spawns a new cloud sessionStarting work from team conversations
Regular MCPClaude queries on demand; nothing is pushed inReading data when needed

Setting up Telegram

  1. Open BotFather in Telegram, send /newbot, name it, copy the token.
  2. In Claude Code: /plugin install telegram@claude-plugins-official (choose user scope).
  3. Save the token: /telegram:configure <token>.
  4. Restart with the channel: claude --channels plugin:telegram@claude-plugins-official.
  5. Send the bot any message, get a pairing code, then run /telegram:access pair <code>.
  6. Lock down access: /telegram:access policy allowlist.

Channel plugins are Bun scripts, so you need Bun installed. To try it quickly without any account, use the fakechat demo plugin (a chat UI at localhost:8787).

Discord and iMessage

  • Discord: create a bot in the Developer Portal, enable Message Content Intent, invite it to your server with view/send permissions, then install the discord plugin and pair the same way.
  • iMessage: macOS only; it reads the Messages database directly, so your terminal needs Full Disk Access. Texting yourself reaches Claude immediately; add others with /imessage:access allow.

Security

  • Each channel has a sender allowlist; IDs not on it are silently dropped.
  • Being in .mcp.json isn't enough: the server must be named in --channels for each session.
  • If a channel supports permission relay, anyone who can message through it can approve or deny Claude's actions. Only allowlist people you trust with that authority.
  • Team/Enterprise: blocked by default; an Owner must enable channelsEnabled, and can restrict plugins with allowedChannelPlugins.

Risks and caveats

  • Events only arrive while the session is open: for always-on availability, run Claude in a background process or persistent terminal.
  • The session pauses on a permission prompt when you're not at the machine. Don't rush to --dangerously-skip-permissions to "run unattended"; only use it in trusted environments.
  • A compromised Telegram/Discord account = a controlled machine: enable two-factor authentication on your chat accounts.
  • Not available on Bedrock, Vertex or Foundry; the --channels syntax may change during the preview.

How to apply it

  • Dev: Use Telegram as a lightweight remote: ask Claude about the repo at home and get the answer right in the chat.
  • Tech Lead: Build a webhook channel that receives CI results or error alerts, so the Claude session with the right codebase open investigates immediately.
  • PM/Admin: For organisations, only enable approved plugins via allowedChannelPlugins and set rules on who can be added to allowlists.

Sources & references

  1. Push events into a running session with channels — Claude Code Docs