# Claude Code on Telegram, Discord or iMessage

> Claude Code reaches Telegram, Discord and iMessage through channels, a research preview: an official plugin and claude --channels, on your own computer.

Source: https://shuriken.sh/guides/claude-code-telegram-discord-channels

Claude Code reaches Telegram, Discord and iMessage through channels, a research preview: install the official plugin, add a bot token for Telegram or Discord, restart with claude --channels and pair your account. Messages only arrive while that session stays open on your computer.

By Shuriken Updated 27 October 2026 8 min read

**Contents**

Claude Code on Telegram, Discord or iMessage runs through channels, a research preview from Anthropic. Setup is the official plugin, a bot token, a restart with claude --channels plugin:telegram@claude-plugins-official and a pairing code from the bot. Claude keeps working on your own computer, and a message gets through only while that session is open.

## What a channel is #

A channel is an MCP server that pushes events into a Claude Code session that's already running. Anthropic's [channels docs](https://code.claude.com/docs/en/channels) call two-way channels "like a chat bridge". You message your bot, Claude reads it in the session, does the work against your real files, and answers through a reply tool. Channels arrived in Claude Code 2.1.80 and the permission relay in 2.1.81 ([changelog](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md)).

- The reply doesn't show in your terminal. There you see the inbound message, a tool call and a confirmation like "sent"; the text itself lands in Telegram.
- claude --help lists neither --channels nor --dangerously-load-development-channels during the preview, though both work.
- Telegram's Bot API has no message history, so the bot only sees messages as they arrive. If Claude needs earlier context, it asks you to paste it ([Telegram plugin README](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram)).

## What you need first #

- Bun, because each channel plugin is a Bun script. Check with bun --version; the Telegram README installs it with curl -fsSL https://bun.sh/install | bash.
- A claude.ai account, or a Console API key since Claude Code 2.1.128. Channels don't work on Amazon Bedrock, Google Cloud or Microsoft Foundry.
- On claude.ai Team and Enterprise, an Owner's say-so. Channels stay blocked until an Owner turns them on in Organization settings › Claude Code › Channels, or sets channelsEnabled: true in managed settings. Pro and Max users without an organization skip these admin checks.

## Set up Claude Code on Telegram #

- BotFather (@BotFather in Telegram) takes /newbot, then asks for a display name and a username ending in bot, say my_assistant_bot, which becomes t.me/my_assistant_bot. Its last message holds a token shaped like 123456789:AAHf...; copy all of it, digits and colon included.
- Start claude and run /plugin install telegram@claude-plugins-official. Choose the user scope so the plugin is there in every project. If Claude Code says the marketplace isn't found, add it with /plugin marketplace add anthropics/claude-plugins-official and install again.
- /telegram:configure <token> writes one line, TELEGRAM_BOT_TOKEN=..., to ~/.claude/channels/telegram/.env. A variable of that name in your shell overrides the file.
- Quit and start again with claude --channels plugin:telegram@claude-plugins-official. The plugin's server won't connect without that flag.
- DM the bot. It answers "Pairing required" with a 6-character code and the exact command to paste, /telegram:access pair <code>. The code lasts an hour. A second DM gets one "Still pending" reminder and after that the bot says nothing.
- Once you've paired, the bot sends "Paired! Say hi to Claude." Then run /telegram:access policy allowlist: under the default pairing policy every stranger who finds the bot gets a code back, and under allowlist they get silence.

What the plugin keeps on disk and does after that:

- Your numeric user ID and the policy sit in ~/.claude/channels/telegram/access.json. The plugin re-reads it on every message, so a change needs no restart.
- /status sent to the bot answers "Paired as @yourname".
- While Claude works, Telegram shows the bot as typing.
- Photos go to ~/.claude/channels/telegram/inbox/ and Claude gets the path. Telegram compresses them, so for the original send it as a file (long-press › Send as File).

## Claude Code on Discord #

Discord has three extra steps before the plugin, because a bot there can only DM people it shares a server with.

- Developer Portal: New Application, then the Bot tab. Set a username and press Reset Token. Discord shows that token once.
- On the same tab, under Privileged Gateway Intents, switch on Message Content Intent. Without it your messages reach the bot with empty content.
- OAuth2 › URL Generator: tick the bot scope, then View Channels, Send Messages, Send Messages in Threads, Read Message History, Attach Files and Add Reactions. Open the generated URL and add the bot to a server you're in.
- Back in Claude Code: /plugin install discord@claude-plugins-official, /discord:configure <token> (it writes DISCORD_BOT_TOKEN to ~/.claude/channels/discord/.env), and a restart with claude --channels plugin:discord@claude-plugins-official.
- DM the bot, paste the /discord:access pair <code> line it sends back into Claude Code, then set /discord:access policy allowlist.

Make it a private server, since anyone in it can DM the bot. The plugin's [access guide](https://github.com/anthropics/claude-plugins-official/blob/main/external_plugins/discord/ACCESS.md) also says to turn off Public Bot on the Bot tab (it's on by default); then only your account can install the bot anywhere. Server channels stay off until you add one with /discord:access group add <channel ID>, copied with Developer Mode on via right-click › Copy Channel ID. In those channels the bot answers only when it's mentioned or replied to, unless you pass --no-mention.

