ガイド - AIと自動化

専用Mac miniでClaude Code Channelsを24時間365日稼働させる方法

Claude Code Channelsは、AnthropicのClaude Code CLIのリサーチプレビュー機能です。チャネルとは、実行中のClaude CodeセッションにイベントをプッシュするMCPサーバーのことで、リポジトリを開いているコーディングエージェントとTelegram、Discord、iMessageから対話し、そのツール呼び出しをスマートフォンから承認できます。イベントはセッションが開いている間しか届かないため、決してスリープしないマシンが必要です。専用のApple Silicon Mac miniは自然な常時稼働ホストであり、iMessageチャネルはmacOS専用なので、Linux VPSでは決してなれない種類のホストでもあります、月額$85からです。

読了25分 2026年9月28日更新

1. なぜMac miniでClaude Code Channelsを実行するのか?

公式ドキュメントは明確です:「イベントはセッションが開いている間しか届かないため、常時稼働のセットアップではClaudeをバックグラウンドプロセスまたは永続的なターミナルで実行します。」スリープしたり、蓋を閉じたり、アップデートで再起動したりするノートPCは、気づかないうちにボットをオフラインにします。Telegram Bot APIには履歴や検索の機能がないためClaudeは古いメッセージを取得できず、Telegramが未配信の更新を保持するのは最長24時間です。MyRemoteMacの専用Mac miniなら、そのセッションをApple Silicon上で24時間365日開いたままにできます(Claude CodeはARM64のmacOS 13以上をサポート)。SSHによる完全なroot権限、1回限りのmacOS権限ダイアログのためのVNC、1 Gbps込み、そして定額の月額料金。さらに、macOS専用のiMessageチャネルを実行できる唯一の種類のクラウドホストでもあります。このチャネルはメッセージデータベースを読み取り、AppleScriptでMessages.appを操作します、Linux VPSでは不可能です。

項目 クラウドVPS(Linux) Mac mini(MyRemoteMac)
月額料金 変動(コスト比較を参照) M4 月額$85から · M6 月額$149から(定額)
iMessageチャネル 不可(macOS専用) 対応、Messages.app + フルディスクアクセス
Telegram / Discordチャネル 対応 対応(アウトバウンドのみ、受信ポート不要)
常時稼働セッション 対応 対応(99.9% SLA)
ハードウェア 共有・仮想化 専用の1:1物理Mac
アクセスとツールチェーン SSH SSH + VNC、完全なroot権限、同じセッションでXcodeとSimulator

主なメリット: Channelsは、すでに実際のプロジェクトを開いているClaude Codeセッションにチャットアプリを橋渡しします。Mac mini上ならそのプロジェクトはiOSアプリやmacOSアプリでもよく、スマートフォンからメッセージを送る相手のエージェントが、同じマシン上のXcodeでそれをビルドしテストできます(当社のリモートXcode開発ガイドを参照)。3つの公式プラグインはすべて権限プロンプトを中継するため、Bash、Write、Editの各呼び出しをチャットから承認または拒否できます。

2. 前提条件

Claude Code Channelsは、独立した製品ではなくAnthropicのプロプライエタリなClaude Code CLIの機能であり、有料のClaudeプランが必要です。リサーチプレビューであるため、--channels フラグはまだ claude --help にも表示されず、Anthropicは構文とプロトコルが変更される可能性があると述べています。以下の内容は2026年9月28日に公式ドキュメント(Claude Code 2.1.283)に照らして確認したものです。

  • 専用Mac mini(MyRemoteMac 提供)、M4は月額$85から(16 GB / 256 GB)またはM6は月額$149から。Claude Codeに必要なのはmacOS 13.0以上、4 GB以上のRAM、ARM64またはx64プロセッサで、どの構成でも条件を満たします。
  • Mac miniへのSSHとVNCアクセス(どちらもMyRemoteMacのサブスクリプションに付属)。SSHはターミナル用、VNCはブラウザログインと、iMessageチャネルが必要とするmacOSのフルディスクアクセス/オートメーションのダイアログ用です。
  • Claude Codeを利用できるClaudeアカウント:Pro(月額$20)、Max(月額$100から)、Team(1シートあたり月額$25)、Enterprise、またはトークン単位で課金されるConsole APIキー。無料のclaude.aiプランにはClaude Codeは含まれません。ChannelsはAmazon Bedrock、Google CloudのAgent Platform、Microsoft Foundryでは利用できません。Team/Enterpriseでは、まずOwnerがチャネルを有効にする必要があります(claude.ai → Admin settings → Claude Code → Channels)。
  • Mac mini上のBun:「サポートされる各チャネルはBunを必要とするプラグインです」(ステップ1でインストール)。
  • チャネル用のボット認証情報:@BotFatherから取得したTelegramボットトークン、またはMessage Content Intentを有効にし、あなたが参加しているサーバーに招待したDiscordボットアプリケーション。iMessageにトークンは不要です。ドキュメントが要求するのはmacOS、フルディスクアクセス、初回返信時のオートメーション許可、そして自分自身にメッセージを送るための「Apple IDにサインインしている任意のデバイス」です、Mac miniのユーザーをログインさせたままMessagesにサインインしておくことは、その仕組みからの当社の推論です(ステップ3を参照)。個人のApple IDではなく、二要素認証を有効にした専用のApple IDを推奨します。
  • ターミナルコマンド、tmux、~/.claude/settings.json の編集に関する基本的な知識。

