> Push events into a running Claude Code session with channels.
From claude-code-expertnpx claudepluginhub markus41/claude --plugin claude-code-expertThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Push events into a running Claude Code session with channels. Forward CI results, chat messages, monitoring alerts, and webhook events so Claude can react while you're away. Requires Claude Code v2.1.80+. Research preview — requires claude.ai login.
A 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. For always-on setups, run Claude in a background process or persistent terminal.
| Feature | What it does | Good for |
|---|---|---|
| Claude Code on the web | Runs tasks in a fresh cloud sandbox, cloned from GitHub | Delegating self-contained async work |
| Claude in Slack | Spawns a web session from an @Claude mention | Starting tasks from team conversation |
| Standard MCP server | Claude queries it during a task; nothing is pushed | On-demand access to read or query |
| Remote Control | Drive your local session from claude.ai or mobile | Steering an in-progress session remotely |
| Channels | Push events from external sources into running session | CI alerts, chat bridges, webhooks, monitoring |
Channels fill the gap by pushing events from non-Claude sources into your already-running local session.
/newbot, copy the token/plugin install telegram@claude-plugins-official/telegram:configure <token> (saves to ~/.claude/channels/telegram/.env)claude --channels plugin:telegram@claude-plugins-official/telegram:access pair <code>/telegram:access policy allowlistbot scope → View Channels, Send Messages, Send Messages in Threads, Read Message History, Attach Files, Add Reactions/plugin install discord@claude-plugins-official/discord:configure <token>claude --channels plugin:discord@claude-plugins-official/discord:access pair <code>/discord:access policy allowlistReads Messages database directly, sends replies through AppleScript. No bot token needed.
/plugin install imessage@claude-plugins-officialclaude --channels plugin:imessage@claude-plugins-official/imessage:access allow +15551234567 (phone or Apple ID email)Localhost demo channel — no authentication, no external services.
/plugin install fakechat@claude-plugins-officialclaude --channels plugin:fakechat@claude-plugins-official<channel source="fakechat"> tagsChannels are especially powerful for CI/CD and infrastructure workflows:
Push build failures, test results, and deployment status directly into your session:
Forward monitoring events so Claude can react:
Use the permission relay for remote deployment approvals:
GitHub Actions → webhook POST to localhost:8788 → Channel Server → Claude Code Session
↓
Claude reads build log,
identifies failure,
proposes fix
Every channel maintains a sender allowlist. Only approved IDs can push messages — everyone else is silently dropped.
Telegram/Discord pairing flow:
/telegram:access pair <code> or /discord:access pair <code>/telegram:access policy allowlistiMessage: Self-chat bypasses automatically. Add others with /imessage:access allow.
.mcp.json isn't enough — server must also be named in --channelsmessage.from.id, not message.chat.id (prevents group chat injection)On Team and Enterprise plans, channels are off by default.
| Setting | Purpose | When not configured |
|---|---|---|
channelsEnabled | Master switch. Must be true for any channel to deliver messages. | Channels blocked |
allowedChannelPlugins | Which plugins can register. Replaces Anthropic-maintained list when set. | Anthropic default list applies |
Admin console: claude.ai → Admin settings → Claude Code → Channels or set channelsEnabled: true in managed settings.
{
"channelsEnabled": true,
"allowedChannelPlugins": [
{ "marketplace": "claude-plugins-official", "plugin": "telegram" },
{ "marketplace": "claude-plugins-official", "plugin": "discord" },
{ "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }
]
}
When set, replaces the Anthropic allowlist entirely. Leave unset for default. Empty array blocks all plugins from allowlist (but --dangerously-load-development-channels still works).
# Single channel
claude --channels plugin:telegram@claude-plugins-official
# Multiple channels (space-separated)
claude --channels plugin:telegram@claude-plugins-official plugin:fakechat@claude-plugins-official
# Development channel (custom/local)
claude --dangerously-load-development-channels server:my-webhook
--channels flag syntax may change--dangerously-load-development-channels