13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code Channels完全ガイド ── Discord/TelegramからAIペアプロを非同期で操作する

13
Posted at

Claude Code v2.1.80で「Channels」が追加されました。DiscordやTelegramから実行中のセッションにメッセージを送り、非同期でAIペアプログラミングを実行できます。

本記事では、背景にある課題、セットアップ、つまづきポイント、他機能との組み合わせ方、OpenClawとの違い、そして現時点の制限事項まで踏み込みます。

なぜChannelsが生まれたのか

Claude Codeを日常的に使っていると、3つの壁にぶつかります。

ターミナルに張り付く問題

テストスイートの実行を依頼して、完了まで15分。その間ターミナルを眺めて待つしかありません。ブラウザに切り替えると完了に気づかず、戻ったら10分前に終わっていた。そんな経験は一度や二度ではないはずです。

Claude Codeは対話型ツールです。入力を待つ間、セッションはただ止まっています。人間がターミナルの前にいることが前提の設計でした。

非同期作業の需要

開発者の作業は断続的です。コードを書き、レビュー待ちの間に別タスクに移り、通知が来たら戻る。この非同期ワークフローに、ターミナル常駐型のClaude Codeは合いません。

外出中にCIが落ちたとき、スマホからログを確認して修正を指示したい。昼食中にテスト結果を受け取りたい。こうした要求に応えるには、ターミナル以外の入口が必要でした。

チーム開発でのAI活用の壁

チームでClaude Codeを使う場合、各メンバーが個別にセッションを立ち上げます。Claude in Slackのようにチーム会話からAIを呼び出す仕組みは既にありますが、それはクラウド上の新しいセッションを起動する形式です。既にローカルで動いているCLIセッションに、外部のチャットアプリからイベントをプッシュする手段がありませんでした。

Channelsは、これらの課題を一つの仕組みで解決するために設計されました。

Channelsとは

ChannelsはMCPサーバーとして動作するプラグインです。外部プラットフォームからのメッセージを、実行中のセッションに<channel>イベントとして注入します。

通常のMCPサーバーはClaudeからの問い合わせに応答します。Channelsはプッシュ型です。外部からイベントを受け取り、Claudeがreplyツールで返答します。

特徴を整理します。

  • イベントはセッション起動中のみ到達する
  • 常時稼働にはバックグラウンドプロセスで起動する
  • 返答はDiscord/Telegram側に表示される
  • ターミナルには受信メッセージやツール呼び出しが表示されるが、外部チャネルへ返した返信本文はターミナルには表示されない

Channelsはリサーチプレビュー段階です。--channelsフラグの構文やプロトコルは変更される可能性があります。

他の機能との比較

Claude Codeにはターミナル外と接続する手段が複数あります。位置づけを整理します。

機能 動作 適した用途
Claude Code on the Web クラウドサンドボックスで実行 独立した非同期タスクの委譲
Claude in Slack Slackメンションからウェブセッションを起動 チーム会話からのタスク開始
Remote Control claude.aiやモバイルアプリからローカル操作 離席中のセッション操作
Dispatch モバイルからCoworkセッションを遠隔操作 デスクトップアプリ経由の非同期タスク
Channels 外部イベントをローカルセッションにプッシュ チャットブリッジ、Webhook受信

Remote ControlやDispatchとの違いが分かりにくいかもしれません。Remote Controlはclaude.aiのWeb UIからの操作です。Dispatchはモバイルアプリ経由でCowork(デスクトップアプリ)を制御します。Channelsはそれらとは異なり、Discord/TelegramのBotを通じてCLIセッションにイベントを送る仕組みです。

つまり、Channelsの強みは「普段使いのチャットアプリがそのまま操作UIになる」点にあります。新しいアプリを開く必要がありません。

セットアップ手順