3. ステップ1:SSHで接続してClaude CodeとBunをインストールする

MyRemoteMacダッシュボードの認証情報でMac miniにSSH接続し、macOSのバージョンを確認してから、Claude Codeをインストールします。ネイティブインストーラーはAnthropicが推奨する方法で、Node.jsは不要、バックグラウンドで自動更新されます。Homebrewとnpmはドキュメント化された代替手段です(npmパッケージは同じネイティブバイナリをインストールし、Node.js 22以上が必要です。決してsudoで実行しないでください)。

SSHで接続して要件を確認する

# Connect to your Mac mini
ssh admin@your-server-ip

# Confirm Apple Silicon (Claude Code supports x64 and ARM64)
uname -m
# arm64

# Claude Code and Bun both need macOS 13.0+
sw_vers -productVersion

Claude Codeをインストールする(公式ネイティブインストーラー)

インストーラーを実行し、バージョンを確認してから、claude doctor に読み取り専用の診断を実行させます。Homebrewの claude-code caskはstableチャネルを追跡し(約1週間遅れ、リグレッションをスキップ)、自動更新はされません。claude-code@latest はlatestを追跡します。

# Recommended: official native installer (no Node.js needed, auto-updates in the background)
curl -fsSL https://claude.ai/install.sh | bash
# Pin a release channel or exact version at install time if you prefer:
#   curl -fsSL https://claude.ai/install.sh | bash -s stable

# Alternative A: Homebrew (stable channel; does not auto-update)
# brew install --cask claude-code

# Alternative B: npm (Node.js 22+, same native binary, never with sudo)
# npm install -g @anthropic-ai/claude-code

# Verify (prints e.g. "2.1.283 (Claude Code)") and run read-only diagnostics
claude --version && claude doctor

Bunをインストールする(すべてのチャネルプラグインに必要)

公式チャネルプラグインはBunスクリプトです。Bun自体の最低要件もmacOS 13.0以上です。bun.com/install(Bunドキュメント記載)と bun.sh/install(プラグインREADME記載)はどちらも公式で、Homebrewでも構いません。プラグインはBunの最低バージョンを明記していません。

# Official Bun installer
curl -fsSL https://bun.com/install | bash
# Homebrew alternative: brew install oven-sh/bun/bun

# Open a new shell (or source ~/.zshrc), then verify
bun --version

4. ステップ2:認証して権限モードを選ぶ

ChannelsにはAnthropic認証が必要です:claude.aiログイン(Pro、Max、Team、Enterprise)またはConsole APIキー。claude を一度起動し、ブラウザログインの手順に従います。SSH経由の場合、ブラウザに表示されたコードを「Paste code here if prompted」プロンプトに貼り付けることがあります。ヘッドレスのMac miniでは、VNCセッションでログインを完了することもできます。macOSでは認証情報はキーチェーンに保存されます。キーチェーンがロックされている場合(SSH経由では一般的)、Claude Codeはモード0600の ~/.claude/.credentials.json にフォールバックします。

サインインする(サブスクリプションまたはAPIキー)

常時稼働セッションでは、サブスクリプションログインが弱点です。有効期限があり(Claude Codeは起動時に「Your login expires in 3 days · run /login to renew」と警告し、無人セッションは「認証情報が期限切れになると進行を停止」します)。ドキュメント化された対策は2つ:claude setup-token で1年間有効なOAuthトークンを生成し(Pro/Max/Team/Enterprise、モデルリクエストのみ可能)、セッションを実行する場所でエクスポートするか、Consoleの ANTHROPIC_API_KEY をトークン単位の課金で使用します。

# Option A: subscription login (Pro, Max, Team, Enterprise)
cd ~/project
claude
# Follow the browser login. Over SSH, paste the code shown at
# "Paste code here if prompted": or finish the login over VNC.

# Option B: Console API key, billed per token (Claude Code asks once to approve it)
export ANTHROPIC_API_KEY="sk-ant-YOUR_API_KEY_HERE"
claude

# Option C (always-on subscription box): one-year OAuth token, printed once, never saved
claude setup-token
export CLAUDE_CODE_OAUTH_TOKEN=your-token

# Check which credential is active
# inside Claude Code: /status   (see the "Login" row)

モデルとプロバイダー

セッションはプランで選択されたモデルを使用します。/model または claude --model <alias>(opus、sonnet、haikuなどのエイリアス)で変更し、努力レベルは /effort で変更します。Channelsにはローカルモデルやサードパーティプロバイダーのオプションはありません。Bedrock、Vertex、Foundryのバックエンドは対象外で、Claude以外のエンドポイントへのルーティングはサポートされる構成ではありません。同じMac mini上でローカルLLMを使いたい場合は、別のワークロードとして扱ってください、当社のローカルLLMガイドを参照。

権限モードを選び、リリースチャネルを固定する

