← Back to Blog

Remote Control + Channels — Run Your Claude Code Session From Your Phone, With iMessage, Telegram, Or Discord

Remote Control + Channels — Run Your Claude Code Session From Your Phone, With iMessage, Telegram, Or Discord

Part of the Claude Code workflow series. Start with the install primer; then what to do after install; then this post once you're ready to operate a session from outside your terminal.

The biggest shift in Q1 2026 Claude Code was the quiet one: your session stopped being tied to a single terminal tab. Remote Control lets you resume an active session from your phone, browser, or a second machine. Channels adds chat-app transport — iMessage, Telegram, and Discord can deliver prompts into the running session without you opening the terminal at all.

Neither is a separate agent. Neither runs anywhere other than your local machine where the session lives. They're transport layers over the same live session you'd otherwise interact with via terminal. That distinction matters for both the threat model and the expectations.

Below is the setup for each, the gotchas you will hit, and the decision rubric for whether any of this is worth the permission grants it requires.

Remote Control — what it actually does

Remote Control exposes a running Claude Code session behind an Anthropic-managed URL. Open the URL on your phone's browser; you're in the same session, with the same context, the same file access, the same tools. Close your laptop lid with a session running, open your phone, keep going.

The session is still running on your laptop. Closing the lid (depending on your power settings) may pause or suspend. The session only survives as long as the host process does.

Enable:

claude --enable-remote-control

Once enabled, an /remote command inside the session generates a shareable URL. The URL is scoped to the specific session and expires when the session ends.

What Remote Control is good for:

  • Kicking off a long-running task before leaving. Start a migration or a batch refactor, close the laptop, monitor from your phone on the train.
  • Checking status without a terminal. A session that's running tests in a loop can be checked from any device.
  • Quick approvals when you're away. A scheduled task that hit an approval prompt can be unblocked from your phone without you needing to get back to the laptop.

What it's not good for:

  • Running sessions your phone starts. Remote Control is a view / control layer over an already-running session. It doesn't start fresh ones.
  • Background execution when your laptop is off. The session dies with the host process. For "runs when I'm not there," use /schedule instead.

Channels — iMessage, Telegram, Discord

Channels extend Remote Control with chat-app transport. Instead of opening a URL, you send a message to a bot or a thread, and the text lands in your session as if you'd typed it at the terminal.

Mental model: Channels is a dispatch mechanism, not a separate agent. The same local session, the same repo checkout, the same tool access — just reached via Messages / Telegram / Discord.

The three options differ in what they're actually good for:

  • iMessage — fastest personal setup if you live in the Apple ecosystem. No bot tokens, no external webhooks, no server. Your iPhone → your Mac's Messages → your running session. Lowest friction, highest permission cost (Full Disk Access on the terminal to read ~/Library/Messages/chat.db).
  • Telegram — cross-platform, works anywhere, bot-token-based. Best for team use where people aren't all on iOS.
  • Discord — similar to Telegram but with thread and channel semantics. Good if your team already lives in Discord.

iMessage setup (concrete steps)

Prereqs: Claude Code v2.1.80+, Bun installed.

  1. Grant Full Disk Access to your terminal app. macOS Settings → Privacy & Security → Full Disk Access → add your terminal (Terminal.app, iTerm, Ghostty, whatever). This is required because Channels reads ~/Library/Messages/chat.db to pick up new messages.
  2. Install the plugin inside a Claude Code session:
    /plugin install imessage@claude-plugins-official
    
  3. Relaunch Claude with channels enabled:
    claude --channels plugin:imessage@claude-plugins-official
    
  4. Smoke test: send yourself a message from any Apple device (iMessage self-chat works; any phone number or iCloud ID works if you want someone else to dispatch to your session).
  5. Approve the first macOS prompt. The first time Claude's process sends a reply, macOS will prompt once: "Terminal wants to control Messages." Approve.

After that: any text you send to that Messages thread lands in your session as a prompt. Replies from Claude come back as regular Messages. It's eerie the first few times and then becomes unremarkable.

Telegram setup (what to expect)

