# 2026年、Telegram経由でスマートフォンからClaude Codeを操作する方法

> 手順に沿って、Telegramボットの作成、Claude Code Channelsプラグインのインストール、許可リストによる保護、VPSでの24時間365日稼働を行います。コマンド付きですぐに実践できるガイドです。

Source: https://ailoot.ai/blog/ja/claude-code-telegram-channels/
Canonical: https://ailoot.ai/blog/ja/claude-code-telegram-channels/
Language: ja
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-054
Revision: sha256-b016d400123850ab75f1c34969e4fd5bda94e31d3c4b87d73735bbfda18d5025


<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Claude Code Channelsは、2026年3月20日時点でAnthropicの公式プラグインです。BotFatherでボットを作成し、プラグインを1つのコマンドでインストールして、`--channels`フラグを付けてClaudeを再起動し、スマートフォンからボットにメッセージを送ります。Claudeはローカルセッションで直接メッセージを読み取り、ファイルにコードを書き、Telegramで返信します。24時間365日稼働させるには、systemdを使って自分のVPSにセッションを移します。

</div>

ツールの設定に関する資料は、[Ailootのドキュメント](https://ailoot.ai/docs/)でご覧いただけます。

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Ailoot Guides">

[Ailoot Guides](https://ailoot.ai/docs/)

</div>

## Claude Code Channelsとは何か、なぜ必要なのか

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Channelsは、Telegram、Discord、iMessageからのメッセージを、すでに実行中のClaude Codeセッションに転送するMCPプラグインです。セッションはメッセージを通常のユーザーリクエストとして受け取り、ローカルファイルを操作して、同じチャットに返信します。ノートパソコンの電源を入れたままにしておけば、スマートフォンを使っている間も動作します。

</div>

2026年3月20日、AnthropicはClaudeセッションをメッセージングアプリに接続する公式プラグイン、Claude Code Channelsを公開しました。Telegram、Discord、iMessageに対応しています。この機能はリサーチプレビュー段階です。[code.claude.com/docs/en/channels](https://code.claude.com/docs/en/channels)にドキュメントがあり、プラグインのソースコードは公開リポジトリ[anthropics/claude-plugins-official](https://github.com/anthropics/claude-plugins-official)にあります。

簡単に言うと、スマートフォンとClaude Codeセッションをつなぐ「チャットブリッジ」です。ボットに「料金表の書き換えを続けてください。`business/products/practicum/README.md` の次のコホートの日付を更新してください。」と送ると、ボットがVPS上のセッションに転送します。Claudeが文脈を取得してファイルを編集し、変更をコミットして、Telegramで「わかりました。コミットを確認してください。」と返信します。自宅のノートパソコンは閉じたままです。

⚠️ **リサーチプレビューの主な制限：** ChannelsはMCPブリッジです。セッションは自分のマシンまたはVPSで実行されている必要があります。セッションを終了すると、メッセージを受信する相手がいなくなります。そのため、24時間365日稼働させるには別途設定が必要です（下記のVPSのセクションを参照）。

### Channelsと他のリモート作業方法との違い

Anthropicは[公式ドキュメント](https://code.claude.com/docs/en/channels)で直接比較する表を掲載しています。以下はその内容をもとにしたものです。

| 機能 | できること | 選ぶ場面 |
|----|----|----|
| **Claude Code on the web** | 新しいクラウドサンドボックスでタスクを実行し、GitHubからリポジトリをクローンする | 独立したバックグラウンドタスクを任せて、後から確認する |
| **Slack integration** | `@Claude`とメンションされたスレッドでウェブセッションを開始する | チームの会話から直接タスクを始める |
| **MCP server (regular)** | タスク中にClaudeが呼び出す。セッションに何かをプッシュすることはない | Claudeに外部システムへのオンデマンドアクセスを与える |
| **Remote Control** | claude.aiまたはモバイルアプリからローカルセッションを操作する | スマートフォンの画面から既存のセッションを操作する |
| **Channels** ⭐ | Claude以外のソースからのイベントを、すでに実行中のローカルセッションにプッシュする | スマートフォンから質問してチャットで返信を受け取る。CIからのWebhookを受け取る |

ChannelsとRemote Controlの主な違いは、**Remote Control**が「スマートフォンをターミナルをのぞく窓にする」機能であることです。カーソルが見え、ボタンを押せます。**Channels**は、頭脳としてローカルのClaudeセッションを使うチャットボットです。Remote Controlではターミナルを見ます。Channelsでは、ファイルを読める相手にメッセージを送ります。

画面からすべてを操作したいならRemote Controlを使ってください。「質問を送って、そのまま一日を過ごし、返信を受け取る」ならChannelsを使います。私は両方を使っています。重要な変更を承認する必要があるときはRemote Control、タスクに自信があり、自分の夜の時間を取り戻したいときはChannelsです。

## 始める前に必要なもの

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Claude Code v2.1.80以降、対応するclaude.ai認証またはConsole APIキー、Bun、Telegramへのアクセスが必要です。24時間365日稼働させるには、UbuntuまたはDebianを実行するVPSが必要です。macOS、Linux、WSLで同じように動作します。

</div>

コマンドに進む前に、次の項目を確認してください。

1.  **Anthropicアカウント。** 対応するclaude.ai契約認証かConsole APIキーを使います。無料claude.aiはこの契約経路の対象ではありません。Console APIキーも使えます。Console組織が管理設定を配布している場合、その設定でチャンネルが有効か確認します。
2.  **Claude Code v2.1.80以降。** `claude --version`で確認します。古い場合は、`claude update`または`npm install -g @anthropic-ai/claude-code@latest`で更新してください。
3.  **Bun。** ChannelsプラグインはNodeスクリプトではなく、Bunスクリプトです。`bun --version`で確認します。インストールされていない場合は、`curl -fsSL https://bun.sh/install | bash`を実行し、その後`source ~/.bashrc`を実行してください。
4.  **Telegramアカウント。** どのアカウントでもかまいません。スマートフォンでログインしていることが大切です。
5.  **Team/Enterpriseプランを利用している場合、** 管理者に、管理対象の設定または[admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)で`channelsEnabled`を有効にしてもらってください。組織ではデフォルトで無効になっています。

Bunを初めて聞いたとしても、心配はいりません。BunはNodeのような別のJavaScriptランタイムです。起動が速く、単一のバイナリにまとめやすいため、AnthropicはChannelsプラグインに採用しました。一度インストールすれば、あとは気にする必要はありません。

⚠️ **Channelsは、企業向けのBedrock / Google Vertex / Azure Foundryではまだ動作しません。** claude.ai認証またはAnthropic Consoleでのみ動作します。

## ステップ1. BotFatherでTelegramボットを作成する

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Telegramで@BotFatherを開き、`/newbot`コマンドを送り、名前とユーザー名を選びます（ユーザー名は`bot`で終わる必要があります）。`12345678:AAH...`形式のトークンを受け取ります。トークンはボットのパスワードなので、安全に保管してください。トークンを見た人は誰でもボットとして書き込めるうえ、Claudeに送るメッセージを傍受する可能性があります。

</div>

BotFatherがすべて処理してくれるので、5つの操作をするだけです。手順は次のとおりです。

1.  Telegramで[@BotFather](https://t.me/BotFather)を開きます（スマートフォンを使えます。残りの設定もスマートフォンで行えます）。
2.  初めて使う場合は「Start」を押します。
3.  `/newbot`コマンドを送ります。
4.  BotFatherから「よし、新しいボットですね。何と呼びましょうか？」と聞かれるので、表示名を入力します。たとえば、`マイアシスタント - Claude Code`です。
5.  次にユーザー名を聞かれます。Telegram全体で一意で、`bot`で終わる必要があります。たとえば、`my_claude_bot`や`my_dev_bot`です。
6.  BotFatherは次のようなメッセージを返します。

```
Done! Congratulations on your new bot. You will find it at
'<OFFICIAL_URL>'.

Use this token to access the HTTP API:
1234567890:AAHzlAU...

Keep your token secure and store it safely, it can be used by anyone to control your bot.
```

トークンをコピーします。2分後に必要です。

⚠️ **トークンの安全性。** ボットトークンがあれば、ボットを完全に操作できます。漏えいすると、誰でもボットとして書き込めるうえ、Claudeに送るメッセージを傍受する可能性があります。リポジトリで公開したり、コードに貼り付けたり、チャットで送ったりしないでください。私はトークンを`~/.claude/channels/telegram/.env`に保存しています。次のステップでプラグインがここに保存します。

## ステップ2. Claude CodeにTelegramプラグインをインストールする

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

通常どおりClaude Codeを起動し、セッション内で`/plugin install telegram@claude-plugins-official`を入力します。プラグインが見つからない場合は、まず`/plugin marketplace add anthropics/claude-plugins-official`で公式マーケットプレイスを追加します。インストール後、`/reload-plugins`を実行すると、現在のセッションでプラグインのコマンドが有効になります。

</div>

普段Claudeを使うフォルダーでターミナルを開き、次を実行します。

```bash
claude
```

セッション内でスラッシュコマンドを入力します。

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

Claudeが「どのマーケットプレイスにもプラグインが見つかりません」と返す場合、クライアントが公式マーケットプレイスを認識していません。次を追加してください。

```
/plugin marketplace add anthropics/claude-plugins-official
```

以前に追加している場合は、次のコマンドで更新してください。

```
/plugin marketplace update claude-plugins-official
```

インストールに成功したら、プラグインを再読み込みしてコマンドを有効にします。

```
/reload-plugins
```

これで、`/telegram:configure`や`/telegram:access`などのスラッシュコマンドが使えるはずです。確認するには`/help`を入力します。リストにtelegramのセクションがあれば準備完了です。

## ステップ3. トークンをプラグインに登録する

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Claudeセッションで、ステップ1で取得したトークンを使って`/telegram:configure <token>`を入力します。このコマンドはトークンを`~/.claude/channels/telegram/.env`に保存します（自分のユーザーだけがアクセスできます）。別の方法として、Claudeの起動前にシェルで環境変数`TELEGRAM_BOT_TOKEN`を設定できます。本番環境では2つ目の方法を使っています。systemd経由で管理しやすく、`~/.claude/`を誤ってリポジトリに取り込むことを避けられるためです。

</div>

Claudeセッションで次を入力します。

```
/telegram:configure 1234567890:AAHzlAU...
```

このコマンドはトークンを`~/.claude/channels/telegram/.env`に保存します。このファイルには自分のユーザーだけがアクセスできる（`chmod 600`）ため、心配はいりません。

または、環境変数でトークンを設定します。systemdやDockerでClaudeをデプロイし、対話型コマンドを使いたくない場合に便利です。

```bash
export TELEGRAM_BOT_TOKEN="1234567890:AAHzlAU..."
claude --channels plugin:telegram@claude-plugins-official
```

⚠️ 本番環境では、ホームディレクトリ`~/`の`.env`ファイルではなく、常に環境変数を使っています。これならsystemdの`Environment=TELEGRAM_BOT_TOKEN=...`でシークレットを管理しやすく、`~/.claude/`を誤ってリポジトリに取り込むことも避けられます。

## ステップ4. --channelsフラグを付けてClaudeを再起動する

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

セッションを終了（`exit`または`Ctrl+D`）し、`--channels plugin:telegram@claude-plugins-official`フラグを付けて再び起動します。このフラグはプラグインを有効にし、Claudeに新しいメッセージがないかTelegram APIをポーリングするよう指示します。このフラグがないとボットは存在していても沈黙したままです。プラグインは休止状態で、ポーリングも始まりません。

</div>

ここが最も重要で、初回に多くの人がつまずくポイントです。**プラグインをインストールしただけでは不十分です。** ボットが実際にメッセージを受信し始めるには、明示的なフラグを付けてClaudeを起動する必要があります。

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

フラグがなくてもセッションは通常どおり動作しますが、Telegramプラグインは休止状態です。フラグを付けると、ClaudeはプラグインのMCPサーバーを起動し、Telegram APIのポーリングを開始して、ボットに送られたメッセージに応答します。

起動後、ターミナルに次のような表示が出るはずです。

```
✻ Welcome to Claude Code 2.1.80
  Channels: telegram@claude-plugins-official (active)
  Polling for messages...
```

channelsに関する行がなければ、フラグが認識されていません。Claude Codeがバージョン2.1.80以降であること、プラグインが実際にインストールされていること（セッション内で`/plugin list`）を確認してください。

⚠️ **便利なヒント。** 私は`~/.zshrc`にエイリアスを設定しています。

```bash
alias claude-tg="claude --channels plugin:telegram@claude-plugins-official"
```

これで`claude-tg`を実行するだけです。スペースで区切れば複数のプラグインを渡せます。`--channels plugin:telegram@... plugin:discord@...`のようにします。

## ステップ5. アカウントをペアリングし、他の全員をブロックする

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Telegramでボットを開き、何かメッセージを送ります。ボットから6桁のペアリングコードが返ってきます。ターミナルに戻り、`/telegram:access pair <code>`を入力します。その後、必ず許可リストでアクセスを制限します。`/telegram:access policy allowlist`を実行してください。認可したい人のペアリングコードだけを承認してください。送信者リストが、誰がセッションへ到達できるかを制御します。

</div>

**承認済みの送信者は、そのセッションのファイルやツールへの操作を依頼できます。** 意図したアカウントだけをペアリングし、ボットを頼る前に送信者方針を固めてください。

手順：

1.  **Telegramでボットを開きます。** ユーザー名`@my_claude_bot`で検索するか、BotFatherの返信にあるリンクを開きます。「Start」を押します。
2.  **ボットに何かメッセージを送ります。** たとえば、`hi`と送ります。
3.  **ボットからペアリングコードが返ってきます。** 次のような形式です。

```
こんにちは！このアカウントをペアリングするには、Claude Code セッションで次を実行してください：
/telegram:access pair 847291

このコードの有効期限は5分です。
```

4.  **ターミナルに戻ります。** Claudeセッションで、返信に記載されたコマンドを入力します。

```
/telegram:access pair 847291
```

Claudeは「アカウントをペアリングしました」と返信します。これでTelegramアカウントからコマンドを送れます。

5.  **許可リストのポリシーを有効にします。** これにより、すでにペアリングされているアカウント以外はすべてブロックされます。

```
/telegram:access policy allowlist
```

これ以降、他のアカウントからのメッセージは**何も通知せず無視されます**。ターミナルにも表示されず、ボットも返信しません。まるでメッセージがなかったかのようです。

⚠️ **許可リストは必ず**ペアリング直後に有効にしてください。後回しにしないでください。設定中に見知らぬペアリングを承認せず、返信成功だけで送信者方針が正しいとも考えないでください。初めてボットを使ったとき、許可リストなしで10分間動作させてしまい、その間に無関係のTelegramユーザー2人から「hi」と送られました。幸い、その時点ではコマンドによるファイル書き込みを許可していませんでした。

他の人（たとえばプロジェクトの共同作業者）を追加する場合：

```
/telegram:access pair <その人のアカウントのコード>
```

その人が先にボットにメッセージを送ってコードを取得し、それをあなたに伝える必要があります。追加方法はこれだけです。

その他のガイドは[Ailootのドキュメント](https://ailoot.ai/docs/)でご覧いただけます。

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Ailoot Guides">

[Ailoot Guides](https://ailoot.ai/docs/)

</div>

## 自分のVPSでClaudeを24時間365日稼働させる方法

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

ローカルセッションはノートパソコンを開いている間に動作します。ふたを閉じるとボットは沈黙します。いつでもClaudeに返信させるには、セッションを自分のVPSに移します。Claude CodeとBunをインストールし、同じ専用Unixユーザーで認証、プラグイン導入・ペアリングを行い、systemdで自動再起動します。Coolifyサーバーでも問題なく動作します。

</div>

ボットを「ノートパソコンを1時間開いて操作する」状態ではなく、「24時間いつでも動いている」状態にしたいなら、セッションを実行したままにする必要があります。ローカルならtmuxでもできますが、VPSのほうが簡単で安定しています。

構成例の一つでは、ウェブサイトもホストしているCoolify VPSを使っています（[Coolify経由で公開するガイド](https://ailoot.ai/blog/ja/coolify-claude-code-deploy/)を参照）。同じサーバーを使えます。Claudeのメモリ使用量はわずかです。VPSを持っていなければ、月額4～5ユーロ程度の最安プランを利用できます。たとえばHetzner CX11 / Yandex Cloud / Selectelです。

### ステップ1：VPSにシステムをインストールする

管理者として専用Unixアカウントと作業場を先に作ります。既存アカウントはホームと所有者を確認した場合だけ再利用します。

```bash
sudo useradd --create-home --shell /bin/bash claude
sudo install -d -o claude -g claude /home/claude/workspace
sudo -iu claude
```

以後はrootのホームでなく、このclaudeのログインシェルで、Bun公式導入と[Claude Codeのネイティブ導入](https://code.claude.com/docs/en/setup)を行います。

```bash
curl -fsSL https://bun.sh/install | bash
curl -fsSL https://claude.ai/install.sh | bash
```

同じユーザーの新しいログインシェルを開き、PATH変更を反映して確認します。

```bash
whoami
printf '%s\n' "$HOME"
command -v bun
command -v claude
bun --version
claude --version
cd /home/claude/workspace
claude
```

whoamiはclaude、HOMEは/home/claudeである必要があります。command -vの絶対パスを記録し、実ClaudeパスをExecStart、BunのディレクトリをサービスPATHへ使います。見つからなければ止めてください。

### ステップ2：サービスユーザーで認証・導入・ペアリングする

同じ対話セッションでサインインし、上の手順2〜5をこのUnixユーザーで繰り返します。Telegramプラグインを**user scope**へ入れ、トークンを設定し、--channelsで再起動し、アカウントをペアリングしてpolicy allowlistを有効にします。実際の返信を確認してからサービス化します。rootの設定や認証をコピーしません。

claude.ai契約認証とConsole APIキーの両方に対応します。Team/Enterpriseは組織で有効化し、管理Console組織もチャンネル設定を満たす必要があります。Consoleは契約に含まれずAPI課金です。対話からサービスへ移すときも選んだアカウントと方式を保ちます。

### ステップ3：systemdでセッションを実行する

サービスユーザーのシェルを抜け、管理者としてunitを作ります。以下は確認結果が`/home/claude/.local/bin/claude`と`/home/claude/.bun/bin/bun`の場合で、違えば実際の値へ置き換えます。同じ認証環境とボットトークンを渡し、unitは管理者だけが読めるようにして、秘密をコミットしません。自動起動・障害再起動用のファイルは次です。

```bash
cat > /etc/systemd/system/claude-code.service <<'EOF'
[Unit]
Description=Claude Code with Telegram channel
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=claude
WorkingDirectory=/home/claude/workspace
Environment="HOME=/home/claude"
Environment="TELEGRAM_BOT_TOKEN=1234567890:AAH..."
Environment="PATH=/home/claude/.local/bin:/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/claude/.local/bin/claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable claude-code
systemctl start claude-code
```

設定した項目は次のとおりです。

- **`Type=simple`** — シンプルなモードです。プロセスの起動と同時に、systemdは起動完了と判断します。
- **`User=claude`** — rootではなく、専用ユーザーで実行します。こちらのほうが安全です。
- **`WorkingDirectory=/home/claude/workspace`** — 事前に作ったサービスユーザー所有の作業場です。起動前に対象リポジトリを置き、root所有のクローンやrootのホームを使わないでください。
- **`Environment=TELEGRAM_BOT_TOKEN=...`** — トークンをプロセスに直接渡します。`.env`ファイルは不要です。
- **`--dangerously-skip-permissions`** — 権限確認を迂回するモードです。無人運用に常に必須と考えず、確認方針と強制隔離を明示的に選んでください。送信者リストは本人を認可するだけで、依頼コマンドを安全にはしません。バイパスは、ファイル、認証、通信を意図的に制限した隔離環境だけで使います。
- **`Restart=on-failure`** — Claudeのクラッシュやネットワーク切断などでプロセスが終了すると、systemdは10秒後に再起動します。

ログを表示するには、次を実行します。

```bash
journalctl -u claude-code -f
```

問題が起きた場合、`journalctl -u claude-code -n 100`で直近100行を確認できます。

### ステップ4：ボットが動作していることを確認する

対話設定で実際の返信が出てからサービスを開始し、同じペアリング済みアカウントから無害なメッセージを送り、応答とログを確認します。対話で動いてサービスで失敗するなら、ユーザー、HOME、作業場、実行パス、PATH、認証を先に比べてください。

後のペアリング変更はサービスを止め、`sudo -iu claude`で同じユーザーとなり、`/home/claude/workspace`へ入り、同じチャンネルを対話起動して行います。ペアリングと許可設定後に終了し、サービスを戻します。同じボットのポーラーを同時に2つ動かしません。journalctlはログ閲覧で、対話プロンプトを提供しません。

## 本番サーバーでの5つの落とし穴と対処法

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

本番環境の設定を1週間試して、落とし穴をまとめました。systemdからBunが見えない、長時間のアイドル後にロングポーリングが切れる、Maxプランの上限に日中到達する、`--dangerously-skip-permissions`で情報が漏れる可能性がある、再インストール後に許可リストを忘れる、といった問題です。どれも1行の設定で対処できますが、知らないと数日後には遭遇します。

</div>

### 1. systemdのPATHにBunがない

systemdは最小限の環境でプロセスを起動するため、`~/.bashrc`の変数を認識しません。rootのホームだけにBunを入れ、サービスがUser=claudeなら、その導入やrootのシェルPATHは引き継ぎません。

**解決策。** Bunをシステム全体にインストールする（`/usr/local/bin/bun`）か、PATHを明示的に渡します。

```ini
Environment="PATH=/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
```

### 2. 長時間アイドル状態が続くと、Telegram APIへのTCP接続が失われる

6～12時間アイドル状態が続くと、ボットが「沈黙」することがあります。メッセージはTelegramに送信されますが、プラグインに届きません。ロングポーリングの仕様上の問題です。

**解決策。** systemdに定期再起動を追加します（24時間ごと）。

```ini
Restart=always
RuntimeMaxSec=86400
```

またはcronジョブを設定します。`0 5 * * * systemctl restart claude-code`（午前5時に再起動）です。

### 3. 日中にClaude Maxの上限に達する

Telegram経由でClaudeを頻繁に使うと、Max 5xプラン（月額約\$100）では4～6時間で上限に達することがあります。Telegramからのリクエストも通常のターミナルからのリクエストと同じで、同じ利用枠を消費します。

**解決策。**「ボットが応答しない—`/stats`を確認」というリマインダーを設定します。上限に達したら、リセットを待つか、Max 20x（月額\$200）にアップグレードします。[トークン節約ガイド](https://ailoot.ai/blog/ja/claude-code-token-limits-saving/)と[SonnetとOpusモデルのガイド](https://ailoot.ai/blog/ja/claude-code-model-effort-sonnet-opus/)も参考になります。

### 4. 許可リストがあっても`--dangerously-skip-permissions`は危険

このフラグはすべての確認を無効にします。Telegramから送ったコマンドは何でも、質問なしで実行されます。ファイル削除、外部へのリクエストなど、何でもです。以前、Claudeに「不要な `console.log` 文を削除してください」と頼んだところ、整理しようと熱心になるあまり、本番スクリプトのデバッグログを半分消してしまいました。gitで復元しましたが、被害はすでに起きていました。

**解決策。** 重要なプロジェクトで作業する場合は、`--dangerously-skip-permissions`を有効にしないでください。代わりに[Remote Control](https://code.claude.com/docs/en/remote-control)でセッションを実行します。権限の確認がスマートフォンに届き、手動で承認できます。`--dangerously-skip-permissions`を付けたChannelsは、ラフな下書き、リファクタリング、テスト用です。

### 5. 再インストール後に許可リストが「壊れる」

許可リストは`~/.claude/channels/telegram/`に保存されています。新しいVPSに移行したり、Claudeを再インストールしたり、ユーザーを変更したりすると、以前のペアリング情報が引き継がれません。元の送信者リストはないため、新しい実体が以前のアクセス方針を持つとは考えないでください。

**解決策。** 移行前に`~/.claude/channels/telegram/`をバックアップします。移行後に元の場所へ戻してください。または再インストール後すぐに再ペアリングし、ボット起動から`policy allowlist`設定まで1分も空けないでください。

## ChannelsとRemote Control、どちらを選ぶべきか

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Channelsでは、Claudeセッションがチャットで返信し、スマートフォンからプロンプトを送ります。Remote Controlでは、スマートフォンにターミナル画面を表示し、ボタンでセッションを操作します。Channelsは「質問して次へ進む」のに便利です。Claudeの動作を確認し、危険な操作をすべて承認する必要がある重要な作業にはRemote Controlが向いています。

</div>

Anthropicはほぼ同じ時期に両方の機能を公開しました。Remote Controlは2026年2月25日、Channelsは2026年3月20日です。両者は**機能が重複しているのではなく**、それぞれ異なる問題を解決します。

| シナリオ | Channels | Remote Control |
|----|----|----|
| 外出中に「昨日のコミットは何だった？」と聞く | ✅ 最適 | 画面全体が必要で、過剰 |
| ファイル変更を承認する | ⚠️ `--dangerously-skip-permissions`による目隠し状態での承認 | ✅ Claudeが何をしようとしているか確認できる |
| Claudeを24時間365日稼働させる | ✅ VPS + systemdで設定 | ⚠️ ノートパソコンを開いたままにする必要がある |
| スマートフォンからプロンプトを2、3個送るだけ | ⚠️ ボット、トークン、プラグインが必要で、過剰 | ✅ QRコード1つで設定できる |
| CI / SentryからWebhookを受け取る | ✅ 標準的な用途 | ❌ 対象外 |
| 複数人のチームで使う | ✅ 複数アカウントの許可リストに対応 | ⚠️ セッション所有者のみ |
| Anthropicのクラウドにファイルを送らない | ✅ MCP経由のテキストのみ | ✅ こちらもテキストのみ |

私は次のように使い分けています。ノートパソコンから離れている間の非同期作業、CIの通知、連携には**Channels**を使います。Claudeの動作を確認したり、リスクのある手順を承認したりする必要がある場合は、**Remote Control**を使います。

両方を同時に使えます。Telegramボットは「質問して答えを受け取る」ための手軽な経路、Remote Controlは「重要なことを操作する」ための経路です。どちらも同じClaudeの利用枠を使います。

## よくある質問

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

Channelsについてよくある7つの質問を取り上げます。複数のボットの接続、ターミナルを閉じたときの動作、CIからのWebhook、TelegramとDiscordの違い、Teamプランの制限、Claudeがスマートフォンから何を見られるか、無料プランについて説明します。その他の資料はAilootのドキュメントでご覧いただけます。

</div>

**複数のボットを同時に接続できますか？**

はい。`--channels`フラグには、スペース区切りで複数の項目を指定できます。`--channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official`のようにします。1つのClaudeセッションが両方のチャットに返信します。

**ターミナルを閉じるとどうなりますか？**

セッションが終了し、プラグインが停止して、ボットは沈黙します。VPSではsystemdがセッションを実行し続けます。ローカルマシンではノートパソコンを閉じると、数秒後に`claude`がSIGHUPで切断されます。

**CIやSentryから通知を受け取れますか？**

はい。Channelsは**双方向チャネル**です。[Channels Reference](https://code.claude.com/docs/en/channels-reference)を使って、Webhookをセッションに転送する独自のプラグインを作成できます。Claudeはイベントをリアルタイムで確認して応答します。

**TelegramはDiscordより機能が制限されていますか？**

基本機能は同じです。Discordでは、ボットの設定でMessage Content Intentが必要です。iMessageはmacOSでのみ動作し、`~/Library/Messages/chat.db`データベースを直接読み取ります。Telegramはどの環境でも使えます。

**Teamプランの場合、何をする必要がありますか？**

組織の管理者が、管理対象の設定または[admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)で`channelsEnabled: true`を有効にする必要があります。これをしないとプラグインは接続しても、メッセージは届きません。起動時に警告がターミナルに表示されます。

**スマートフォンからClaudeに見えるのは何ですか？Telegramのチャット自体も見えますか？**

いいえ。Claudeに見えるのは**ボットに送ったメッセージだけ**です。Telegramの会話履歴、チャット一覧、連絡先にはアクセスできません。MCPプラグインはTelegram Bot API経由でボット宛てのメッセージのみを読み取ります。

**Pro/MaxのサブスクリプションなしでChannels経由でClaudeを使えますか？**

はい。Console APIキーにも対応し、Console組織にAPI課金されます。無料claude.aiはここで説明する契約経路ではありません。Team/Enterpriseと管理Console組織はチャンネルの有効化条件を満たします。

## 次にすること

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="このセクションの重要なポイント">

重要なポイント

ボットの設定が完了し、許可リストが有効になり、セッションがVPS上で動作しています。次はChannelsを日々のワークフローに取り入れます。GitHub ActionsとSentryからのWebhookを接続し、定期タスクにRoutinesを組み合わせ、ボットの稼働監視を設定してください。それぞれ15～30分ででき、監視の抜けを1つずつなくせます。

</div>

ボットが安定して動作するようになったら、Channelsを最大限に活用するために次のことを試せます。

1.  **CIからWebhookを接続する。** GitHub Actions / GitLab CIを使っている場合、Channelsプラグインでビルド結果を直接セッションに転送できます。push直後にClaudeが「テスト失敗」を確認し、修正案を提案します。[channels-reference](https://code.claude.com/docs/en/channels-reference)のドキュメントを参照してください。
2.  **Routinesと組み合わせる。** 同じセッションで[Routines](https://ailoot.ai/blog/ja/claude-code-routines/)を実行し、定期タスクを行えます。朝になるとボットが自動で「おはようございます。プロジェクトの概要です」と送り、スマートフォンから「売上レポートを作って」と返信できます。
3.  **ボットの監視を設定する。** ボットが沈黙したら、すぐに気づきたいものです。VPS上の簡単なcronスクリプトで、1時間ごとにTelegramボットへpingを送ります。ボットが返信しない場合、別のチャネルにアラートを送ります。これがないと、ボットが午前4時に停止しても、正午まで気づかない可能性があります。
4.  **[hooks](https://ailoot.ai/blog/ja/claude-code-hooks/)を検討する。** HooksはClaudeのイベント（ツールの開始、メッセージの完了）に応答します。HooksとChannelsを組み合わせると、「ClaudeがタスクNを完了しました」のようなTelegram通知を自動送信できます。

Channelsを何にでも追加する必要はありません。外出先やカフェにいる間にタスクの様子を確認するのに便利です。じっくり考える必要があるときは、ノートパソコンを開いて座りましょう。外出中や移動中に「これも聞かないと。ノートパソコンを開かないと」と考え続けずに済むのがChannelsの利点です。

<div class="section" role="doc-bibliography" aria-label="出典">

### 出典

- [Push events into a running session with channels - Claude Code Docs](https://code.claude.com/docs/en/channels)
- [anthropics/claude-plugins-official on GitHub](https://github.com/anthropics/claude-plugins-official) - Telegram、Discord、iMessage、fakechatプラグインのソースコード
- [Continue local sessions from any device with Remote Control - Claude Code Docs](https://code.claude.com/docs/en/remote-control)

</div>

ツール活用に関する資料は、[Ailootのドキュメント](https://ailoot.ai/docs/)をご覧ください。



<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Ailoot Guides">

[Ailoot Guides](https://ailoot.ai/docs/)

</div>

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Ailootに移動">

[Ailootに移動](https://ailoot.ai/)

</div>

## 2026年、Telegram経由でスマートフォンからClaude Codeを操作する方法：よくある質問

### 手動で動くTelegramボットがサービスでは失敗するのはなぜですか？

Unixユーザー、HOME、作業場、Claude実体のパス、BunのPATH、認証環境を、成功した対話実行と比べます。導入・設定・ペアリングは同じサービスユーザーで行い、rootの状態とは区別してください。

### ChannelsはPro/Maxの代わりにConsole APIキーを使えますか？

はい。Console API認証にも対応し、ConsoleへAPI課金されます。必要な組織設定を確認し、セッションを動かすユーザーでトークン、ペアリング、送信者リストを設定します。


## Ailoot · 企業とそのプロジェクト群

Ailootは、蓄積した運営経験、幅広い顧客基盤、安定したサービス、継続的なKPI管理を基盤としています。

企業とそのプロジェクト群：数百万の顧客、毎月数十億規模の売上。

Ailootはこの運営経験を、お客様の製品、エージェント、アプリケーション、自動化でAI機能を利用するためのAPIアクセスに活かしています。