Claude Code 2.1.283以降、autoモード(分類器がアクションを審査)が対話型セッションの組み込みの初期モードです。チャネルセッションでは、人間の承認をループに残すことを推奨します。Manualモード(--permission-mode default)では、Bash、Write、Editの各プロンプトが許可リストに登録したチャットに中継され、そこで yes <id> または no <id> と答えます。autoモードでは分類器が判断し、「リモート側が答えるべきダイアログは開かれません」。この機能はリサーチプレビューであるため、~/.claude/settings.json(ユーザー設定、プロジェクトの .claude/settings.json で設定されたautoおよびbypassモードは無視されます)でstableリリースチャネルと最低バージョンも固定してください:

# ~/.claude/settings.json (user settings: applies to every project on the Mac mini)
{
  "permissions": {
    "defaultMode": "default"
  },
  "sandbox": {
    "enabled": true
  },
  "autoUpdatesChannel": "stable",
  "minimumVersion": "2.1.211"
}

# minimumVersion = the version YOU validated on this Mac mini (the docs' example is "2.1.100").
# Auto-updates and `claude update` refuse to install anything below it, so never set it to a
# version you have not tested with --channels: 2.1.283 has an open launchd regression (#97701).

# Equivalent per-launch flag instead of defaultMode:
#   claude --permission-mode default --channels plugin:telegram@claude-plugins-official

権限を無効にしないでください。 --dangerously-skip-permissions / bypassPermissions についてのドキュメント自身の警告:「このモードは、コンテナ、VM、インターネットアクセスのない開発コンテナなど、Claude Codeがホストシステムに損害を与えられない隔離環境でのみ使用してください」、そして「プロンプトインジェクションや意図しないアクションに対する保護は一切ありません」。macOSではroot/sudoでは拒否され、denyルールは引き続き適用され、管理者は permissions.disableBypassPermissionsMode でブロックできます。完全に信頼できる専用の隔離されたMac miniを無人で稼働させなければならない場合、ドキュメント化されたパターンは非rootユーザーでの claude -p "<prompt>" --dangerously-skip-permissions です、明確に警告された選択肢であり、決してデフォルトではありません。より安全な無人パターンは -p --permission-mode auto --permission-prompts none(2.1.259以降)で、停止する代わりにプロンプトが必要なものをすべて拒否します。

5. ステップ3:Telegram、Discord、またはiMessageを接続する

リサーチプレビューには3つの公式チャネルプラグイン、Telegram、Discord、iMessage、に加え、fakechatというlocalhostのデモが含まれ、いずれもAnthropicのマーケットプレイス claude-plugins-official(Apache-2.0)から提供されます。それぞれClaude Code内にプラグインとしてインストールし、自分のボット認証情報で構成し、--channels フラグでセッションに組み込みます。すべてに共通するルールが2つあります:プラグインのインストール後は必ずClaude Codeを終了して --channels 付きで再起動すること、そしてボットはそのセッションが実行中の間しか返信できないこと。承認済みのプラグインはすべて送信者の許可リストを保持します:「追加したIDのみがメッセージをプッシュでき、それ以外は静かに破棄されます。」

Telegram(最初のチャネルとして推奨)

Telegramでボットを作成します:@BotFather を開き、/newbot を送信し、表示名と bot で終わる一意のユーザー名を付けて、トークンをコピーします。次に、Mac mini上のClaude Codeセッション内でプラグインをインストールし(尋ねられたらuserスコープを選択)、トークンを保存し、チャネルフラグ付きで再起動し、ペアリングして、ポリシーをロックダウンします。プラグインはBot APIをロングポーリングするため、Mac miniに受信ポートは不要です。

# 1. In Telegram: open @BotFather, send /newbot, copy the token

# 2. Inside a Claude Code session on the Mac mini (choose the USER scope when asked)
/plugin install telegram@claude-plugins-official
# "Marketplace not found"? add it first, then retry:
#   /plugin marketplace add anthropics/claude-plugins-official
# If the summary says "Run /reload-plugins to activate.", do so.

# 3. Store the token (written to ~/.claude/channels/telegram/.env;
#    a TELEGRAM_BOT_TOKEN in the shell environment takes precedence)
/telegram:configure <token>

# 4. Exit Claude Code and restart with the channel flag
claude --channels plugin:telegram@claude-plugins-official

# 5. Send any message to your bot: it replies with a pairing code. Then, in Claude Code:
/telegram:access pair <code>
/telegram:access policy allowlist    # only your account can send from now on

Discord(代替)

Discord Developer PortalでNew Applicationを作成し、Botを開いてReset Tokenをクリックしてトークンをコピーし、Privileged Gateway IntentsでMessage Content Intentを有効にします。次にOAuth2 → URL Generatorでbotスコープと、View Channels、Send Messages、Send Messages in Threads、Read Message History、Attach Files、Add Reactionsの権限を選び、あなたが参加しているサーバーに招待します、DMはボットとサーバーを共有している場合にのみ機能します。ギルドチャネルはチャネルIDごとのオプトインです。

# Discord Developer Portal (https://discord.com/developers/applications):
# New Application > Bot > Reset Token (copy it) > enable Message Content Intent
# OAuth2 > URL Generator: scope "bot"; permissions View Channels, Send Messages,
#   Send Messages in Threads, Read Message History, Attach Files, Add Reactions
# Open the generated URL and invite the bot to a server you are in

# Inside Claude Code (token saved to ~/.claude/channels/discord/.env, or set DISCORD_BOT_TOKEN)
/plugin install discord@claude-plugins-official
/discord:configure <token>