前提条件

  • Claude Code v2.1.80以降
  • Bunがインストール済みであること(Node.js/Denoは非対応)
  • claude.aiアカウントでの認証(APIキー認証は非対応)
  • Team/Enterpriseプランの場合、管理者がChannelsを有効化済みであること
# バージョン確認
claude --version
bun --version

fakechatで動作確認する

実際のプラットフォームに接続する前に、ローカルデモで動作を確認します。ここで基本的な流れを掴んでおくと、Telegram/Discordの設定時にトラブルの切り分けがしやすくなります。

# プラグインのインストール
/plugin install fakechat@claude-plugins-official

プラグインが見つからない場合は、マーケットプレイスを更新します。

/plugin marketplace update claude-plugins-official
# 初回の場合
/plugin marketplace add anthropics/claude-plugins-official

インストール後、--channelsフラグ付きで再起動します。

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

ブラウザで http://localhost:8787 を開き、メッセージを送信します。セッションに<channel source="fakechat">イベントとして到達し、返答がチャットUIに表示されれば成功です。

fakechatで正常に動作することを必ず確認してから、Telegram/Discordの設定に進んでください。ここで問題がある場合、原因はChannels自体の設定にあります。Bot側の設定を疑う前に、まずfakechatで切り分けましょう。

Telegramのセットアップ

1. Botの作成

TelegramでBotFatherを開き、/newbotを送信します。表示名とユーザー名(末尾bot)を設定し、返却されるトークンをコピーします。

2. プラグインのインストール

/plugin install telegram@claude-plugins-official
/reload-plugins

3. トークンの設定

/telegram:configure <your-bot-token>

トークンは~/.claude/channels/telegram/.envに保存されます。環境変数TELEGRAM_BOT_TOKENでも設定できます。

4. Channels有効で再起動

claude --channels plugin:telegram@claude-plugins-official

5. アカウントのペアリング

Telegramでボットに任意のメッセージを送信します。ボットが6文字のペアリングコードを返します。

/telegram:access pair <code>

ペアリング完了後、直ちに許可リストポリシーを設定してください。デフォルトのpairingモードでは、ボットにメッセージを送った誰もがペアリングコードを受け取れます。

/telegram:access policy allowlist

Discordのセットアップ

1. Botの作成

Discord Developer Portalで新しいアプリケーションを作成します。Botセクションでトークンを生成しコピーします。

2. Message Content Intentの有効化

ボット設定の「Privileged Gateway Intents」で「Message Content Intent」を有効化します。

この設定を忘れると、ボットがメッセージを受信できません。Discord Developer Portalでボットは正常に見えるのに、Claude Code側に一切メッセージが届かない場合、真っ先にここを確認してください。

3. サーバーへの招待

OAuth2 > URL Generatorでbotスコープを選択し、以下の権限を付与します。

  • View Channels
  • Send Messages
  • Send Messages in Threads
  • Read Message History
  • Attach Files
  • Add Reactions

生成されたURLでボットをサーバーに追加します。

4. プラグインのインストールと設定

/plugin install discord@claude-plugins-official
/reload-plugins
/discord:configure <your-bot-token>

5. Channels有効で再起動

claude --channels plugin:discord@claude-plugins-official

6. アカウントのペアリング

DiscordでボットにDMを送信し、返却されるペアリングコードをClaude Codeで承認します。

/discord:access pair <code>
/discord:access policy allowlist

セットアップのつまづきポイント

実際に設定していると、いくつかのハマりどころがあります。

「Channels are not currently available」エラー

起動時にこのメッセージが出て、メッセージが一切届かないケースです。

原因の1つとして、環境変数DISABLE_TELEMETRYが設定されている場合があります。少なくともRemote ControlではDISABLE_TELEMETRY=1によって機能が無効化されることが確認されており、Channelsでも同様の報告があります。値を0にしても解消しないため、変数自体を削除する必要があります。

# .bashrc / .zshrc などから以下を削除
export DISABLE_TELEMETRY=1

