Channels(チャンネルズ)

仕組み・概念
Channels
チャンネルズ
外(チャットアプリ・CI・エラー監視など)で起きた出来事を、いま開いているClaude Codeのセッションに押し込んで反応させる仕組み。差し込み部品(plugin)の形で入れて使う。Telegram・Discord・iMessageに対応

席を外している間も外部からのメッセージやアラートをClaude Codeのセッションに届けたい人向け

席を外している間に料理ブログのデプロイ(公開作業)が転けたり、夜中にアプリのエラーが出たりしても気づけない場面で使う。家のパソコンでClaudeを起動時に --channels を付けて動かし続けておき、出先からTelegram等で通知やバグ報告を投げてその場で対応させたいときに有効化する

席を外している間に料理ブログのデプロイ(公開作業)が転けても、ターミナルの前にいなければ気づけません。Channels(チャンネル)を使うと、その転けた通知を「いま開きっぱなしのClaude Codeのセッション」に直接届けて、その場で対応させられます。スマホからTelegramで「さっきのバグ直して」と送れば、手元のパソコンで作業中のClaudeが返事してくる、みたいな使い方です。

ポイントは「新しい作業場を立てる」わけじゃないところ。すでに開いているセッションに、外から出来事を押し込む。これがChannelsの正体です。

噛み砕くと「いま稼働中のClaudeに外から声をかける窓口」

普段のClaude Codeは、私がターミナルの前に座って打ち込まないと動きません。席を立った瞬間、外で何が起きてもClaudeは知らないままです。

Channelsはここに窓口を1つ足すイメージです。新しい職場の自分の机に、外線電話を1台引くのに近い。電話が鳴る(=外から出来事が届く)と、机にいるClaude本人がそのまま受けて、同じ電話で返事します。別室にもう1人スタッフを呼ぶわけじゃない。あくまで「いま机にいるClaude」が受けます。

届く出来事は2種類。1つはチャットの相手から送られてくるメッセージ。もう1つはCI(自動テストや公開を回す仕組み)やエラー監視からの通知です。どちらも「外で起きたこと」をClaudeの耳に入れる、という同じ形をしています。

これが地味に効きます。

大事な前提:届くのは「セッションが開いている間」だけ

ここを誤解すると肩透かしを食います。Channelsの出来事が届くのは、Claude Codeのセッションが開いている間に限られます。

公式ドキュメントもこう書いています。

Events only arrive while the session is open, so for an always-on setup you run Claude in a background process or persistent terminal.

訳すと「出来事が届くのはセッションが開いている間だけ。常時受けたいなら、裏で動かし続けるか、閉じない画面でClaudeを動かす」となります。

つまりClaudeを閉じている間に来た通知が、溜まって後でまとめて届く、みたいな留守番電話ではありません。常に受けたいなら、Claudeを閉じずに動かし続ける必要があります。

あと2つ前提があります。1つはClaude Code v2.1.80以降であること。もう1つはAnthropic認証、つまりclaude.aiのアカウントかConsole APIキーでログインしていることです。Amazon Bedrock・Google Vertex AI・Microsoft Foundry経由では使えません。今のところは研究プレビュー(試験公開)の段階なので、誰のところにも一斉に来ているわけではなく、順次広がっている途中です。

他の連携と何が違うのか

Claude Codeには外とつながる仕組みがいくつもあって、Channelsもその1つです。ただ向きと立ち位置がそれぞれ違います。ここが一番こんがらがるので表にしました。公式の「How channels compare」に沿っています。

仕組み やること 向き
Claude Code on the web クラウド上に新しい作業場を立てて、GitHubからコピーしてきて動かす 新しいセッションを立てる
Claude in Slack Slackで@Claudeと呼ぶと、新しいwebセッションを立ち上げる 新しいセッションを立てる
標準のMCPサーバ Claudeが作業中に必要に応じて問い合わせる。Claude側から取りにいく Claudeが引っ張る
Remote Control 手元のセッションを、claude.aiやスマホアプリから遠隔で操作する 手元を操作する
Channels Claude以外の発生源から、すでに開いている手元のセッションへ出来事を投げ込む 外から押し込む

私が一番大事だと思うのは、Channelsだけが「すでに開いている手元のセッション」に向かっているところです。webやSlackは新しい作業場を毎回立ち上げる。標準のMCPサーバはClaudeが自分から取りにいく。Remote Controlは手元を遠隔で操る。

Channelsは違います。いまあなたのパソコンで、あなたの本物のファイルを開いて作業しているClaude。そこに外から出来事が飛び込んでくる。だから「さっきまで何をデバッグしていたか」を覚えたままのClaudeが、そのまま反応できます。ここが他と決定的に違う。

