Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One change · claude-code

Push events into a running session with channels changedchannels

Nearest release: v2.1.304, published 6 hours before upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Upstream edited this page at 20 Oct 2026 02:25 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 20 Oct 2026 18:37 UTC.

Upstream edited
Recorded here
Lines+236added
Lines−240removed
From line 2 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits17to this page, all time

The whole hunk

from line 2, old and new numbered
/
lines
from line 2
22 
33> Use channels to push messages, alerts, and webhooks into your Claude Code session from an MCP server. Forward CI results, chat messages, and monitoring events so Claude can react while you're away.
44 
5<Note>
6 Channels are in [research preview](#research-preview). They require Anthropic authentication through claude.ai or a Console API key, and are not available on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. Team and Enterprise organizations must [explicitly enable them](#enterprise-controls).
7</Note>
5> [!NOTE]
6>
7> Channels are in [research preview](#research-preview). They require Anthropic authentication through claude.ai or a Console API key, and are not available on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry. Team and Enterprise organizations must [explicitly enable them](#enterprise-controls).
88 
99A channel is an MCP server that pushes events into your running Claude Code session, so Claude can react to things that happen while you're not at the terminal. Channels can be two-way: Claude reads the event and replies back through the same channel, like a chat bridge. Events only arrive while the session is open, so for an always-on setup you run Claude in a background process or persistent terminal.
1010 
from line 20
2020 
2121Each supported channel is a plugin that requires [Bun](https://bun.sh). For a hands-on demo of the plugin flow before connecting a real platform, try the [fakechat quickstart](#quickstart).
2222 
23<Tabs>
24 <Tab title="Telegram">
25 View the full [Telegram plugin source](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram).
23**Telegram**
2624 
27 <Steps>
28 <Step title="Create a Telegram bot">
29 Open [BotFather](https://t.me/BotFather) in Telegram and send `/newbot`. Give it a display name and a unique username ending in `bot`. Copy the token BotFather returns.
30 </Step>
25View the full [Telegram plugin source](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram).
3126 
32 <Step title="Install the plugin">
33 Start Claude Code by running `claude` in your terminal, then enter this at its prompt:
27**1. Create a Telegram bot**
3428 
35 ```
36 /plugin install telegram@claude-plugins-official
37 ```
29Open [BotFather](https://t.me/BotFather) in Telegram and send `/newbot`. Give it a display name and a unique username ending in `bot`. Copy the token BotFather returns.
3830 
39 If the install fails, match the message Claude Code reports:
31**2. Install the plugin**
4032 
41 * `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
42 * `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
33Start Claude Code by running `claude` in your terminal, then enter this at its prompt:
4334 
44 When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. Check the install summary: if it reports `Run /reload-plugins to apply.`, see [Apply plugin changes without restarting](/docs/en/plugins/cli-reference#reload-plugins) to make the plugin's configure command available.
45 </Step>
35```
36/plugin install telegram@claude-plugins-official
37```
4638 
47 <Step title="Configure your token">
48 Run the configure command with the token from BotFather:
39If the install fails, match the message Claude Code reports:
4940 
50 ```
51 /telegram:configure <token>
52 ```
41* `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
42* `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
5343 
54 This saves it to `~/.claude/channels/telegram/.env`. You can also set `TELEGRAM_BOT_TOKEN` in your shell environment before launching Claude Code.
55 </Step>
44When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. Check the install summary: if it reports `Run /reload-plugins to apply.`, see [Apply plugin changes without restarting](/docs/en/plugins/cli-reference#reload-plugins) to make the plugin's configure command available.
5645 
57 <Step title="Restart with channels enabled">
58 Exit Claude Code and restart with the channel flag. This starts the Telegram plugin, which begins polling for messages from your bot:
46**3. Configure your token**
5947 
60 ```bash theme={null}
61 claude --channels plugin:telegram@claude-plugins-official
62 ```
63 </Step>
48Run the configure command with the token from BotFather:
6449 
65 <Step title="Pair your account">
66 Open Telegram and send any message to your bot. The bot replies with a pairing code.
50```
51/telegram:configure <token>
52```
6753 
68 <Note>If your bot doesn't respond, make sure Claude Code is running with `--channels` from the previous step. The bot can only reply while the channel is active.</Note>
54This saves it to `~/.claude/channels/telegram/.env`. You can also set `TELEGRAM_BOT_TOKEN` in your shell environment before launching Claude Code.
6955 
70 Back in Claude Code, run:
56**4. Restart with channels enabled**
7157 
72 ```
73 /telegram:access pair <code>
74 ```
58Exit Claude Code and restart with the channel flag. This starts the Telegram plugin, which begins polling for messages from your bot:
7559 
76 Then lock down access so only your account can send messages:
60```bash theme={null}
61claude --channels plugin:telegram@claude-plugins-official
62```
7763 
78 ```
79 /telegram:access policy allowlist
80 ```
81 </Step>
82 </Steps>
83 </Tab>
64**5. Pair your account**
8465 
85 <Tab title="Discord">
86 View the full [Discord plugin source](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord).
66Open Telegram and send any message to your bot. The bot replies with a pairing code.
8767 
88 <Steps>
89 <Step title="Create a Discord bot">
90 Go to the [Discord Developer Portal](https://discord.com/developers/applications), click **New Application**, and name it. In the **Bot** section, create a username, then click **Reset Token** and copy the token.
91 </Step>
68> [!NOTE]
69>
70> If your bot doesn't respond, make sure Claude Code is running with `--channels` from the previous step. The bot can only reply while the channel is active.
9271 
93 <Step title="Enable Message Content Intent">
94 In your bot's settings, scroll to **Privileged Gateway Intents** and enable **Message Content Intent**.
95 </Step>
72Back in Claude Code, run:
9673 
97 <Step title="Invite the bot to your server">
98 Go to **OAuth2 > URL Generator**. Select the `bot` scope and enable these permissions:
74```
75/telegram:access pair <code>
76```
9977 
100 * View Channels
101 * Send Messages
102 * Send Messages in Threads
103 * Read Message History
104 * Attach Files
105 * Add Reactions
78Then lock down access so only your account can send messages:
10679 
107 Open the generated URL to add the bot to your server.
108 </Step>
80```
81/telegram:access policy allowlist
82```
10983 
110 <Step title="Install the plugin">
111 Start Claude Code by running `claude` in your terminal, then enter this at its prompt:
84**Discord**
11285 
113 ```
114 /plugin install discord@claude-plugins-official
115 ```
86View the full [Discord plugin source](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord).
11687 
117 If the install fails, match the message Claude Code reports:
88**1. Create a Discord bot**
11889 
119 * `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
120 * `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
90Go to the [Discord Developer Portal](https://discord.com/developers/applications), click **New Application**, and name it. In the **Bot** section, create a username, then click **Reset Token** and copy the token.
12191 
122 When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. Check the install summary: if it reports `Run /reload-plugins to apply.`, see [Apply plugin changes without restarting](/docs/en/plugins/cli-reference#reload-plugins) to make the plugin's configure command available.
123 </Step>
92**2. Enable Message Content Intent**
12493 
125 <Step title="Configure your token">
126 Run the configure command with the bot token you copied:
94In your bot's settings, scroll to **Privileged Gateway Intents** and enable **Message Content Intent**.
12795 
128 ```
129 /discord:configure <token>
130 ```
96**3. Invite the bot to your server**
13197 
132 This saves it to `~/.claude/channels/discord/.env`. You can also set `DISCORD_BOT_TOKEN` in your shell environment before launching Claude Code.
133 </Step>
98Go to **OAuth2 > URL Generator**. Select the `bot` scope and enable these permissions:
13499 
135 <Step title="Restart with channels enabled">
136 Exit Claude Code and restart with the channel flag. This connects the Discord plugin so your bot can receive and respond to messages:
100* View Channels
101* Send Messages
102* Send Messages in Threads
103* Read Message History
104* Attach Files
105* Add Reactions
137106 
138 ```bash theme={null}
139 claude --channels plugin:discord@claude-plugins-official
140 ```
141 </Step>
107Open the generated URL to add the bot to your server.
142108 
143 <Step title="Pair your account">
144 DM your bot on Discord. The bot replies with a pairing code.
109**4. Install the plugin**
145110 
146 <Note>If your bot doesn't respond, make sure Claude Code is running with `--channels` from the previous step. The bot can only reply while the channel is active.</Note>
111Start Claude Code by running `claude` in your terminal, then enter this at its prompt:
147112 
148 Back in Claude Code, run:
113```
114/plugin install discord@claude-plugins-official
115```
149116 
150 ```
151 /discord:access pair <code>
152 ```
117If the install fails, match the message Claude Code reports:
153118 
154 Then lock down access so only your account can send messages:
119* `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
120* `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
155121 
156 ```
157 /discord:access policy allowlist
158 ```
159 </Step>
160 </Steps>
161 </Tab>
122When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects. Check the install summary: if it reports `Run /reload-plugins to apply.`, see [Apply plugin changes without restarting](/docs/en/plugins/cli-reference#reload-plugins) to make the plugin's configure command available.
162123 
163 <Tab title="iMessage">
164 View the full [iMessage plugin source](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).
124**5. Configure your token**
165125 
166 The iMessage channel reads your Messages database directly and sends replies through AppleScript. It requires macOS and needs no bot token or external service.
126Run the configure command with the bot token you copied:
167127 
168 <Steps>
169 <Step title="Grant Full Disk Access">
170 The Messages database at `~/Library/Messages/chat.db` is protected by macOS. The first time the server reads it, macOS prompts for access: click **Allow**. The prompt names whichever app launched Bun, such as Terminal, iTerm, or your IDE.
128```
129/discord:configure <token>
130```
171131 
172 If the prompt doesn't appear or you clicked Don't Allow, grant access manually under **System Settings > Privacy & Security > Full Disk Access** and add your terminal. Without this, the server exits immediately with `authorization denied`.
173 </Step>
132This saves it to `~/.claude/channels/discord/.env`. You can also set `DISCORD_BOT_TOKEN` in your shell environment before launching Claude Code.
174133 
175 <Step title="Install the plugin">
176 Start Claude Code by running `claude` in your terminal, then enter this at its prompt:
134**6. Restart with channels enabled**
177135 
178 ```
179 /plugin install imessage@claude-plugins-official
180 ```
136Exit Claude Code and restart with the channel flag. This connects the Discord plugin so your bot can receive and respond to messages:
181137 
182 If the install fails, match the message Claude Code reports:
138```bash theme={null}
139claude --channels plugin:discord@claude-plugins-official
140```
183141 
184 * `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
185 * `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
142**7. Pair your account**
186143 
187 When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects.
144DM your bot on Discord. The bot replies with a pairing code.
188145 
189 If the install summary reports `Run /reload-plugins to apply.`, you don't need to act on it here, because restarting in the next step picks up the plugin.
190 </Step>
146> [!NOTE]
147>
148> If your bot doesn't respond, make sure Claude Code is running with `--channels` from the previous step. The bot can only reply while the channel is active.
191149 
192 <Step title="Restart with channels enabled">
193 Exit Claude Code and restart with the channel flag:
150Back in Claude Code, run:
194151 
195 ```bash theme={null}
196 claude --channels plugin:imessage@claude-plugins-official
197 ```
198 </Step>
152```
153/discord:access pair <code>
154```
199155 
200 <Step title="Text yourself">
201 Open Messages on any device signed into your Apple ID and send a message to yourself. It reaches Claude immediately: self-chat bypasses access control with no setup.
156Then lock down access so only your account can send messages:
202157 
203 <Note>The first reply Claude sends triggers a macOS Automation prompt asking if your terminal can control Messages. Click **OK**.</Note>
204 </Step>
158```
159/discord:access policy allowlist
160```
205161 
206 <Step title="Allow other senders">
207 By default, only your own messages pass through. To let another contact reach Claude, add their handle:
162**iMessage**
208163 
209 ```
210 /imessage:access allow +15551234567
211 ```
164View the full [iMessage plugin source](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).
212165 
213 Handles are phone numbers in `+country` format or Apple ID emails like `[email protected]`.
214 </Step>
215 </Steps>
216 </Tab>
217</Tabs>
166The iMessage channel reads your Messages database directly and sends replies through AppleScript. It requires macOS and needs no bot token or external service.
218167 
168**1. Grant Full Disk Access**
169 
170The Messages database at `~/Library/Messages/chat.db` is protected by macOS. The first time the server reads it, macOS prompts for access: click **Allow**. The prompt names whichever app launched Bun, such as Terminal, iTerm, or your IDE.
171 
172If the prompt doesn't appear or you clicked Don't Allow, grant access manually under **System Settings > Privacy & Security > Full Disk Access** and add your terminal. Without this, the server exits immediately with `authorization denied`.
173 
174**2. Install the plugin**
175 
176Start Claude Code by running `claude` in your terminal, then enter this at its prompt:
177 
178```
179/plugin install imessage@claude-plugins-official
180```
181 
182If the install fails, match the message Claude Code reports:
183 
184* `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
185* `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
186 
187When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects.
188 
189If the install summary reports `Run /reload-plugins to apply.`, you don't need to act on it here, because restarting in the next step picks up the plugin.
190 
191**3. Restart with channels enabled**
192 
193Exit Claude Code and restart with the channel flag:
194 
195```bash theme={null}
196claude --channels plugin:imessage@claude-plugins-official
197```
198 
199**4. Text yourself**
200 
201Open Messages on any device signed into your Apple ID and send a message to yourself. It reaches Claude immediately: self-chat bypasses access control with no setup.
202 
203> [!NOTE]
204>
205> The first reply Claude sends triggers a macOS Automation prompt asking if your terminal can control Messages. Click **OK**.
206 
207**5. Allow other senders**
208 
209By default, only your own messages pass through. To let another contact reach Claude, add their handle:
210 
211```
212/imessage:access allow +15551234567
213```
214 
215Handles are phone numbers in `+country` format or Apple ID emails like `[email protected]`.
216 
219217## Quickstart
220218 
221219Fakechat is an officially supported demo channel that runs a chat UI on localhost, with nothing to authenticate and no external service to configure.
from line 226
228226* [Bun](https://bun.sh) installed. The pre-built channel plugins are Bun scripts. Check with `bun --version`; if that fails, [install Bun](https://bun.sh/docs/installation).
229227* **Team, Enterprise, or managed Console org**: your admin must [enable channels](#enterprise-controls) in managed settings
230228 
231<Steps>
232 <Step title="Install the fakechat channel plugin">
233 Start Claude Code by running `claude` in your terminal, then enter the install command at its prompt:
229**1. Install the fakechat channel plugin**
234230 
235 ```text theme={null}
236 /plugin install fakechat@claude-plugins-official
237 ```
231Start Claude Code by running `claude` in your terminal, then enter the install command at its prompt:
238232 
239 If the install fails, match the message Claude Code reports:
233```text theme={null}
234/plugin install fakechat@claude-plugins-official
235```
240236 
241 * `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
242 * `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
237If the install fails, match the message Claude Code reports:
243238 
244 When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects.
239* `Marketplace "claude-plugins-official" not found`: add the marketplace with `/plugin marketplace add anthropics/claude-plugins-official`, then retry the install.
240* `Plugin "<name>" not found in marketplace "claude-plugins-official"`: your local copy of the marketplace catalog may be out of date. Refresh it with `/plugin marketplace update claude-plugins-official`, then retry the install. If the retry prints the same message, see [Plugin not found in marketplace](/docs/en/plugins/troubleshooting#plugin-not-found-in-marketplace).
245241 
246 If the install summary reports `Run /reload-plugins to apply.`, you don't need to act on it here, because restarting in the next step picks up the plugin.
247 </Step>
242When the install asks for an installation scope, choose the user scope option so the plugin is available across all your projects.
248243 
249 <Step title="Restart with the channel enabled">
250 Exit Claude Code, then restart with `--channels` and pass the fakechat plugin you installed:
244If the install summary reports `Run /reload-plugins to apply.`, you don't need to act on it here, because restarting in the next step picks up the plugin.
251245 
252 ```bash theme={null}
253 claude --channels plugin:fakechat@claude-plugins-official
254 ```
246**2. Restart with the channel enabled**
255247 
256 The fakechat server starts automatically. The startup screen shows a channels notice stating that messages from `plugin:fakechat@claude-plugins-official` inject directly in this session. If the plugin isn't installed or isn't on the approved allowlist, a warning line naming the problem appears below that notice.
248Exit Claude Code, then restart with `--channels` and pass the fakechat plugin you installed:
257249 
258 <Tip>
259 You can pass several plugins to `--channels`, space-separated.
260 </Tip>
261 </Step>
250```bash theme={null}
251claude --channels plugin:fakechat@claude-plugins-official
252```
262253 
263 <Step title="Push a message in">
264 Open the fakechat UI at [http://localhost:8787](http://localhost:8787) and type a message:
254The fakechat server starts automatically. The startup screen shows a channels notice stating that messages from `plugin:fakechat@claude-plugins-official` inject directly in this session. If the plugin isn't installed or isn't on the approved allowlist, a warning line naming the problem appears below that notice.
265255 
266 ```text theme={null}
267 what's in my working directory?
268 ```
256> [!TIP]
257>
258> You can pass several plugins to `--channels`, space-separated.
269259 
270 The message arrives in your Claude Code session. The terminal shows it as an inbound channel line like `← fakechat · web: what's in my working directory?`, while the model receives it as a `<channel source="plugin:fakechat:fakechat">` event, using the plugin's scoped server name. Claude reads it, does the work, and calls fakechat's `reply` tool. If Claude Code asks for permission for the first reply, approve it. The answer shows up in the chat UI.
271 </Step>
272</Steps>
260**3. Push a message in**
261 
262Open the fakechat UI at [http://localhost:8787](http://localhost:8787) and type a message:
263 
264```text theme={null}
265what's in my working directory?
266```
267 
268The message arrives in your Claude Code session. The terminal shows it as an inbound channel line like `← fakechat · web: what's in my working directory?`, while the model receives it as a `<channel source="plugin:fakechat:fakechat">` event, using the plugin's scoped server name. Claude reads it, does the work, and calls fakechat's `reply` tool. If Claude Code asks for permission for the first reply, approve it. The answer shows up in the chat UI.
273269 
274270If Claude hits a permission prompt while you're away from the terminal, the session pauses until you respond. Channel servers that declare the [permission relay capability](/docs/en/channels-reference#relay-permission-prompts) can forward these prompts to you so you can approve or deny remotely. For unattended use, [`--dangerously-skip-permissions`](/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode) bypasses most prompts, but only use it in environments you trust. Even then, the [actions no mode auto-approves](/docs/en/permission-modes#actions-no-mode-auto-approves) still apply.
275271 
Feedback