# 削除後、シェルを再起動してからClaude Codeを起動
claude --channels plugin:telegram@claude-plugins-official

ボットが応答しない

Claude Codeが--channelsフラグ付きで起動していることを確認してください。.mcp.jsonにチャネルプラグインを記載するだけでは動作しません。--channelsでの明示的な指定が必要です。

# これでは動かない(.mcp.jsonへの記載のみ)
claude

# これが必要
claude --channels plugin:telegram@claude-plugins-official

プラグインが許可リストにない

リサーチプレビュー期間中、--channelsはAnthropicが管理する許可リストのプラグインのみ受け付けます。許可リスト外のプラグインを指定すると、Claude Codeは通常通り起動しますがチャネルは登録されません。起動時のメッセージを確認してください。

Bunが見つからない

チャネルプラグインはBunスクリプトです。Node.jsやDenoでは動作しません。

# Bunのインストール(macOS/Linux)
curl -fsSL https://bun.sh/install | bash

コンテキストが長くなるとツール定義を見失う

長時間セッションを維持していると、コンテキストウィンドウの蓄積によりMCPツール定義へのアクセスが失われることがあります。Claudeの返答が途切れたり、replyツールを使えなくなったりします。セッションを再起動すれば解消します。

基本的な使い方

メッセージの送受信

DiscordまたはTelegramでボットにメッセージを送るだけです。メッセージはClaude Codeセッションに届き、Claudeが作業を実行して返答します。

複数チャネルの同時利用

--channelsフラグにスペース区切りで複数プラグインを指定できます。

claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official

権限プロンプトへの対応

Claudeが権限確認を求めるとき、セッションは一時停止します。Channel側で権限リレー機能が宣言されている場合、プロンプトがチャットに転送されます。リモートで承認・拒否が可能です。

無人運用の場合は--dangerously-skip-permissionsで権限確認を省略できます。

claude --channels plugin:telegram@claude-plugins-official \
  --dangerously-skip-permissions

--dangerously-skip-permissionsはすべての権限確認を省略します。ファイル削除やシェルコマンドの実行も無条件で許可されます。本番環境のコードベースでは絶対に使わないでください。

実際の利用シーン:Before / After

テスト実行を依頼して結果を待つ

Before: テストスイートの実行をClaude Codeに依頼します。ターミナルの前で15分待機。あるいはブラウザに切り替えて、定期的にターミナルを覗きに戻ります。完了に気づくまでにさらに数分のロスが生じます。

After: Telegramで「integrationテストを全件実行して。失敗があれば原因分析も」と送信します。昼食に出かけます。食後にスマホを見ると、テスト結果のサマリーと失敗2件の原因分析がTelegramに届いています。そのままスマホから「その2件、修正してPRを作って」と返信します。

CIの失敗に外出先から対応する

Before: 外出中にCIの失敗通知がSlackに届きます。PCを開ける場所を探し、ターミナルを起動し、Claude Codeを立ち上げ、ログを確認させ、修正を依頼します。対応開始まで30分以上かかることも珍しくありません。

After: Discordに「CI失敗のログを確認して原因を特定し、修正PRを作成して」と送信します。移動中に進捗がDiscordに届きます。権限確認のプロンプトが転送されてきたら、スマホから承認します。帰社したらPRが作成済みです。

コードレビューを依頼する

Before: PR #42のレビューを依頼するためにターミナルを開き、Claude Codeでdiffを読ませます。レビュー中は他の作業ができません。

After: Telegramで「PR #42 をセキュリティとパフォーマンスの観点でレビューして」と送信します。別の作業を進めている間に、レビュー結果がTelegramに届きます。指摘事項を確認し、必要なら追加の質問もその場で送れます。

Cowork + Dispatch + Channelsの連携

Channelsは単体でも有用ですが、CoworkやDispatchと組み合わせると、異なるレイヤーの課題をカバーできます。

各機能の守備範囲