# Restart with the channel, DM the bot for a pairing code, pair, lock down
claude --channels plugin:discord@claude-plugins-official
/discord:access pair <code>
/discord:access policy allowlist

# Several channels at once: pass the entries space-separated
# claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official

iMessage(macOS専用、Mac miniの強み)

ボットトークンは不要です:プラグインは ~/Library/Messages/chat.db を直接読み取り、AppleScriptで返信を送信します。初回の読み取りでフルディスクアクセスのプロンプトが表示され、プロンプトにはBunを起動したアプリ(Terminal、iTerm、お使いのIDE)の名前が示されます、初回の返信でオートメーションのプロンプト(「Terminal wants to control Messages」)が表示されます。どちらもGUIダイアログなので、VNC経由で行ってください。フルディスクアクセスがないと、サーバーは「authorization denied」で終了します。次に、Apple IDにサインインしている任意のデバイスでMessagesを開き、自分自身にメッセージを送ります:自分自身とのチャットはアクセス制御をバイパスし、他の連絡先は明示的に許可リストに登録する必要があります。プラグインは chat.db を1秒に1回ポーリングし、最新の行から開始し(再起動後の再生はなし)、IMESSAGE_APPEND_SIGNATURE=false でない限り「Sent by Claude」を付加し、「SMSの送信者IDは偽装可能」であるためデフォルトでSMS/RCSを無視します。ドキュメントの文言ではなく、その仕組みからの当社の推論:Mac miniのユーザーをログインさせたまま、Messagesにサインインしておいてください。

# Over VNC: System Settings > Privacy & Security > Full Disk Access > add your terminal app
# (or click "Allow" when the first read of ~/Library/Messages/chat.db prompts)

# Inside Claude Code (user scope), then relaunch with the channel
/plugin install imessage@claude-plugins-official
claude --channels plugin:imessage@claude-plugins-official

# From any device signed into your Apple ID: open Messages and text yourself.
# The first reply triggers the macOS Automation prompt ("Terminal wants to control Messages"): click OK.

# Let another contact in (phone in +country format, or Apple ID email)
/imessage:access allow +15551234567

任意のドライラン:localhostでfakechat

外部サービスなしでフローをテストするには、公式のfakechatデモが http://localhost:8787 でチャットUIを提供します(SSHトンネルまたはVNC経由でアクセス)。トークンもアクセス制御もないため、テスト専用に使ってください。Claude Codeが初回の返信の権限を求めたら、承認します。

/plugin install fakechat@claude-plugins-official
claude --channels plugin:fakechat@claude-plugins-official

# From your laptop, tunnel the demo UI (it listens on localhost only)
ssh -N -L 8787:127.0.0.1:8787 admin@your-server-ip
# then open http://localhost:8787

表示される内容: 受信メッセージはターミナルに表示されますが、返信テキストは表示されません、ターミナルにはツール呼び出しと「sent」のような確認が表示され、返信はチャットアプリに現れます。-p(非対話)モードでは、ターミナル入力を必要とするツール、多肢選択の質問やプランモードの承認、は無効化され、セッションが停止することはありません。本ガイドが推奨する対話型tmuxセッションでは、プランモードが機能します(2.1.126で --channels セッション向けに復元)。プロジェクトの信頼とMCP同意のダイアログは決して中継されないため、まずローカルでプロジェクトフォルダを信頼し、プラグインのMCPサーバーを承認してください。

6. ステップ4:セッションを24時間365日維持し、更新する

Anthropicはサービスの仕組みを規定していません。ドキュメントはClaudeを「バックグラウンドプロセスまたは永続的なターミナルで」実行するとしか述べておらず、2026年9月28日時点で code.claude.com にはlaunchd、systemd、screen、nohupの手順はありません。ドキュメント化されているのはtmux設定ページなので、tmuxはサポートされるホストです。このセクションのtmux設定以外の内容はすべて、MyRemoteMacのMac mini向けの当社の推奨であり、その旨を明記しています。

チャネルセッションをtmuxで実行する(当社の推奨)

SSH経由で名前付きtmuxセッション内に対話型の claude --channels セッションを起動し、デタッチします。いつでも再アタッチして、中継されなかったプロンプトに答えたり、/login でログインを更新したり、起動時のChannels通知を読んだりできます。通知が外側のターミナルに届き、Shift+Enterが機能するように、Anthropicがドキュメント化している3つのtmux設定を追加します:

# Install tmux
brew install tmux

# The three settings Anthropic documents for running Claude Code inside tmux
printf 'set -g allow-passthrough on\nset -s extended-keys on\nset -as terminal-features "xterm*:extkeys"\n' >> ~/.tmux.conf

# Start a named session in your project and launch the channel session inside it
tmux new -s claude -c ~/project
claude --channels plugin:telegram@claude-plugins-official

# Detach: Ctrl-b d      Reattach later: tmux attach -t claude
# Renew an expiring login from inside the session: /login

任意のスーパーバイザー:ユーザーLaunchAgent(当社の提案、警告付き)