「料理ブログ」を例に、実際の手順を見る(Telegram編)

料理ブログを運営していて、外出中もデプロイ結果やバグ報告をTelegram経由でClaudeに渡したい、という想定で順を追います。Telegram・Discord・iMessageが研究プレビューで使えますが、ここではTelegramでいきます。

ステップ1: Telegram側でボットを1つ作る

TelegramでBotFather(ボット作成用の公式アカウント)に /newbot と送り、表示名と bot で終わる名前を決めます。すると接続用の合言葉が返ってくるので、これを控えます。料理ブログ用なら cookingblog_deploy_bot みたいな名前にしておくと分かりやすいです。

ステップ2: Claude Code側にTelegramの差し込み部品を入れる

その前に1つ確認。ターミナルで bun --version と打って番号が返ってくれば準備OKです。何も返ってこなければ、先に bun.sh からBunを入れてください。Telegram・Discord・iMessageの差し込み部品はどれも内部でBunを使って動くので、これがないと次の手順が失敗します。

準備できたら、Claude Codeのセッションで次を打ちます。

/plugin install telegram@claude-plugins-official

「どのマーケットプレイスにも見つからない」と言われたら、一覧が古いか未登録です。/plugin marketplace update claude-plugins-official で更新するか、まだ追加していなければ /plugin marketplace add anthropics/claude-plugins-official を打ってから入れ直します。入れ終わったら /reload-plugins を打って、設定用コマンドを使える状態にします。

ステップ3: さっきの合言葉を覚えさせる

ステップ1で控えた合言葉を渡します。

/telegram:configure <token>

これで ~/.claude/channels/telegram/.env に保存されます。ここで初心者がやりがちな勘違いがあります。「入れて合言葉を渡したからもう届くだろう」と思って、そのまま待ってしまう。届きません。次のステップが本体です。

ステップ4: いったん終了して、Channelsを名指しして起動し直す

ここがChannelsの肝です。Claude Codeをいったん閉じて、こう打って起動します。

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

起動時に付ける --channels で、どの差し込み部品を監視に使うかを名指しします。これでTelegramの見張りが始まります。逆に言うと、毎回この名指しをして起動しない限り、Telegramを入れていても出来事は届きません。複数つなぎたいときは、--channels のうしろにスペース区切りで並べて渡せます。

ステップ5: 自分のアカウントだけを通すようにする(ペアリング)

Telegramで自分のボットに何かメッセージを送ると、ペアリングコード(紐づけ用の数字)が返ってきます。それをClaude Code側で渡します。

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

2行目で「許可リストに載っている相手だけ通す」状態に絞ります。これをやらないと、ボットを知っている人なら誰でもClaudeに指示を送れてしまう。料理ブログのデプロイを他人に勝手にいじられたら困るので、ここは必ずやります。

ステップ6: 外出先からClaudeに対応させる

これで準備完了です。出先でTelegramを開いて「料理ブログのデプロイ通った?通ってなかったらエラーログ見て直して」と送れば、家のパソコンで動き続けているClaudeがそれを受けて、本物のファイルを開いて対応し、同じTelegramのチャットに返事してきます。

1つ知っておくと驚かないこと。Claudeがチャット経由で返した返事の本文は、ターミナル画面には出ません。ターミナルには「送信した」という確認だけが出て、返事の中身はTelegram側に表示されます。

つまりChannelsは何をしてくれるのか

  • やってくれる: 外(チャット・CI・エラー監視)で起きた出来事を、いま開いているClaudeのセッションに押し込んで、その場で反応させる。チャットなら同じチャットに返事も返す
  • やってくれない: 新しいセッションを別に立てること。Channelsはあくまで「いまのセッション」に届けるだけで、別室にもう1人Claudeを呼ぶわけではない
  • 意味が薄い場面: ずっとターミナルの前に座って手で打ち込んでいるとき。外から押し込む必要がそもそもないので、普通に打ったほうが速い

使いどころ3シナリオ

シナリオ1: 料理ブログのデプロイ結果を出先で受け取る

金曜の夜に新レシピ記事を公開予約して、土曜は出かける。出先でデプロイが転けていないか不安、というケース。家のパソコンでClaudeを --channels 付きで起動したまま出れば、デプロイ結果の通知が届いた瞬間にClaudeが受けます。「画像の読み込みで500エラー出てる、直せる?」とTelegramで投げれば、その場で原因を当たって直しにいけます。私ならこれは常駐させておきたい。

シナリオ2: 家計簿アプリのエラー監視をClaudeに見張らせる