まず、3つの機能がそれぞれ何を担当するのかを整理します。

機能 レイヤー 担当する課題
Cowork コンテキスト管理 プロジェクト間のコンテキスト分離
Dispatch リモート操作 モバイルからCoworkセッションを遠隔制御
Channels メッセージング チャットアプリからCLIセッションにイベント送信

想定ワークフロー

3つの機能を組み合わせると、以下のような作業フローが描けます。

【デスクトップ】                    【モバイル】

Cowork                     Dispatch
 ├─ Project A (API開発)             ├─ プロジェクト切替
 │   ├─ 専用コンテキスト             │   Aの作業を指示
 │   ├─ 専用ファイル               │   結果を確認
 │   └─ スケジュールタスク          │
 ├─ Project B (フロントエンド)       └─ Bに切替えて作業を指示
 │   └─ ...
 │
 └─ Claude Code CLI                Discord/Telegram (Channels)
     ├─ --channels discord          ├─ CI失敗通知を受信
     └─ Webhook受信 → 自動対応      ├─ チームからのレビュー依頼
                                    └─ Botへのコマンド送信

使い分けの判断基準は以下の通りです。

  • GUI操作が必要な作業 → Cowork + Dispatch(デスクトップアプリ経由)
  • CLI完結の開発作業 → Channels(チャットアプリ経由)
  • Webhook起点の自動化 → Channels(イベントプッシュ型)
  • プロジェクト横断の管理 → Cowork(コンテキスト分離)

具体例:CI失敗の自動対応フロー

CI/CDパイプラインの失敗通知をChannels経由で受け取り、自動で対応するフローです。

1. GitHub Actions → Webhook → Discord Channel
2. Discord Bot → Claude Code Session にイベントプッシュ
3. Claude Code がログを分析し、修正PRを作成
4. 結果がDiscordに返答される
5. 開発者はスマホで確認し、PRをマージ

Coworkでプロジェクトごとにコンテキストを分離しておけば、複数リポジトリのCI通知を受けても混線しません。

OpenClawとの違い

OpenClawは、チャットアプリ経由でAIを操作するという点でChannelsと重なります。両方を触った上での比較です。

対応プラットフォーム

Channels OpenClaw
Telegram 対応 対応
Discord 対応 対応
WhatsApp 非対応 対応
Slack 非対応(Claude in Slackが別途存在) 対応
Signal 非対応 対応
iMessage 非対応 対応
Teams 非対応 対応

OpenClawは7つ以上のプラットフォームに対応しています。Channelsは現時点でTelegramとDiscordの2つです。ただし、プラグインアーキテクチャを採用しているため、今後の拡張は見込めます。

設計思想の違い

OpenClawは汎用パーソナルアシスタントです。メール、カレンダー、スマートホーム、ファイル操作など、開発以外のタスクも広くカバーします。セルフホスト前提の設計で、Dockerも主要なデプロイ手段の1つとして用意されています。

ChannelsはClaude Codeの拡張機能です。開発タスクに特化しており、ローカルのコードベースに直接アクセスできます。Claude Codeのセッション内で動くため、既存のMCPサーバーやツールチェーンとそのまま連携します。

つまり、「開発ワークフローにチャットを統合したい」ならChannels、「日常業務全般をチャットで自動化したい」ならOpenClawという棲み分けです。

セキュリティ

OpenClawでは2026年初頭にCVE-2026-25253(CVSS 8.8)が発見されました。WebSocketのOriginヘッダーバイパスによるリモートコード実行の脆弱性です。公開インターネット上に135,000以上のインスタンスが露出していたと報告されています。

Channelsは、claude.aiの認証基盤に依存しています。許可リストポリシーで送信者を制限でき、.mcp.jsonに記載するだけでは動作しない(--channelsフラグが必須)という設計で、意図しない有効化を防いでいます。

コスト