再起動やクラッシュ後にtmuxセッションを再作成するには、小さなラッパースクリプトをプログラムとする、RunAtLoadとKeepAliveを設定したユーザーLaunchAgentを登録できます。LaunchDaemonではなくLaunchAgentでなければなりません:iMessageの許可(フルディスクアクセス、オートメーション)、Messages.app、キーチェーンのログインはログイン中のユーザーセッションに属し、ヘッドレスのMac miniでは自動ログインを有効にする必要があります(システム設定 > ユーザとグループ)。警告が2つあります:この方法で起動したBunプロセスがGUIプロンプトなしに独自のフルディスクアクセス許可を受け取るかどうかは未検証であり、未解決のリグレッションissue #97701(2026-09-27)は、2.1.283でlaunchd管理下の --channels デーモンが約2分ごとにセッションを繰り返し再生成すると報告しており、執筆時点でメンテナーの返答はありません。対象バージョンでテストし、stableチャネルを固定したままにしてください。

# OUR RECOMMENDATION: not documented by Anthropic. See the warning about issue #97701 above.

# 1. Wrapper script: ~/bin/claude-channels.sh  (chmod 700)
#!/bin/zsh
export PATH="$HOME/.local/bin:$HOME/.bun/bin:/opt/homebrew/bin:/usr/bin:/bin"   # where `which claude` / `which bun` point
# Optional: one-year token from `claude setup-token`, stored in a chmod 600 file
[ -f "$HOME/.claude-channels.env" ] && source "$HOME/.claude-channels.env"
tmux has-session -t claude 2>/dev/null || \
  tmux new -d -s claude -c "$HOME/project" \
    'claude --permission-mode default --channels plugin:telegram@claude-plugins-official'
# Stay alive while the session exists, so launchd's KeepAlive relaunches us when it dies
while tmux has-session -t claude 2>/dev/null; do sleep 30; done

# 2. LaunchAgent: ~/Library/LaunchAgents/com.example.claude-channels.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>com.example.claude-channels</string>
  <key>ProgramArguments</key><array><string>/Users/admin/bin/claude-channels.sh</string></array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>ThrottleInterval</key><integer>30</integer>
  <key>StandardOutPath</key><string>/Users/admin/Library/Logs/claude-channels.log</string>
  <key>StandardErrorPath</key><string>/Users/admin/Library/Logs/claude-channels.log</string>
</dict></plist>

# 3. Load it into the logged-in user session (LaunchAgent, never a LaunchDaemon)
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.claude-channels.plist
launchctl print gui/$(id -u)/com.example.claude-channels
# Unload: launchctl bootout gui/$(id -u)/com.example.claude-channels

Mac miniをスリープさせず、ログインしたままにする

Claude Codeドキュメントの項目ではなく、一般的なmacOS管理です:セッションとMessagesポーラーが決して停止しないようスリープを無効にし(詳細はMacで man pmset を実行)、再起動後にLaunchAgentとMessages.appが復帰するよう、ユーザーの自動ログインを有効にします。

# Generic macOS administration (see `man pmset`): never sleep
sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0

# Automatic login for your user (needed for LaunchAgents and Messages.app after a reboot):
# System Settings > Users & Groups > Automatic login: set it over VNC

# Reboot-test once, then message the bot again
sudo reboot

Claude Code、Bun、プラグインを更新する

ネイティブインストーラーは起動時および定期的に更新を確認し、バックグラウンドでダウンロードし、次回Claude Codeを起動したときに新バージョンを適用します、そのため、長時間稼働するtmuxセッションは再起動するまでバージョンを維持します。claude update はすぐに適用します。--channels の構文は「フィードバックに基づいて変更される可能性がある」ため、更新のたびにチャネルのドキュメントを読み直し、起動時のChannels通知に警告行がないか再確認してください。

# Claude Code (native installer): apply a pending update now
claude update
# "Successfully updated from X to version Y" or "Claude Code is up to date (X)"
claude doctor            # shows the last update attempt
# Homebrew: brew upgrade claude-code      npm: npm install -g @anthropic-ai/claude-code@latest

# Channel plugins: refresh the catalogue, then update
claude plugin marketplace update claude-plugins-official
claude plugin update telegram@claude-plugins-official
# (loads in the next session, or after /reload-plugins in a running one)

# Bun
bun upgrade              # curl install   |   brew upgrade bun  (Homebrew install)

# Restart the channel session so the new versions take effect
tmux kill-session -t claude
tmux new -s claude -c ~/project
claude --channels plugin:telegram@claude-plugins-official
# Re-read the startup "Channels" notice for any warning line

7. セキュリティ強化