Telegram requires a bot token. The flow:

  1. In Telegram, message @BotFather and create a new bot. Note the token it gives you.
  2. Install the Telegram plugin in Claude Code:
    /plugin install telegram@claude-plugins-official
    
  3. Set the bot token (typically via environment variable):
    export CLAUDE_TELEGRAM_BOT_TOKEN="<your-token>"
    
  4. Launch with Channels enabled:
    claude --channels plugin:telegram@claude-plugins-official
    
  5. Start a chat with your bot in Telegram; messages will route into your session.

Discord is the same pattern with a Discord bot token instead of a Telegram one.

The security trade-offs you're making

Channels ask for real permissions. Be honest about what you're granting:

  • iMessage — Full Disk Access on your terminal means that terminal can read any file in your home directory, including things like ~/.ssh/, Keychain data (partially), and every app's user data. Claude Code itself is well-behaved, but any process sharing that terminal gets the same access. If you don't want that, don't grant it.
  • Telegram / Discord — your bot token is effectively a password that can post as you. Keep it in an env var, not a committed file. Rotate it if you suspect compromise.
  • All Channels — anything that reaches the chat transport reaches your session. If a Discord server gets compromised and someone's impersonating your bot's intended user, messages they send land in your session. Scope the access tightly (DMs only, not public channels).

Operational limits (the fine print)

Three constraints that bite in practice:

  1. The session must stay running. Close your terminal, the channel is offline. Messages sent while offline are typically lost (iMessage) or delivered late (Telegram / Discord may buffer). Plan for this — don't rely on channels for time-critical dispatch.
  2. Permission prompts still block. If your session needs approval for a tool call, the channel pauses until you approve. This can feel like the channel is broken when really it's waiting for a local OK. Open your terminal and look.
  3. iMessage is macOS-only. Telegram and Discord work cross-platform on the laptop side (Linux and Windows both support them as clients). But iMessage requires macOS because only macOS exposes the chat.db path Channels reads.

When Remote Control + Channels is worth it

Worth it if:

  • You regularly start long tasks and want to check on them from away.
  • You have a team pattern where someone else might dispatch "kick off the test suite" without wanting to screen-share.
  • You travel with devices that don't have your terminal set up (phone, tablet) but you still want to interact with in-flight sessions.
  • You run /schedule jobs that occasionally need approval and you don't want to return to the laptop to unblock them.

Not worth it if:

  • You do most work from one machine with one terminal anyway.
  • The permission grants (especially Full Disk Access for iMessage) feel uncomfortable.
  • You're in a regulated environment where adding transport layers requires paperwork.

For most solo developers, Remote Control yes, Channels maybe. Remote Control is low-cost (an Anthropic-managed URL, no extra permission grants beyond what Claude Code already has). Channels earn their keep when you actually dispatch from chat apps; they're overhead if you just open the Remote Control URL directly.

Quick troubleshooting

"I installed the iMessage plugin but nothing happens when I send a message." Full Disk Access check. macOS Settings → Privacy & Security → Full Disk Access → confirm your terminal app is in the list and enabled. Relaunch the terminal after granting.

"The Telegram bot receives my messages but doesn't reply." Token scoping — confirm the bot token matches the bot you're messaging. Check your session's log for the dispatch; if the dispatch arrives but Claude doesn't reply, the session may be paused on an approval prompt.

"Remote Control URL shows an error when I open it." Session likely ended. Remote Control URLs are per-session; when the session dies, the URL stops working. Start a new session and generate a new URL.

"Channels work but then stop working mid-session." Usually a laptop sleep event. On macOS, the process can survive sleep but Channels polling may not. Settings → Energy → "Prevent app nap when plugged in" helps.

Related reading

Fact-check notes and sources

Informational, not security consulting advice. Channels requires granting Full Disk Access to your terminal application — understand the implications before enabling. The iMessage plugin path reflects Q1 2026 ecosystem naming. Verify against the official changelog and the plugin source before installing. Mentions of Anthropic, Apple, Telegram, Discord, and linked publications are nominative fair use.

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility StatementPrivacy Policy

Last updated: April 2026