## Claude Code on iMessage #

iMessage needs a Mac and no bot. The plugin polls ~/Library/Messages/chat.db once a second and sends replies with osascript, through Messages.

- Give your terminal Full Disk Access. macOS asks the first time the plugin reads the database, naming whichever app launched Bun (Terminal, iTerm, Ghostty or your IDE). If you missed it, add that app in System Settings › Privacy & Security › Full Disk Access. Without it, the server stops with authorization denied.
- Run /plugin install imessage@claude-plugins-official, then restart with claude --channels plugin:imessage@claude-plugins-official. If /imessage:configure tab-completes, the plugin loaded.
- Text yourself from any device signed in to your Apple ID. Self-chat passes with no pairing. The first reply makes macOS ask whether your terminal may control Messages: click OK.
- Each reply ends in "Sent by Claude" unless you set IMESSAGE_APPEND_SIGNATURE=false.
- Other people stay out until you add them with /imessage:access allow +15551234567 or their Apple ID email.
- SMS is off by default, because SMS sender IDs can be spoofed: a forged text from your own number would skip the gate. IMESSAGE_ALLOW_SMS=true turns it on.
- Texts that arrived before the session started aren't replayed.

With Shuriken you follow and answer your agents' chats from your phone.

[Download](https://shuriken.sh/download)

## Keep the session open #

Events only arrive while the session runs. If the terminal closes, the laptop sleeps or you log out, nothing on your computer is reading the chat. Anthropic's advice is to run Claude in a background process or a persistent terminal. With tmux on a machine that stays awake, that's tmux new -s bot, the --channels command inside it, then Ctrl-b d to detach and tmux attach -t bot to look in later. Our guide to [Claude Code on an always-on machine](https://shuriken.sh/guides/claude-code-on-an-always-on-machine) covers the box, the headless sign-in and tmux.

Two dialogs never reach your phone: project trust and MCP server consent only show in the local terminal. So start the session once in a folder you've already trusted.

## Who can approve tool use from the chat #

All three official plugins declare the permission relay. When Claude wants to run Bash, Write or Edit and needs your yes, the prompt opens in the terminal and goes to the chat at the same time, and Claude Code applies whichever answer comes first. Telegram and Discord send it to every allowlisted account, with Allow, Deny and See more buttons. iMessage sends it only to your own self-chat, where you reply yes or no followed by the five-letter code in the prompt.

So on Telegram and Discord the allowlist is a security setting as well as a spam filter. The security section of the channels docs ends on exactly that: "Anyone who can reply through the channel can approve or deny tool use in your session, so only allowlist senders you trust with that authority." Keep the list to yourself unless you'd hand that person your keyboard.

If prompts pile up, decide in advance what Claude may do without asking. Our [permission rules guide](https://shuriken.sh/guides/claude-code-permission-rules) has a starter set of allow and deny rules, and the docs name --dangerously-skip-permissions for unattended use, with the warning to run it only in environments you trust.

## Channels vs Remote Control vs cloud sessions #

| | Channels | Remote Control | Cloud sessions |
| --- | --- | --- | --- |
| Where Claude runs | Your computer | Your computer | Anthropic's cloud, cloned from GitHub |
| You talk to it from | Telegram, Discord, iMessage | The Claude app or claude.ai/code | claude.ai/code, the Claude app, the desktop app, claude --cloud |
| Sign-in | claude.ai or Console API key | Pro, Max, Team or Enterprise; no API keys | Pro, Max, Team; Enterprise with eligible seats |
| Laptop asleep | Messages don't arrive | Reconnects when it wakes | Keeps running |
| Status | Research preview | Available | Available |

Sources: [channels](https://code.claude.com/docs/en/channels), [Remote Control](https://code.claude.com/docs/en/remote-control) and [cloud sessions](https://code.claude.com/docs/en/claude-code-on-the-web) docs, read 24 October 2026.

Channels suit you if Telegram, Discord or Messages is open all day anyway. Remote Control puts the whole session on your phone, tool output included; [How to run Claude Code from your phone](https://shuriken.sh/guides/run-claude-code-from-your-phone) sets it up next to SSH and the other options. A cloud session is the one that keeps going with your computer off.

## How Shuriken does it #

Shuriken has no Telegram, Discord or iMessage bridge. You reach its chats through its own app, on your computers and in a phone browser.

On a phone that's the web app at app.shuriken.sh, in any browser, and it adds to the home screen. It shows every chat on every computer and server you've added, for Claude Code, Codex, Gemini CLI and 64 more agents, where a channel shows one session per bot. You answer questions and approvals there, queue the next message while an agent works, and dictate instead of typing. What travels between your devices is end-to-end encrypted, and the agents and your code stay on your machines.

It has two limits:

- The web app's pushes cover account alerts only, such as a device going offline or a source that needs signing in again. A push when a chat needs you comes with the native iOS and Android apps, planned for November 2026 ([what the phone can do today](https://shuriken.sh/features/phone)).
- Like every option on this page, it needs the computer running the agent to be on.

Being told when an agent is done, with a Stop hook and ntfy or with Remote Control's push, is set up step by step in [Claude Code notifications on your phone](https://shuriken.sh/guides/claude-code-notifications-on-your-phone).

If you'd rather follow every agent from one place than keep a bot per session, [download Shuriken](https://shuriken.sh/download).

Share

[X](https://x.com/intent/post?url=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-telegram-discord-channels&text=Claude%20Code%20on%20Telegram%2C%20Discord%20or%20iMessage)[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-telegram-discord-channels)[Hacker News](https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-telegram-discord-channels&t=Claude%20Code%20on%20Telegram%2C%20Discord%20or%20iMessage)[Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-telegram-discord-channels&title=Claude%20Code%20on%20Telegram%2C%20Discord%20or%20iMessage)[E-mail](mailto:?subject=Claude%20Code%20on%20Telegram%2C%20Discord%20or%20iMessage&body=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-telegram-discord-channels)

## Sources

- [Claude Code docs: Push events into a running session with channels](https://code.claude.com/docs/en/channels) (accessed 24 October 2026)
- [Claude Code docs: Channels reference](https://code.claude.com/docs/en/channels-reference) (accessed 24 October 2026)
- [Claude Code docs: Remote Control](https://code.claude.com/docs/en/remote-control) (accessed 24 October 2026)
- [Claude Code docs: Use Claude Code in the cloud](https://code.claude.com/docs/en/claude-code-on-the-web) (accessed 24 October 2026)
- [Claude Code changelog](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md) (accessed 24 October 2026)
- [claude-plugins-official: Telegram plugin](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) (accessed 24 October 2026)
- [claude-plugins-official: Discord plugin](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) (accessed 25 October 2026)
- [claude-plugins-official: Discord plugin access guide](https://github.com/anthropics/claude-plugins-official/blob/main/external_plugins/discord/ACCESS.md) (accessed 24 October 2026)
- [claude-plugins-official: iMessage plugin](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) (accessed 24 October 2026)

## Frequently asked questions

**Does the Claude Code Telegram plugin work with an API key?**

Yes, with a Claude Console API key since Claude Code 2.1.128. Console organizations that deploy managed settings must set channelsEnabled to true. Channels don't work on Amazon Bedrock, Google Cloud or Microsoft Foundry.

**Why doesn't my Telegram bot answer?**

The bot can only reply while Claude Code is running with the --channels flag. Check that the session is open, that you restarted it after installing the plugin, and on a Team or Enterprise plan that an Owner has turned channels on.

**Can I approve Claude Code's tool use from Telegram?**

Yes. The official Telegram, Discord and iMessage plugins relay prompts for tools such as Bash, Write and Edit: Telegram and Discord send Allow, Deny and See more buttons to every allowlisted account, and iMessage asks only in your self-chat, where you reply yes or no with a five-letter code. Whichever answer arrives first, terminal or chat, wins.

**Why is --channels not in claude --help?**

Anthropic hides --channels and --dangerously-load-development-channels from the help output while channels are a research preview. The flags still work.

**Does Shuriken connect to Telegram or Discord?**

No. Shuriken has no Telegram, Discord or iMessage bridge. You reach its chats from the web app at app.shuriken.sh in any phone browser, across every computer and server you've added.

On your phone

Your agents in your pocket.

Follow every chat from your phone: the queue, the changes and your voice, end-to-end encrypted.

[Download](https://shuriken.sh/download)

[Other platforms](https://shuriken.sh/download#main)

## Keep reading

- [Claude Code on Android with Termux: what works: Guide 27 Oct 2026 7 min read Claude Code broke on plain Termux in April 2026: it became a glibc binary Android can't run. Ubuntu in proot-distro works; a remote computer works better.](https://shuriken.sh/guides/claude-code-android-termux)
- [How to use Claude Code on an iPad: Guide 27 Oct 2026 7 min read Claude Code doesn't run on iPadOS. On an iPad you drive it remotely: Remote Control, cloud sessions at claude.ai/code, or SSH and tmux to your computer.](https://shuriken.sh/guides/claude-code-on-ipad)
- [Claude Code Remote Control not working? Fixes: Guide 27 Oct 2026 8 min read Remote Control fails when an API key or gateway outranks your claude.ai login, an org leaves it off, or the claude process stops. Each message and its fix.](https://shuriken.sh/guides/claude-code-remote-control-not-working)
- [Codex remote control: run Codex from your phone: Guide 27 Oct 2026 7 min read Codex remote control runs through the ChatGPT mobile app and a paired Mac or Windows PC. Linux works only as an SSH host; the CLI command is experimental.](https://shuriken.sh/guides/codex-remote-control-from-phone)
- [Your agents on your phone, from the browser: Update 27 Oct 2026 4 min read Open app.shuriken.sh in any phone browser and add it to your home screen: every chat, the queue, Changes and voice. Browsers never count as devices.](https://shuriken.sh/blog/phone-web-app)
- [We're building native iOS and Android apps: Planned 27 Oct 2026 3 min read Two native phone apps for Shuriken, iPhone and Android, are planned for November 2026. Until then, phones use the web app at app.shuriken.sh.](https://shuriken.sh/blog/native-ios-android-apps)
- [A notification when a chat needs you: Update 27 Oct 2026 3 min read Get a desktop notification when Claude Code or Codex finishes, asks a question or wants approval. The DIY hooks route, and what Shuriken does for you.](https://shuriken.sh/blog/desktop-notifications)
- [Shuriken vs Claude Code Desktop (2026): Comparison 27 Oct 2026 5 min read Anthropic's desktop app is official and comes with your plan. Shuriken runs the same Claude Code CLI and adds several accounts, other agents and servers.](https://shuriken.sh/compare/claude-code-desktop)

## Free tools

- [Claude limit reset tracker](https://shuriken.sh/tools/limit-resets/claude)
- [Codex limit reset tracker](https://shuriken.sh/tools/limit-resets/codex)
