AIエージェント入門

Claude Code Channelsの仕組み解説|Webhookとチャット橋渡しの使い分け

Claude Code Channelsの仕組み解説|Webhookとチャット橋渡しの使い分け

この記事の結論

Claude Code Channelsとは何か、どう動くのか。MCP経由のチャット橋渡しとWebhook受信の仕組みを解説し、Remote Control・Scheduled Tasksとの使い分けを比較する。

Claude Code ChannelsとRemote Control、Scheduled Tasks——2026年3月のアップデートで三つの「非同期連携」機能が一気に揃った。どれも「離席中にClaudeを動かす」という目的に見えるが、実際に試してみると設計思想がまるで違う。

本稿では特にChannelsの内部構造を掘り下げつつ、実際に使うべき場面を他機能との比較から整理する。


Channelsとは何か——まず3行で

Channelsは、外部からのプッシュイベントを動作中のClaude Codeセッションに注入する仕組みだ。Telegram・Discord・iMessageのいずれかを経由してメッセージを送ると、ローカルで走っているClaudeがそれを受け取り、あなたのファイルやツールにアクセスしながら処理を実行する。

ポイントは「ローカルセッションがそのまま動く」こと。クラウドに新しいサンドボックスが立ち上がるわけではなく、CLAUDE.md・カスタムスキル・MCP統合——すべてがすでに読み込まれた状態で反応する。

技術的にはMCP(Model Context Protocol)サーバーとして実装されている。チャンネルプラグインがMCPサーバーを起動し、外部プラットフォームからのメッセージを<channel source="telegram">形式のイベントとしてセッションへ届ける。Claudeはそのイベントを読み、応答をプラグインのreplyツール経由で送り返す。

スペック比較——Channels vs Remote Control vs Scheduled Tasks

観点 Channels Remote Control Scheduled Tasks
起点 外部からのプッシュ claude.ai / モバイルアプリから操作 時刻ベースのスケジュール
セッション ローカル(起動済み必須) ローカル(起動済み必須) Anthropicクラウド(PC不要)
通信方向 双方向(チャット橋渡し) 双方向(UI操作) 非同期(定時実行のみ)
対応プラットフォーム Telegram / Discord / iMessage claude.ai / iOS / Android GitHub連携
プラン Pro・Max(個人)/ 企業は管理者許可必要 Pro・Max Pro・Max
利用開始 2026年3月20日(Research Preview) 2026年2月(Research Preview) 2026年3月

Channelsの2つのユースケース

ユースケース1: チャット橋渡し(Chat Bridge)

スマートフォンのTelegramからClaudeに指示を出し、ローカルMacのコードベースで作業させる——これがチャット橋渡しの典型だ。

コーヒーを飲みながら「あの関数のテスト追加しておいて」とTelegramに送れば、デスクに戻ったときには変更がコミット済みになっている。Claudeはあなたのエディタ・ファイルシステム・git履歴すべてにアクセスできるまま待機している。

実際のセッション起動例:

# Telegramプラグインをインストール
# Claude Codeのインタラクティブセッション内で実行
/plugin install telegram@claude-plugins-official

# チャンネルを有効にして起動
claude --channels plugin:telegram@claude-plugins-official

起動後、TelegramでBotにメッセージを送るとペアリングコードが届く。Claude Code側で以下を実行してペアリングを完了させる:

# ペアリングコードを登録
/telegram:access pair <code>

# 自分だけが操作できるようにAllowlistポリシーを適用
/telegram:access policy allowlist

動作環境: Claude Code v2.1.80以上 / claude.aiアカウント認証必須(Console・APIキー認証は非対応)/ Bun必須(bun --versionで確認)

ユースケース2: Webhook受信

CI/CDパイプラインの失敗通知・エラートラッカーのアラート・デプロイ完了イベント——これらを「Claudeがすでに開いているセッション」に直接届けられる。

標準的なMCPサーバーとの違いはここだ。通常のMCPサーバーはClaudeから「呼ばれたとき」に応答するプル型だが、ChannelsはClaudeへ「押し込む」プッシュ型。GitHub Actionsのテストが落ちた瞬間にClaudeへ通知し、その場でデバッグを開始させられる。

自前のWebhook受信チャンネルを実装する基本構造(Claude Code Channels Reference準拠):

// webhook-channel/index.ts
// 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server(
  { name: "webhook-receiver", version: "1.0.0" },
  { capabilities: { tools: {} } }
);