Channels OpenClaw
ソフトウェア本体 個人利用ならPro/Max、組織利用ならTeam/Enterpriseでも可(プランによりextra usage課金あり) 無料(MIT License)
API利用料 契約プランに含まれる(超過分は別途課金の場合あり) 別途APIトークン費用
インフラ ローカルPC セルフホスト環境(Docker等)

OpenClawはソフトウェア自体は無料ですが、API利用料とインフラの運用コストがかかります。Channelsは契約プランの範囲内で利用できるため、コスト予測がしやすいという利点があります。

制限事項と期待のギャップ

Channelsに期待しすぎると落差があります。現時点の制限を正直に書きます。

セッションが落ちたら終わり

イベントはセッション起動中のみ到達します。PCがスリープしたり、ターミナルが閉じたりすると、メッセージは消失します。キューイングの仕組みはありません。

常時稼働させるにはtmuxやscreenでバックグラウンド化する必要があります。

# tmuxでバックグラウンド化する例
tmux new-session -d -s claude \
  'claude --channels plugin:telegram@claude-plugins-official'

それでもPCの再起動やネットワーク断には対応できません。真に「いつでもメッセージを送れる」状態にするにはサーバー上で動かす必要があり、そこまでやるかは費用対効果の問題です。

認証の制約

claude.aiログインが必須です。APIキー認証は使えません。Team/Enterpriseプランでは管理者がChannelsを明示的に有効化する必要があります。

社内のセキュリティポリシーでclaude.aiへの直接ログインが制限されている環境では、導入のハードルが高くなります。

返答の長さ制限

チャットプラットフォーム側にメッセージ長の制限があります(Discordは2,000文字、Telegramは4,096文字)。ただし、公式プラグインは通常自動分割(auto-chunk)して送信するため、制限を超えても途切れずに届くことが多いです。非常に長い出力の場合は分割の境界でフォーマットが崩れる可能性がある点は留意してください。

プラグインの選択肢が少ない

リサーチプレビュー期間中は、Anthropicが管理する許可リストのプラグインのみ対応しています。Slack、Teams、Webhookなどの追加プラグインはまだ提供されていません。

カスタムチャネルを開発する場合は--dangerously-load-development-channelsフラグが必要です。本番利用にはセキュリティレビューが求められます。

Dispatchとの機能重複

DispatchもChannelsも「モバイルからAIに指示を送る」という体験を提供します。どちらを使うべきか迷う場面があります。現状では、Coworkユーザーで既にDispatchを使っているならChannelsの優先度は低く、CLI中心のワークフローならChannelsが適しています。

カスタムチャネルの構築

公式プラグインに対応していないシステム向けに、独自のChannelを構築できます。Webhook受信サーバーをMCPサーバーとして実装し、イベントをプッシュする形式です。

claude --dangerously-load-development-channels

リサーチプレビュー期間中、カスタムチャネルの本番利用には上記フラグが必要です。将来的に許可リストへの申請プロセスが整備される見込みです。

詳細は公式ドキュメントのChannels referenceを参照してください。

まとめ

Claude Code Channelsは、ターミナルから離れた場所でもAIペアプログラミングを継続できる仕組みです。

  • DiscordやTelegramからメッセージを送るだけで、ローカルセッションのClaudeが作業を実行する
  • CI失敗の自動対応やコードレビュー依頼など、非同期ワークフローが成立する
  • Cowork/Dispatchと組み合わせると、プロジェクト管理からリモート操作まで一貫したフローが作れる

一方で、セッション常駐が前提であること、プラットフォームの選択肢がまだ少ないこと、Dispatchとの棲み分けが曖昧な点は認識しておく必要があります。

リサーチプレビューの段階ではありますが、「開発中にターミナルから離れられない」という課題を感じている方は試す価値があります。特にtmuxと組み合わせてバックグラウンドで常駐させるパターンは、日常の開発フローに無理なく組み込めます。

参考リンク

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?