# Channels Setup Guide Channels let external chat apps push messages into a running Claude Code session. Your agent reacts to messages as if you typed them locally. This is Claude Code's answer to OpenClaw's 15+ native messaging integrations. ## Supported channels (March 2026) | Channel | Plugin | Platform requirement | |---------|--------|---------------------| | Telegram | `@anthropic-ai/claude-code-telegram` | Any OS | | Discord | `@anthropic-ai/claude-code-discord` | Any OS | | iMessage | `@anthropic-ai/claude-code-imessage` | macOS only | ## Prerequisites 1. **Bun** (JavaScript runtime, required for channel plugins): ```bash curl -fsSL https://bun.sh/install | bash ``` 2. **Full Disk Access** (macOS, required for iMessage): System Settings > Privacy & Security > Full Disk Access > Add your terminal app (Terminal.app or VS Code) 3. **Claude Code** v2.1.80+ (channels were introduced here) ## Install a channel plugin ```bash # In a Claude Code session, run: /install @anthropic-ai/claude-code-telegram # or /install @anthropic-ai/claude-code-discord # or /install @anthropic-ai/claude-code-imessage ``` Verify with `/plugins` to see installed plugins. ## Launch Claude Code in channel mode ```bash claude --channels ``` You should see: `Listening for channel messages from plugin [channel-name]` Claude Code now receives messages from the configured channel and responds through it. Every tool, skill, and agent you have configured works exactly as if you were typing locally. ## Permission approval from your phone When Claude Code needs to run a sensitive action, it sends a permission request through the channel. You can reply "yes" or "no" from your phone to approve or deny. To avoid constant prompts, launch with Auto Mode: ```bash claude --channels --enable-auto-mode ``` ## The critical limitation: session persistence **If the Claude Code session closes, the channel stops working.** Messages sent to the channel will not reach Claude Code until you start a new session with `--channels`. This is the biggest practical difference from OpenClaw, which runs as a daemon and stays alive indefinitely. ### Workarounds for always-on | Approach | How | Reliability | |----------|-----|-------------| | tmux/screen | `tmux new -s claude && claude --channels` | Good, survives SSH disconnect | | Mac Mini | Dedicated machine, disable sleep | Very good | | macOS VPS | Cloud Mac (e.g., MacStadium, AWS EC2 Mac) | Best, but expensive | | /schedule | Remote triggers via claude.ai (no channel) | Different approach | For iMessage specifically, you need macOS. A Linux VPS with tmux works for Telegram and Discord but not iMessage. ## Channels vs Dispatch vs Remote Control These three features all let you interact with Claude Code remotely, but they work differently: | Feature | Trigger model | Best for | |---------|--------------|----------| | **Channels** | Event-based: chat apps push messages into session | Reacting to messages, CI events, chat commands | | **Dispatch** | Message-based: you send a task from mobile app | Delegating work while away | | **Remote Control** | Direct control: you steer an active session | Guiding in-progress work from another device | **Channels** = "my agent listens to a chat app" **Dispatch** = "I send my agent a job" **Remote Control** = "I take the wheel remotely" ## Enterprise and Team plans Channel use must be enabled by an admin: Organization Settings > Claude Code > Channels > Enable By default, channels are disabled on Team and Enterprise plans.