自作の家計簿アプリを公開していて、夜中にエラーが出ると朝まで気づけない。エラー監視サービスからの通知をChannels経由でClaudeに流しておけば、エラーが飛んできたタイミングでClaudeがそれを受け取り、しかも「さっきまで何をいじっていたか」を覚えたまま原因を追えます。標準のMCPサーバだとClaudeが自分から取りにいかないと気づけないので、ここは押し込む形のChannelsが効きます。

シナリオ3: まず手を汚さずfakechatでお試しする

いきなりTelegramを設定するのが怖いなら、fakechatという公式のお試し用があります。接続用の合言葉も外部サービスもいらず、自分のパソコンの中だけでチャット画面が立ち上がります。/plugin install fakechat@claude-plugins-official で入れて claude --channels plugin:fakechat@claude-plugins-official で起動し、ブラウザで http://localhost:8787 を開いて何か打つと、それがClaudeに届いて返事が返ってくる。本番に進む前の感触確認にちょうどいいです。

初心者が踏みやすい落とし穴

  • SlackやwebのClaudeと同じだと思う。あれは新しいセッションを立てる仕組み。Channelsは新しく立てず、いま開いている手元のセッションに押し込みます。別物です
  • 標準のMCPサーバと同じだと思う。標準のMCPサーバはClaudeが作業中に自分から問い合わせる「引っ張る」形。Channelsは外から「押し込む」形で、向きが逆です
  • Bunが入っていないのに差し込み部品を入れようとする。Telegram・Discord・iMessageの差し込み部品はBunを必要とします。bun --version で確認して、何も返ってこなければ先に bun.sh から入れてください。これを飛ばすと入れた後に動きません
  • 差し込み部品を入れれば届くと思う。入れただけ、.mcp.json に書いただけでは届きません。毎回 --channels で名指しして起動しないと届かない仕様です
  • ボットを知っている人なら誰でも送れると思う。送信者の許可リスト制です。ペアリングで登録した相手以外のメッセージは黙って捨てられます。だからこそ許可リストは信頼できる相手だけに絞ります
  • Bedrock / Vertex AI / Foundry でも使えると思う。使えません。claude.aiかConsole APIキーのAnthropic認証が必要です
  • 閉じている間の通知が後で届くと思う。届くのはセッションが開いている間だけ。常時受けたいなら、Claudeを裏で動かし続けるか、閉じない画面で動かします
  • 会社のアカウントなら入れればすぐ使えると思う。Team・Enterpriseは管理者が channelsEnabled を有効にするまでブロックされます。個人のProやMaxはこのチェック自体スキップなので、入れてすぐ使えます
  • 席を外している間に許可待ちで止まることがある。Claudeが操作の許可を求める場面に来ると、あなたが答えるまでセッションは一時停止します。許可をチャット経由で転送できる差し込み部品なら、出先からでも許可・拒否を返せます

書き方

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

やってみるとこうなる

入力

(出先のTelegramから)料理ブログのデプロイ通った?通ってなければエラーログ見て直して

出力例

ターミナルには inbound メッセージと「sent(送信した)」の確認だけが表示され、返事の本文はTelegram側のチャットに「画像読み込みで500エラーでした。読み込み先を直してデプロイし直しました」のように返ってくる

このページに出てきた言葉

セッション
Claude Codeを起動してから終了するまでの、ひとつながりの対話。閉じると会話の流れも切れる
MCP
Claudeを外部のツールやデータに繋ぐ接続の仕組み。エムシーピーと読む。Channelsの正体は、出来事を押し込む形に特化した<code>MCPサーバ</code>
研究プレビュー
正式リリース前の試験公開。仕様が途中で変わる前提のお試し段階(research preview)。Channelsは現在この段階で、<code>--channels</code>の書き方も変わる可能性がある
Anthropic認証
claude.aiのアカウント、またはConsole(Anthropicの開発者向け管理画面)で発行する接続キーでログインすること。Bedrock・Vertex AI・Foundry経由では使えない
ボット
人の代わりに自動で受け答えするアカウント。外からのメッセージをClaudeに橋渡しする役
ペアリング
ボットと自分のアカウントを「本人」と紐づける手続き。返ってきた数字をClaude側で入力して確定する
allowlist(許可リスト)
通してよい相手のIDを並べた名簿。ここに載っていない相手からのメッセージは黙って捨てられる
fakechat
Channelsを試すための公式のお試し用。自分のパソコンの中だけでチャット画面が動き、認証も外部接続も不要
channelsEnabled
会社のアカウント全体でChannelsを使えるようにする大元のスイッチ。Team・Enterpriseは管理者がオンにするまで出来事が届かない

関連項目

公式ドキュメント

https://code.claude.com/docs/en/channels

-

← 戻る