Clautel vs Claude Code Channels: An Honest Comparison
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:
- Free. Included with Claude Code. No additional cost.
- Multi-platform. Telegram, Discord, iMessage. Clautel is Telegram-only.
- First-party. Official Anthropic product. Will improve rapidly.
- Extensible. MCP-based architecture means the community can build custom channels.
- No daemon. Some users prefer not running a background process.
The Side-by-Side
| Channels | Clautel | |
|---|---|---|
| Always-on | No. Session must be open. | Yes. Daemon survives reboots. |
| Terminal required | Yes (or tmux) | No |
| Messages when offline | Lost forever | Daemon is always running |
| Permission approvals | Type "yes abcde" | One-tap inline buttons |
| Session history | None | Full history + bidirectional handoff |
| Per-project isolation | One session per terminal | Each project gets its own bot |
| Live preview | No | /preview tunnels localhost |
| Persistent scheduling | No | /schedule with real cron |
| Group chat | No | Yes (Max plan) |
| Setup | 9 steps + flag every launch | 3 commands + auto-start |
| Status | Research preview | Shipping product |
| Price | Free | $4/mo (or self-host free) |
| Multi-platform | Telegram, Discord, iMessage | Telegram |
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