Back to blog
comparisonchannelsclaude-code

Clautel vs Claude Code Channels: An Honest Comparison

AnasMarch 28, 20267 min read

On March 20, Anthropic launched Channels for Claude Code. It's a plugin system that connects your Claude Code session to messaging platforms. Telegram, Discord, iMessage. It's open source, it's free, and it's built on the MCP protocol.

This is the exact problem we built Clautel to solve. So let's talk about it honestly.

What Channels Actually Is

Channels is an MCP server that runs as a subprocess of Claude Code. It polls Telegram for messages and pushes them into your active Claude Code session. Claude responds, and the response goes back to Telegram.

The concept is solid. But the architecture creates some hard constraints that matter if you're planning to use it for real work.

The Fundamental Difference

Here's the one thing you need to understand: Channels lives inside your Claude Code session.

When the session ends, the channel ends. Close your terminal, the bot goes offline. Messages sent while you're offline are lost forever. From the official docs:

"Events only arrive while the session is open. Close the terminal or stop the claude process and the channel goes offline. Messages sent while the session is down are lost (Telegram)."

Anthropic's own suggestion for always-on availability? Run Claude Code inside tmux.

Clautel takes the opposite approach. It runs as a background daemon registered with macOS launchd. No terminal needed. Survives reboots. Actually always-on.

This isn't a bug that'll get fixed. It's a design choice. Everything else flows from it.

What's Broken Right Now

Let's separate "broken today" from "different by design." This matters because bugs get fixed. Architecture doesn't.

Messages stop processing after the first response

GitHub Issue #38259, open as of March 27. After Claude responds to your first message, it goes back to the prompt and stops listening. New messages from Telegram arrive at the MCP server but never trigger a new turn.

You have to walk to your terminal and press Enter to wake it up.

One commenter says: "This is blocking production usage for us."

Messages silently disappear

GitHub Issue #37933, open as of March 26. Messages sent from Telegram reach the MCP server but never appear in Claude Code. No errors logged. They're just gone.

A 4-person QA team tested it and confirmed: inbound text messages never reached conversation. They had to build a Python polling script as a workaround. The same bot token works fine with other tools, confirming the bug is Claude Code-specific.

Zombie processes eat your CPU

The Telegram plugin auto-loads in every claude -c session, even without the --channels flag (#38098). Previous sessions leave orphaned Bun processes that eat 100% CPU and fight the current session for the Telegram polling slot. Messages get randomly split between processes. Roughly 50% lost on the intended session.

These bugs will get fixed. Anthropic ships fast. But they're real today, and if you're trying to use Channels for actual work right now, you'll hit them.

What's Different By Design

These are the structural differences that come from the architecture. They won't change when the bugs are fixed.

Per-project isolation

Channels connects to one Claude Code session. One terminal, one project, one chat.

Clautel gives each project its own Telegram bot. Your frontend bot, your backend bot, your side project bot. Switch projects by switching chats. The Manager Bot lets you add and remove projects with /add.

Permission approvals

Channels has a permission relay system. When Claude needs to run a tool, it sends you a message with a 5-letter code. You type "yes abcde" to approve. If autocorrect changes the code, or you mistype a letter, it falls through as a regular message.

The practical reality: most users end up running --dangerously-skip-permissions to make Channels usable remotely.

Clautel gives you inline Telegram buttons. Approve or Deny, one tap. No typing codes. No skipping all permissions.

Session history

Channels has none. The Telegram Bot API provides no message history access. Messages sent before your session was running are not retrievable. If your laptop was sleeping and you sent three messages from your phone, they're gone.

Clautel maintains full session history. /resume shows your recent sessions with previews. Pick one up from Telegram or get the session ID to continue in your CLI. Works both directions.

Live preview

Type /preview in Clautel and it tunnels your localhost via ngrok. See your running dev server on your phone. Click elements, scroll, navigate. The screenshot updates in-place.

Channels has no equivalent.

Persistent scheduling

/schedule run tests every morning at 9am. Claude parses the natural language, sets up the cron expression, runs it autonomously. Saved to disk. Survives restarts. No expiry.

Claude Code's /loop exists but it's session-scoped. Close the terminal, the loop dies. 3-day hard expiry. Nothing saved to disk. Not a scheduler.

Setup

Channels setup requires installing Bun, creating a bot, running a plugin install command, configuring the token, relaunching Claude Code with a --channels flag, pairing with a 6-character code, and setting access policies. Nine steps. And you need to remember the --channels flag every time you launch.

Clautel:

npm install -g clautel
clautel setup
clautel start

Three commands. Done. The daemon auto-starts on boot.

Where Channels Wins

Let's be honest about the advantages:

  1. Free. Included with Claude Code. No additional cost.
  2. Multi-platform. Telegram, Discord, iMessage. Clautel is Telegram-only.
  3. First-party. Official Anthropic product. Will improve rapidly.
  4. Extensible. MCP-based architecture means the community can build custom channels.
  5. No daemon. Some users prefer not running a background process.

The Side-by-Side

ChannelsClautel
Always-onNo. Session must be open.Yes. Daemon survives reboots.
Terminal requiredYes (or tmux)No
Messages when offlineLost foreverDaemon is always running
Permission approvalsType "yes abcde"One-tap inline buttons
Session historyNoneFull history + bidirectional handoff
Per-project isolationOne session per terminalEach project gets its own bot
Live previewNo/preview tunnels localhost
Persistent schedulingNo/schedule with real cron
Group chatNoYes (Max plan)
Setup9 steps + flag every launch3 commands + auto-start
StatusResearch previewShipping product
PriceFree$4/mo (or self-host free)
Multi-platformTelegram, Discord, iMessageTelegram

Who Should Use What

Use Channels if you want free, multi-platform messaging and you're fine with keeping a terminal session open. If the bugs get fixed, it'll be a solid option for casual use.

Use Clautel if you want something that actually runs in the background, gives you per-project bots, one-tap approvals, live preview, persistent scheduling, and session continuity. If you want to send a message from your phone at 2am and know it'll work.

Use both. Channels is free. Try it. If you find yourself debugging zombie processes, wondering why messages aren't arriving, or wishing you had live preview and scheduling, Clautel's been shipping reliably for months.

Both are open source. Channels. Clautel.

npm install -g clautel

clautel.com