受信メッセージはすべて、ファイルシステム、git、シェルへのアクセス権を持つセッションに届き、「チャネル経由で返信できる人は誰でも、セッション内のツール使用を承認または拒否できます」。リファレンスドキュメントは率直です:「ゲートのないチャネルはプロンプトインジェクションの経路です。」以下はドキュメント化された制御策と、ドキュメントが触れていない部分についての当社の推奨です:

  • ペアリング直後に許可リストを設定する。 自分のアカウントのペアリングが済んだら、/telegram:access policy allowlist(またはDiscordの同等コマンド)を実行します。リストが確定したら、TELEGRAM_ACCESS_MODE=static / IMESSAGE_ACCESS_MODE=static で実行時のペアリングを完全に無効化します。
  • 承認権限を委ねられる信頼できる送信者だけを許可リストに登録する。 中継される承認はBash、Write、Editを対象とします。2.1.211以降は中継されるテキストがサニタイズされ、2.1.234以降は認証情報が [REDACTED] としてマスクされ、中継先は --channels で登録されたサーバーのみになりました、それでもドキュメントは、中継されるフィールドを信頼できないものとして扱うよう述べています。
  • 権限プロンプトを有効のままにする。 Manualモードと中継、または分類器付きのautoモード、実際のコードや認証情報を保持するマシンで bypassPermissions を使ってはいけません。設定のdenyルールはすべてのモードでコマンドをブロックします。
  • Bashサンドボックスを有効にする(公式機能、有効化は当社の推奨):macOSではインストールするものは何もなく、組み込みのSeatbeltフレームワークを使用します。デフォルトの読み取りポリシーでは ~/.ssh と ~/.aws が依然として許可されているため、sandbox.credentials のエントリを追加してください。
  • トークンファイルを制限する(当社の推奨、ドキュメントはファイルモードを明記していません):configureコマンドは ~/.claude/channels/<telegram|discord>/.env に書き込みます。環境変数 TELEGRAM_BOT_TOKEN / DISCORD_BOT_TOKEN はファイルより優先されます。決してコミットせず、漏洩した場合はBotFatherまたはDiscordポータルでローテーションしてください。
  • iMessageのプライバシー面: フルディスクアクセスは、ターミナルアプリとそれが起動するすべてのものにメッセージデータベース全体への読み取りアクセスを与え、オートメーション許可はあなたとしてiMessageを送信することを可能にします。専用Mac miniでは2FAを有効にした専用のApple IDを使い、IMESSAGE_ALLOW_SMS はデフォルトの false のままにしてください。
  • 受信ポートなし。 公式プラグインはTelegramをポーリングするか、Discordのゲートウェイにアウトバウンド接続します。fakechatはlocalhostでのみリッスンします。リファレンスドキュメントからカスタムのwebhookチャネルを構築する場合(プレビュー中は --dangerously-load-development-channels でのみ読み込み可能で、ドキュメントは信頼できないソースには決して使わないよう述べています)、そのポートはMac miniのWireGuard VPN経由でのみ公開してください。
