Claude Code Channels — set up Telegram & Discord messaging bots for Claude Code with per-channel access control.
SaferSkills independently audited claude-code-channels (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Claude Code Channels pushes messages from external platforms (Telegram, Discord) into a running Claude Code session via MCP server plugins.
Ask which platform(s) the user wants, then follow the relevant reference:
Both can run simultaneously:
claude --channels plugin:telegram@claude-plugins-official,plugin:discord@claude-plugins-officialRegardless of platform, setup follows 6 steps:
/plugin install <platform>@claude-plugins-official/<platform>:configure <token>claude --channels plugin:<platform>@claude-plugins-official/<platform>:access pair <code>/<platform>:access policy allowlistKnown race condition — server may fail on cold start but reconnect fine.
Fix: Run /mcp, navigate to the failed server, select Reconnect.
Persistent failures — verify the bot token:
# Telegram
TOKEN=$(grep TELEGRAM_BOT_TOKEN ~/.claude/channels/telegram/.env | cut -d= -f2)
curl -s "https://api.telegram.org/bot$TOKEN/getMe"
# Discord
TOKEN=$(grep DISCORD_BOT_TOKEN ~/.claude/channels/discord/.env | cut -d= -f2)
curl -s -H "Authorization: Bot $TOKEN" https://discord.com/api/v10/users/@meIf unauthorized/401, regenerate the token and update ~/.claude/channels/<platform>/.env.
Add the official marketplace first:
/plugin marketplace add anthropics/claude-plugins-official--channels flag/mcp must show the server as "connected"Pre-install manually:
cd ~/.claude/plugins/cache/claude-plugins-official/<platform>/<version>
bun install --no-summary# Start
tmux new-session -d -s claude-<platform> \
'claude --dangerously-skip-permissions --channels plugin:<platform>@claude-plugins-official'
# Attach / Detach
tmux attach -t claude-<platform> # Ctrl+b then d to detach
# After startup, if MCP failed: /mcp → select server → ReconnectBoth platforms share the same model. Replace <platform> with telegram or discord.
| Command | Effect |
|---|---|
/<platform>:access | Show current state |
/<platform>:access pair <code> | Approve pairing |
/<platform>:access deny <code> | Reject pairing |
/<platform>:access allow <id> | Add user by ID |
/<platform>:access remove <id> | Remove user |
/<platform>:access policy <mode> | pairing / allowlist / disabled |
/<platform>:access group add <id> | Enable group/channel |
/<platform>:access group add <id> --no-mention | Enable without requiring @mention |
/<platform>:access group rm <id> | Disable group/channel |
/<platform>:access set <key> <value> | Configure delivery settings |
~/.claude/channels/<platform>/
├── .env # Bot token (mode 0o600)
├── access.json # Policy, allowlist, groups, pending
├── approved/ # Approved user ID → chat ID mapping
└── inbox/ # Downloaded attachments~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.