// Channelsプロトコルに必要: push_channel_event ツールを公開
server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "reply") {
    // Claudeからの返信を外部サービスへ転送
    const message = request.params.arguments?.message;
    await forwardToSlack(message); // 任意のサービスへ
    return { content: [{ type: "text", text: "sent" }] };
  }
});

const transport = new StdioServerTransport();
await server.connect(transport);

注意: カスタムチャンネルの開発中は --dangerously-load-development-channels フラグで起動する。Research Preview期間中は、Anthropicが管理するAllow-list(またはEnterpriseが設定したリスト)以外のプラグインは本番起動ではブロックされる。

セキュリティ——Allowlistがすべての鍵

Channelsで最も重要なのがセンダー制御だ。Allowlistに登録されたID以外からのメッセージはサイレントに破棄される。ペアリングフローはこのAllowlist登録を確実に踏ませるための仕組みでもある。

特にPermission Relay(ツール実行の許可/拒否をチャンネル経由で行う機能)を使う場合、Allowlistに追加した相手はツール実行権限も持つことになる。信頼できるアカウントのみを登録するべきだ。

EnterpriseプランではIT管理者が channelsEnabledallowedChannelPlugins をManaged Settingsで制御できる。デフォルトはオフなので、組織利用には管理者の設定が必要になる。

Channelsを使うべき場面・使わない場面

Channelsが向いている

  • スマートフォンから非同期指示 — 外出先から「今の実装にユニットテスト追加して」と送る
  • CI/CDアラートへの自動対応 — テスト失敗をTelegramで受け取りその場でデバッグ
  • 複数人でClaudeへの指示を共有したい場合 — チームのDiscordチャンネルをブリッジ

Remote Controlが向いている

  • 進行中タスクのリアルタイム監視・操作
  • 許可プロンプトへのリモート応答

Scheduled Tasksが向いている

  • PCを閉じた夜間に定期実行させたい処理
  • 毎日のPRレビュー・CI確認などルーティン作業

AIエージェントの連携設計全般については、AIエージェント構築完全ガイドで詳しく解説しています。

【要注意】よくある設定ミスと回避策

失敗1: BotがTelegramで応答しない

claudeコマンドを--channelsフラグなしで起動している
claude --channels plugin:telegram@claude-plugins-official で再起動する

なぜ重要か: .mcp.jsonに記述されているだけではチャンネルは有効にならない。--channelsフラグで明示的に指定した場合だけプッシュイベントを受け付ける。

失敗2: Enterprise組織でチャンネルが動かない

channelsEnabledが組織設定で未構成のまま使おうとしている
⭕ IT管理者にManaged SettingsでchannelsEnabled: trueを設定してもらう

なぜ重要か: Team/EnterpriseプランではChannelsはデフォルトオフ。Pro/Maxの個人プランとは挙動が異なる。

失敗3: Allowlist未設定でセキュリティリスク

❌ ペアリング後にポリシーをallowlistに変更し忘れている
⭕ ペアリング直後に/telegram:access policy allowlistを実行する

なぜ重要か: デフォルトのままだと予期しない送信者がClaudeに指示を送れる状態になる。

失敗4: iMessageでAppleScriptが動かない

❌ Full Disk AccessをターミナルアプリにGrantしていない
⭕ システム設定 → プライバシーとセキュリティ → フルディスクアクセス → 該当ターミナルを追加

なぜ重要か: iMessageチャンネルは~/Library/Messages/chat.dbを直接読む。macOSの保護機能でアクセスが弾かれるとサーバーが即時終了する。

まとめ

Channelsは「すでに動いているClaudeに外から話しかける」機能だ。Remote Controlのような操作UIでも、Scheduled Tasksのような定時実行でもなく、プッシュイベントをトリガーにClaudeを動かすという唯一の設計思想がある。

Telegram・Discordでのチャット橋渡し、CI/CDからのWebhook受信——この二軸でユースケースを考えると、自分の開発ワークフローのどこにChannelsが刺さるかが見えてくるはずだ。

Research Preview段階なのでAPIの仕様変更はありうる。フィードバックはClaude Code GitHubリポジトリで受け付けている。

参考・出典


あわせて読みたい:
Claude Code Hooks完全解説 — PreToolUse/PostToolUseフックで安全なエージェント設計を実現する
Claude Agent SDK実践ガイド — PythonとTypeScriptでマルチエージェントを構築する

AIエージェントの導入・活用について詳しく知りたい方は、Uravationへのお問い合わせからご相談ください。

この記事はAIgent Lab編集部がお届けしました。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年4月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事