# Restrict the channel state and token files (our recommendation: no documented mode)
chmod 700 ~/.claude/channels
chmod 600 ~/.claude/channels/*/.env

# Freeze the allowlists once they are final (disables runtime pairing)
export TELEGRAM_ACCESS_MODE=static
export IMESSAGE_ACCESS_MODE=static

# Bash sandbox with strict mode and protected credential paths: ~/.claude/settings.json
{
  "sandbox": {
    "enabled": true,
    "allowUnsandboxedCommands": false,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" }
      ]
    }
  }
}

# Team/Enterprise admins: managed settings (users cannot override)
#   "channelsEnabled": true
#   "allowedChannelPlugins": [{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]
#   "permissions": { "disableBypassPermissionsMode": "disable" }

8. よくある問題のトラブルシューティング

ボットが応答しない

公式の回答:「Claude Codeが --channels 付きで実行されていることを確認してください…ボットはチャネルがアクティブな間しか返信できません。」閉じられたSSHセッション、クラッシュ、再起動、スリープは、気づかないうちにボットをオフラインにします。2.1.281以降は、インストールされたプラグインの名前が --channels のエントリと正確に一致する必要もあります:

# Is the session still there?
tmux attach -t claude
# Was it started WITH the flag, and with the exact plugin name?
claude --channels plugin:telegram@claude-plugins-official
# Read the startup "Channels" notice: it says why a channel did not register

# Telegram: the Bot API offers no history or search, so Claude cannot fetch older messages;
# Telegram holds undelivered updates for at most 24 hours.
# Discord can catch up: ask Claude to use fetch_messages (max 100).

「Marketplace claude-plugins-official not found」または /telegram:configure コマンドがない

まずマーケットプレイスを追加し、インストール時にuserスコープを選び、インストールの概要に指示があれば /reload-plugins を実行します(または単に再起動します):

/plugin marketplace add anthropics/claude-plugins-official
/plugin install telegram@claude-plugins-official     # choose the USER scope
/reload-plugins
/telegram:configure <token>

# Bun missing? every channel plugin requires it
bun --version

チャネルは接続するがメッセージが届かない(Team、Enterprise、またはConsole組織)

channelsEnabled はユーザーが上書きできない管理設定です。claude.aiのTeam/Enterpriseでは、Ownerが有効にするまでデフォルトでブロックされます。管理設定を配布するConsole組織も同様に設定する必要があります。MCPサーバーは接続し、そのツールも機能しますが、受信メッセージだけが届かず、起動時に警告が表示されます。起動時の通知を確認し、Ownerに依頼してください:

# Owner: claude.ai > Admin settings > Claude Code > Channels, or in managed settings:
#   "channelsEnabled": true
# Pro/Max accounts without an organization skip this check entirely.

# Also check that the plugin is on the allowlist (or the org's allowedChannelPlugins)
# and that nothing forces MCP_PROTOCOL_NEGOTIATION=auto in the environment

iMessageサーバーが「authorization denied」で終了する

Bunを起動したアプリにフルディスクアクセスが付与されていないか、Claude Codeが承認したものとは別のランチャー(sshd、別の場所で起動されたtmuxサーバー、LaunchAgent)から起動されています。VNC経由で許可を付与し、同じ場所から再起動してください:

# Over VNC: System Settings > Privacy & Security > Full Disk Access > add the terminal app
# that launches your tmux/claude session, then restart the session from that same app.

# The reply path needs the Automation grant as well: the first outbound reply shows
# "Terminal wants to control Messages": click OK in the VNC session.

# SMS/RCS senders are ignored by design unless IMESSAGE_ALLOW_SMS=true (not recommended)

セッションが停止する:「Login expired · Please run /login」

サブスクリプションログインは期限切れになり、無人セッションは進行を停止します。tmuxに再アタッチして更新するか、常時稼働マシンを1年間有効なOAuthトークンまたはAPIキーに切り替えてください:

tmux attach -t claude
/login                   # renew the subscription login
/status                  # check the "Login" row

# Or make the box independent of the browser login:
claude setup-token       # one-year CLAUDE_CODE_OAUTH_TOKEN (Pro/Max/Team/Enterprise)
# or export ANTHROPIC_API_KEY (Console, per-token billing)
# Over SSH the Keychain may be locked: credentials then live in ~/.claude/.credentials.json (0600)

9. クラウドVPSとのコスト比較

Claude Code Channels自体に追加費用はありませんが、Claude Code自体には有料プランが必要です、これはどのホストでも同じです。異なるのはマシンです。汎用のLinux VPSはMac miniより月額が安いものの、iMessageチャネルを実行できず、Xcodeもなく、ハードウェアは共有です。典型的なセットアップの月額費用(USD)は以下のとおりです:

ユースケース Claudeアクセス Linux VPSホスト Mac miniホスト(MyRemoteMac) Mac miniが加える価値
個人開発者、TelegramまたはDiscord Pro、月額$20 約$20〜40/月(想定) $85/月(M4、16 GB / 256 GB) 専用1:1ハードウェア、VNC、macOSツールチェーン
個人開発者、iMessage Pro、月額$20 不可(macOS専用) $85/月(M4) 実行できる唯一のホスト種別
ヘビーユース、複数セッション、Xcodeビルド Max、月額$100から 約$40〜80/月(想定) $149/月(M6) Xcode、Simulator、高速なApple Siliconビルド
チームボット(Ownerがチャネルを有効化) Team、1シートあたり月額$25 約$40〜80/月(想定) $149/月(M6) チームごとに専用マシン1台、管理設定が適用

前提:VPSの数値はエントリー(4〜8 GB)およびミドルレンジ(16 GB)の汎用Linuxインスタンスについての当社の概算レンジであり、特定のプロバイダーの見積もりではありません。Claudeプランの価格は2026年9月28日時点の claude.com/pricing によるものです(Pro 月額$20または年払いで月額$17、Max 月額$100から、Team 1シートあたり月額$25標準または年払い$20、プレミアム$125)。Console APIキーの課金はトークン単位で、執筆時点のファーストパーティ定価は、Sonnet 5 $2/$10、Opus 5 $5/$25、Haiku 4.5 $1/$5(入力/出力100万トークンあたり)です。サブスクリプションプランは従量制で、常時稼働ボットは対話型コーディングと同じ枠を共有します。AnthropicはチャネルセッションのRAMやCPUフットプリントを公開していないため、当社は定性的にサイジングしています:16 GBのMac mini M4は、Claude Code + Bunプラグインのセッション1つには十分です。同じマシンで重いビルド、複数セッション、ローカルモデルも実行するなら、M6(2026年9月22日から提供)を選んでください。

結論: TelegramまたはDiscordだけが必要で、macOSに一切触れないなら、Linux VPSの方が安いホストです。Mac miniがその価格に見合うのは、エージェントにXcodeプロジェクトを開かせたいとき、iMessageを使いたいとき、あるいは1回限りのmacOSプロンプトのためのVNCを備えた専用の非仮想化ハードウェアが欲しいときです、すでに支払っているClaudeプランに加えて月額$85からです。

10. Claude Code Channels vs. OpenClaw

両者は異なる問題を解決します。Claude Code ChannelsはプロプライエタリなCLIの機能であり、スタンドアロンのアシスタントではありません。Telegram、Discord、iMessageを、すでに実行中のClaude Codeセッションに橋渡しするもので、その価値は「リポジトリを開いているコーディングエージェントと対話する」ことにあり、Anthropicのサポート、Claude Codeの権限モデル、サニタイズされたプロンプト付きのyes/no承認の中継、送信者許可リスト、Bashサンドボックス、管理された組織設定が備わっています。Anthropic認証によるClaude専用で、独自のデーモンはなく、カスタムチャネルはプレビュー中は開発フラグの背後でのみ読み込めます。OpenClaw(github.com/openclaw/openclaw、MIT、コミュニティ管理、2026年9月28日時点でGitHubスター約39.1万、anthropics/claude-code は14.8万)は、オープンソースのセルフホスト型ゲートウェイで、独自の監視付きlaunchdサービスとして24時間365日稼働し、はるかに多くのチャットプラットフォーム(WhatsApp、Telegram、Discord、iMessage、Slack、Signal、Teams、Google Chatなど)に対応し、ローカルモデルを含むモデルプロバイダーを選べます。いくつかの二次的な記事はChannelsをOpenClawの代替として位置づけていますが、公式ドキュメントにそのような比較はありません。

すでにClaude Pro、Max、Teamに支払っていて、公式サポートと中継された権限のもとで実際のプロジェクトファイルにスマートフォンからアクセスしたいならChannelsを選んでください。WhatsApp、Slack、Signal、プロバイダーの選択、ローカルモデル、真のデーモン運用が必要ならOpenClawを選んでください、当社のMac mini向けOpenClawガイド(およびそのPython版の同類、Hermes Agent)を参照。どちらのiMessageブリッジもMessagesにサインインしたmacOSと同じTCC許可を必要とします。これこそが、専用1:1 Mac miniがどちらにも適している理由です。

11. FAQ

Claude Code Channelsは無料ですか?オープンソースですか?

Claude Code自体については、どちらもいいえです。CLIはプロプライエタリで(「© Anthropic PBC. All rights reserved. Use is subject to Anthropic's Commercial Terms of Service.」)、Pro、Max、Team、Enterprise、またはConsoleアカウントが必要です、無料のclaude.aiプランにはClaude Codeは含まれません。オープンソース(Apache-2.0)なのは claude-plugins-official リポジトリのチャネルプラグインだけです。ChannelsにはプランやAPI利用料以外の追加料金はありません。

ボットを動かすにはターミナルを開いたままにする必要がありますか?

はい、セッションは開いたままでなければなりません。公式ドキュメントによれば、イベントはClaude Codeセッションが --channels 付きで実行されている間しか届かないため、常時稼働のセットアップではバックグラウンドプロセスまたは永続的なターミナルで実行します。Anthropicは仕組みを規定していません。Mac mini上での当社の推奨は、SSH経由で再アタッチできる名前付きtmuxセッションで、任意でユーザーLaunchAgentによる監視を加えます(注意点はステップ4を参照)。

Channelsでローカルモデル、Ollama、Bedrock、Vertexを使えますか?

いいえ。Channelsにはclaude.aiまたはConsole APIキーによるAnthropic認証が必要で、Amazon Bedrock、Google CloudのAgent Platform、Microsoft Foundryでは利用できません。Claude以外のエンドポイントへのルーティングはサポートされる構成ではありません。同じMac mini上で別のワークロードとしてローカルLLMを実行することは可能ですが、当社のローカルLLMガイドを参照、チャネルセッションの頭脳としては使えません。

どのMac mini構成を選ぶべきですか?

Anthropicが示す要件は控えめで(macOS 13以上、4 GB以上のRAM)、セッションごとのフットプリントは公開されていないため、当社は定性的にサイジングしています:16 GB / 256 GBのMac mini M4(月額$85)は、Claude Codeセッション1つとBunチャネルプラグインには十分です。同じマシンで重いXcodeビルド、複数のチャネルセッション、ローカルモデルも並行して実行するなら、月額$149からのMac mini M6を選んでください。

ヘッドレスのMac miniでiMessageチャネルは動作しますか?

はい。VNC経由で行う1回限りのGUI操作が2つあります:Bunを起動したアプリにフルディスクアクセスを付与することと、初回返信時のオートメーションプロンプト(「Terminal wants to control Messages」)でOKをクリックすることです。プラグインはログイン中のユーザーの ~/Library/Messages/chat.db を読み取り、AppleScriptでMessages.appを操作するため、ドキュメントの文言ではなく、その仕組みからの当社の推論として、ユーザーをログインさせたまま、MessagesをApple IDにサインインした状態にし、再起動後も維持されるよう自動ログインを有効にしてください。2FAを有効にした専用のApple IDを使ってください。

WhatsApp、Slack、Signal、Teamsはどうですか?

これらは公式チャネルではありません。リサーチプレビューに含まれるのはTelegram、Discord、iMessageのプラグインとfakechatデモで、それ以外のチャネルはカスタムMCPサーバーであり、プレビュー中は --dangerously-load-development-channels または組織の allowedChannelPlugins 設定の背後でのみ読み込めます。Claude in Slackはクラウドセッションを生成する別の機能です。プラットフォームの幅広さが優先事項なら、OpenClawの方が適しています。

12. 出典と参考資料

本ガイドのすべてのコマンド、フラグ、要件は、2026年9月28日に公式のClaude Codeドキュメント、CHANGELOG(2026年9月25日にnpmで公開されたClaude Code 2.1.283)、および claude-plugins-official リポジトリ(telegram 0.0.7、discord 0.0.4、imessage 0.1.0、fakechat 0.0.1)に照らして確認しました。Channelsはフラグが変更される可能性のあるリサーチプレビューです、現在の状態は以下のページで確認してください:

関連ガイド

コーディングエージェントに24時間365日メッセージを送る準備はできましたか?

専用のApple Silicon Mac miniをClaude Code Channelsのホストとして導入しましょう。M4は月額$85から、M6は月額$149から、1 Gbps込み、SSHとVNC。

さらに詳しい情報をお探しですか?

ステップバイステップのセットアップ手順、設定リファレンス、トラブルシューティングについては、完全なドキュメントをご覧ください。

ドキュメントを開く →