push کردنِ رویدادها به یک نشستِ در حالِ اجرا با channelها
یک channel یک سرورِ MCP است که رویدادها را به نشستِ در حالِ اجرای Claude Codeات push میکند، تا Claude بتواند به چیزهایی که وقتی پشتِ ترمینال نیستی اتفاق میافتند واکنش نشان دهد. channelها میتوانند دوطرفه باشند: Claude رویداد را میخواند و از همان channel پاسخ میدهد، مثلِ یک پلِ گفتگو. رویدادها فقط وقتی نشست باز است میرسند، پس برای یک راهاندازیِ همیشهروشن، Claude را در یک پراسسِ پسزمینه یا ترمینالِ پایدار اجرا میکنی.
برخلافِ یکپارچهسازیهایی که یک نشستِ ابریِ تازه میسازند یا منتظرِ poll شدن میمانند، رویداد در همان نشستی میرسد که از قبل باز داری: مقایسهی channelها را ببین.
یک channel را بهعنوانِ یک plugin نصب میکنی و با اعتبارنامههای خودت پیکربندیاش میکنی. Telegram، Discord و iMessage در research preview گنجانده شدهاند.
وقتی Claude از طریقِ یک channel پاسخ میدهد، پیامِ ورودی را در ترمینالت میبینی اما متنِ پاسخ را نه. ترمینال فراخوانیِ ابزار و یک تأیید (مثلِ “sent”) را نشان میدهد، و پاسخِ واقعی روی پلتفرمِ دیگر ظاهر میشود.
این صفحه این موارد را پوشش میدهد:
- channelهای پشتیبانیشده: راهاندازیِ Telegram، Discord و iMessage
- نصب و اجرای یک channel با fakechat، یک دموی localhost
- چه کسی میتواند پیام push کند: allowlistهای فرستنده و نحوهی pair کردن
- فعالسازیِ channelها برای سازمانت اگر یک سازمانِ Team، Enterprise یا Console را مدیریت میکنی
- مقایسهی channelها با نشستهای وب، Slack، MCP و Remote Control
برای ساختنِ channelِ خودت، مرجعِ Channels را ببین.
channelهای پشتیبانیشده
Section titled “channelهای پشتیبانیشده”هر channelِ پشتیبانیشده یک plugin است که به Bun نیاز دارد. برای یک دموی عملیِ جریانِ plugin پیش از اتصال به یک پلتفرمِ واقعی، شروعِ سریعِ fakechat را امتحان کن.
سورسِ کاملِ pluginِ Telegram را ببین.
یک ربات Telegram بساز
BotFather را در Telegram باز کن و /newbot بفرست. یک نامِ نمایشی و یک نامِ کاربریِ یکتا که به bot ختم میشود به آن بده. توکنی را که BotFather برمیگرداند کپی کن.
plugin را نصب کن
در Claude Code، این را اجرا کن:
/plugin install telegram@claude-plugins-officialاگر Claude Code گزارش داد که plugin در هیچ marketplaceای پیدا نشد، marketplaceات یا وجود ندارد یا قدیمی است. برای تازهسازیاش /plugin marketplace update claude-plugins-official را اجرا کن، یا اگر قبلاً اضافهاش نکردهای /plugin marketplace add anthropics/claude-plugins-official را اجرا کن. سپس نصب را دوباره امتحان کن.
پس از نصب، /reload-plugins را اجرا کن تا فرمانِ configureِ plugin فعال شود.
توکنت را پیکربندی کن
فرمانِ configure را با توکنِ BotFather اجرا کن:
/telegram:configure <token>این آن را در ~/.claude/channels/telegram/.env ذخیره میکند. میتوانی پیش از اجرای Claude Code، TELEGRAM_BOT_TOKEN را هم در محیطِ shellات تنظیم کنی.
با channelهای فعالشده دوباره راه بینداز
از Claude Code خارج شو و با پرچمِ channel دوباره راه بینداز. این pluginِ Telegram را شروع میکند، که شروع به poll کردنِ پیامها از رباتت میکند:
claude --channels plugin:telegram@claude-plugins-officialحسابت را pair کن
Telegram را باز کن و هر پیامی به رباتت بفرست. ربات با یک کدِ pairing پاسخ میدهد.
برگرد به Claude Code و این را اجرا کن:
/telegram:access pair <code>سپس دسترسی را قفل کن تا فقط حسابِ خودت بتواند پیام بفرستد:
/telegram:access policy allowlistسورسِ کاملِ pluginِ Discord را ببین.
یک ربات Discord بساز
به Discord Developer Portal برو، روی New Application کلیک کن و نامش بگذار. در بخشِ Bot، یک نامِ کاربری بساز، سپس روی Reset Token کلیک کن و توکن را کپی کن.
Message Content Intent را فعال کن
در تنظیماتِ رباتت، به Privileged Gateway Intents اسکرول کن و Message Content Intent را فعال کن.
ربات را به سرورت دعوت کن
به OAuth2 > URL Generator برو. scopeِ bot را انتخاب کن و این دسترسیها را فعال کن:
- View Channels
- Send Messages
- Send Messages in Threads
- Read Message History
- Attach Files
- Add Reactions
URLِ تولیدشده را باز کن تا ربات را به سرورت اضافه کنی.
plugin را نصب کن
در Claude Code، این را اجرا کن:
/plugin install discord@claude-plugins-officialاگر Claude Code گزارش داد که plugin در هیچ marketplaceای پیدا نشد، marketplaceات یا وجود ندارد یا قدیمی است. برای تازهسازیاش /plugin marketplace update claude-plugins-official را اجرا کن، یا اگر قبلاً اضافهاش نکردهای /plugin marketplace add anthropics/claude-plugins-official را اجرا کن. سپس نصب را دوباره امتحان کن.
پس از نصب، /reload-plugins را اجرا کن تا فرمانِ configureِ plugin فعال شود.
توکنت را پیکربندی کن
فرمانِ configure را با توکنِ رباتی که کپی کردی اجرا کن:
/discord:configure <token>این آن را در ~/.claude/channels/discord/.env ذخیره میکند. میتوانی پیش از اجرای Claude Code، DISCORD_BOT_TOKEN را هم در محیطِ shellات تنظیم کنی.
با channelهای فعالشده دوباره راه بینداز
از Claude Code خارج شو و با پرچمِ channel دوباره راه بینداز. این pluginِ Discord را وصل میکند تا رباتت بتواند پیام دریافت و به آنها پاسخ دهد:
claude --channels plugin:discord@claude-plugins-officialحسابت را pair کن
در Discord به رباتت DM بده. ربات با یک کدِ pairing پاسخ میدهد.
برگرد به Claude Code و این را اجرا کن:
/discord:access pair <code>سپس دسترسی را قفل کن تا فقط حسابِ خودت بتواند پیام بفرستد:
/discord:access policy allowlistسورسِ کاملِ pluginِ iMessage را ببین.
channelِ iMessage مستقیماً پایگاهدادهی Messagesات را میخواند و پاسخها را از طریقِ AppleScript میفرستد. به macOS نیاز دارد و به هیچ توکنِ رباتی یا سرویسِ خارجی نیاز ندارد.
Full Disk Access بده
پایگاهدادهی Messages در ~/Library/Messages/chat.db توسطِ macOS محافظت میشود. اولین باری که سرور آن را میخواند، macOS برای دسترسی پرامپت میدهد: روی Allow کلیک کن. پرامپت نامِ هر اپی را که Bun را راه انداخته میبرد، مثلِ Terminal، iTerm یا IDEات.
اگر پرامپت ظاهر نشد یا روی Don’t Allow کلیک کردی، دسترسی را بهصورتِ دستی زیرِ System Settings > Privacy & Security > Full Disk Access بده و ترمینالت را اضافه کن. بدونِ این، سرور بلافاصله با authorization denied خارج میشود.
plugin را نصب کن
در Claude Code، این را اجرا کن:
/plugin install imessage@claude-plugins-officialاگر Claude Code گزارش داد که plugin در هیچ marketplaceای پیدا نشد، marketplaceات یا وجود ندارد یا قدیمی است. برای تازهسازیاش /plugin marketplace update claude-plugins-official را اجرا کن، یا اگر قبلاً اضافهاش نکردهای /plugin marketplace add anthropics/claude-plugins-official را اجرا کن. سپس نصب را دوباره امتحان کن.
با channelهای فعالشده دوباره راه بینداز
از Claude Code خارج شو و با پرچمِ channel دوباره راه بینداز:
claude --channels plugin:imessage@claude-plugins-officialبه خودت پیام بده
Messages را روی هر دستگاهی که با Apple IDات وارد شده باز کن و به خودت یک پیام بفرست. بلافاصله به Claude میرسد: self-chat بدونِ هیچ راهاندازیای از کنترلِ دسترسی عبور میکند.
به فرستندههای دیگر اجازه بده
بهصورتِ پیشفرض، فقط پیامهای خودت عبور میکنند. برای اینکه به مخاطبِ دیگری اجازه دهی به Claude برسد، handleاش را اضافه کن:
/imessage:access allow +15551234567handleها شمارهتلفنها در قالبِ +country یا ایمیلهای Apple ID مثلِ user@example.com هستند.
همچنین میتوانی برای سیستمهایی که هنوز plugin ندارند channelِ خودت را بسازی.
شروعِ سریع
Section titled “شروعِ سریع”Fakechat یک channelِ دموی رسماً پشتیبانیشده است که یک رابطِ گفتگو را روی localhost اجرا میکند، بدونِ چیزی برای احراز هویت و بدونِ سرویسِ خارجی برای پیکربندی.
وقتی fakechat را نصب و فعال کردی، میتوانی در مرورگر تایپ کنی و پیام در نشستِ Claude Codeات میرسد. Claude پاسخ میدهد، و پاسخ دوباره در مرورگر نمایان میشود. بعد از اینکه رابطِ fakechat را آزمودی، Telegram، Discord یا iMessage را امتحان کن.
برای امتحانِ دموی fakechat، به اینها نیاز داری:
- Claude Code که با یک حسابِ claude.ai یا یک کلیدِ Claude Console API نصب و احراز هویت شده
- Bun که نصب شده. pluginهای channelِ ازپیشساخته اسکریپتهای Bun هستند. با
bun --versionبررسی کن؛ اگر شکست خورد، Bun را نصب کن. - سازمانِ Team، Enterprise یا Consoleِ مدیریتشده: ادمینت باید channelها را فعال کند در تنظیماتِ مدیریتشده
pluginِ channelِ fakechat را نصب کن
یک نشستِ Claude Code شروع کن و فرمانِ نصب را اجرا کن:
/plugin install fakechat@claude-plugins-officialاگر Claude Code گزارش داد که plugin در هیچ marketplaceای پیدا نشد، marketplaceات یا وجود ندارد یا قدیمی است. برای تازهسازیاش /plugin marketplace update claude-plugins-official را اجرا کن، یا اگر قبلاً اضافهاش نکردهای /plugin marketplace add anthropics/claude-plugins-official را اجرا کن. سپس نصب را دوباره امتحان کن.
با channelِ فعالشده دوباره راه بینداز
از Claude Code خارج شو، سپس با --channels دوباره راه بینداز و pluginِ fakechatی را که نصب کردی پاس بده:
claude --channels plugin:fakechat@claude-plugins-officialسرورِ fakechat بهصورتِ خودکار شروع میشود.
یک پیام push کن
رابطِ fakechat را در http://localhost:8787 باز کن و یک پیام تایپ کن:
hey, what's in my working directory?پیام بهعنوانِ یک رویدادِ <channel source="fakechat"> در نشستِ Claude Codeات میرسد. Claude آن را میخواند، کار را انجام میدهد، و ابزارِ replyِ fakechat را فراخوانی میکند. پاسخ در رابطِ گفتگو نمایان میشود.
اگر Claude وقتی پشتِ ترمینال نیستی به یک پرامپتِ دسترسی برخورد، نشست متوقف میماند تا پاسخ بدهی. سرورهای channel که قابلیتِ relayِ دسترسی را اعلام میکنند میتوانند این پرامپتها را به تو فوروارد کنند تا بتوانی از راه دور تأیید یا رد کنی. برای استفادهی بدونِ نظارت، --dangerously-skip-permissions پرامپتها را جز قواعدِ askِ صریح دور میزند، اما فقط در محیطهایی که به آنها اعتماد داری استفادهاش کن.
وقتی channelها را در حالتِ غیرتعاملی با -p اجرا میکنی، ابزارهایی که به ورودیِ ترمینال نیاز دارند، مثلِ سؤالهای چندگزینهای و تأییدِ plan mode، غیرفعال میشوند تا نشست هرگز در انتظارِ ورودی گیر نکند.
هر pluginِ channelِ تأییدشده یک allowlistِ فرستنده نگه میدارد: فقط IDهایی که اضافه کردهای میتوانند پیام push کنند، و بقیه بیسروصدا دور انداخته میشوند.
Telegram و Discord فهرست را با pairing مقداردهیِ اولیه میکنند:
- رباتت را در Telegram یا Discord پیدا کن و هر پیامی به آن بفرست
- ربات با یک کدِ pairing پاسخ میدهد
- در نشستِ Claude Codeات، وقتی پرامپت داده شد کد را تأیید کن
- IDِ فرستندهات به allowlist اضافه میشود
iMessage متفاوت کار میکند: پیامدادن به خودت بهصورتِ خودکار از دروازه عبور میکند، و مخاطبهای دیگر را با handle و با /imessage:access allow اضافه میکنی.
علاوه بر آن، تو با --channels کنترل میکنی کدام سرورها در هر نشست فعالاند، و سازمانت با channelsEnabled روی پلنهای Team و Enterpriseِ claude.ai و روی سازمانهای Console که تنظیماتِ مدیریتشده مستقر میکنند، دسترسپذیری را کنترل میکند.
بودن در .mcp.json برای push کردنِ پیام کافی نیست: یک سرور باید در --channels هم نام برده شود.
allowlist همچنین relayِ دسترسی را دروازهبانی میکند اگر channel آن را اعلام کند. هر کس که بتواند از طریقِ channel پاسخ دهد میتواند استفاده از ابزار در نشستت را تأیید یا رد کند، پس فقط فرستندههای allowlistی را قرار بده که به آنها برای آن اختیار اعتماد داری.
کنترلهای سازمانی
Section titled “کنترلهای سازمانی”ادمینها دسترسپذیری را از طریقِ دو تنظیماتِ مدیریتشده کنترل میکنند که کاربران نمیتوانند override کنند. پیشفرض به این بستگی دارد که چطور احراز هویت میکنی:
- Team و Enterpriseِ claude.ai: channelها مسدودند تا یک ادمین آنها را فعال کند.
- Anthropic Console با احراز هویتِ کلیدِ API: channelها بهصورتِ پیشفرض مجازند. فقط وقتی به این تنظیم نیاز داری که سازمانت تنظیماتِ مدیریتشده مستقر کند.
در همهی حالتها، هیچ channelای اجرا نمیشود تا یک کاربر آن را برای نشست با --channels فعال کند.
| تنظیم | هدف | وقتی پیکربندی نشده |
|---|---|---|
channelsEnabled | کلیدِ اصلی. برای اینکه هر channelای پیام تحویل دهد باید true باشد. از طریقِ کلیدِ Admin consoleِ claude.ai یا مستقیماً در تنظیماتِ مدیریتشده تنظیم میشود. وقتی خاموش است همهی channelها از جمله پرچمِ development را مسدود میکند. | Team و Enterpriseِ claude.ai: channelها مسدودند. Console: channelها مجازند مگر اینکه سازمانت تنظیماتِ مدیریتشده مستقر کند، که در آن صورت channelها مسدودند تا این کلید تنظیم شود |
allowedChannelPlugins | اینکه کدام pluginها میتوانند پس از فعالشدنِ channelها ثبتنام کنند. وقتی تنظیم شود فهرستِ نگهداریشدهی Anthropic را جایگزین میکند. فقط وقتی channelsEnabled برابرِ true باشد اعمال میشود. | فهرستِ پیشفرضِ Anthropic اعمال میشود |
کاربرانِ Pro و Max بدونِ سازمان کاملاً از این بررسیها رد میشوند: channelها در دسترساند و کاربران هر نشست با --channels آنها را فعال میکنند.
فعالسازیِ channelها برای سازمانت
Section titled “فعالسازیِ channelها برای سازمانت”ادمینها میتوانند channelها را از claude.ai → Admin settings → Claude Code → Channels فعال کنند، یا با تنظیمِ channelsEnabled به true در تنظیماتِ مدیریتشده.
وقتی فعال شد، کاربرانِ سازمانت میتوانند از --channels استفاده کنند تا سرورهای channel را در نشستهای جداگانه فعال کنند. اگر تنظیم غیرفعال یا تنظیمنشده باشد، سرورِ MCP همچنان متصل میشود و ابزارهایش کار میکنند، اما پیامهای channel نمیرسند. یک هشدارِ راهاندازی به کاربر میگوید از یک ادمین بخواهد تنظیم را فعال کند.
محدودکردنِ اینکه کدام pluginهای channel میتوانند اجرا شوند
Section titled “محدودکردنِ اینکه کدام pluginهای channel میتوانند اجرا شوند”بهصورتِ پیشفرض، هر pluginی که روی allowlistِ نگهداریشدهی Anthropic باشد میتواند بهعنوانِ یک channel ثبتنام کند. ادمینها روی پلنهای Team و Enterprise میتوانند آن allowlist را با مالِ خودشان جایگزین کنند با تنظیمِ allowedChannelPlugins در تنظیماتِ مدیریتشده. از این استفاده کن تا محدود کنی کدام pluginهای رسمی مجازند، channelها را از marketplaceِ داخلیِ خودت تأیید کنی، یا هر دو. هر ورودی یک plugin و marketplaceای که از آن میآید را نام میبرد:
{ "channelsEnabled": true, "allowedChannelPlugins": [ { "marketplace": "claude-plugins-official", "plugin": "telegram" }, { "marketplace": "claude-plugins-official", "plugin": "discord" }, { "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" } ]}وقتی allowedChannelPlugins تنظیم شود، allowlistِ Anthropic را کاملاً جایگزین میکند: فقط pluginهای فهرستشده میتوانند ثبتنام کنند. آن را تنظیمنشده بگذار تا به allowlistِ پیشفرضِ Anthropic برگردد. یک آرایهی خالی همهی pluginهای channel را از allowlist مسدود میکند، اما --dangerously-load-development-channels همچنان میتواند برای آزمایشِ محلی آن را دور بزند. برای مسدودکردنِ کاملِ channelها از جمله پرچمِ development، بهجایش channelsEnabled را تنظیمنشده بگذار.
این تنظیم به channelsEnabled: true نیاز دارد. اگر کاربری pluginی به --channels پاس بدهد که روی فهرستت نیست، Claude Code بهصورتِ عادی شروع میشود اما channel ثبتنام نمیشود، و اطلاعیهی راهاندازی توضیح میدهد که plugin روی فهرستِ تأییدشدهی سازمان نیست.
research preview
Section titled “research preview”channelها یک قابلیتِ research preview هستند. دسترسپذیری بهتدریج در حالِ گسترش است، و نحوِ پرچمِ --channels و قراردادِ پروتکل ممکن است بر اساسِ بازخورد تغییر کند.
در طیِ preview، --channels فقط pluginها را از یک allowlistِ نگهداریشدهی Anthropic میپذیرد، یا از allowlistِ سازمانت اگر یک ادمین allowedChannelPlugins را تنظیم کرده باشد. pluginهای channel در claude-plugins-official مجموعهی تأییدشدهی پیشفرضاند. اگر چیزی پاس بدهی که روی allowlistِ مؤثر نیست، Claude Code بهصورتِ عادی شروع میشود اما channel ثبتنام نمیشود، و اطلاعیهی راهاندازی دلیلش را میگوید.
برای آزمایشِ channelی که میسازی، از --dangerously-load-development-channels استفاده کن. برای اطلاعات دربارهی آزمایشِ channelهای سفارشی که میسازی Test during the research preview را ببین.
مشکلات یا بازخورد را در مخزنِ GitHubِ Claude Code گزارش کن.
مقایسهی channelها
Section titled “مقایسهی channelها”چند قابلیتِ Claude Code به سیستمهای بیرونِ ترمینال متصل میشوند، که هر کدام برای نوعِ متفاوتی از کار مناسباند:
| قابلیت | چه کار میکند | خوب برای |
|---|---|---|
| Claude Code on the web | کارها را در یک sandboxِ ابریِ تازه، که از GitHub کلون شده، اجرا میکند | واگذاریِ کارِ async و خوداتکا که بعداً بررسیاش میکنی |
| Claude in Slack | از یک منشنِ @Claude در یک channel یا thread یک نشستِ وب میسازد | شروعِ کارها مستقیماً از کانتکستِ گفتگوی تیمی |
| سرورِ MCP استاندارد | Claude در طیِ یک کار از آن کوئری میگیرد؛ چیزی به نشست push نمیشود | دادنِ دسترسیِ on-demand به Claude برای خواندن یا کوئریگرفتن از یک سیستم |
| Remote Control | تو نشستِ محلیات را از claude.ai یا اپِ موبایلِ Claude هدایت میکنی | هدایتِ یک نشستِ در حالِ انجام وقتی پشتِ میزت نیستی |
channelها شکافِ آن فهرست را پر میکنند با push کردنِ رویدادها از منابعِ غیرِ Claude به نشستِ محلیِ ازقبلدرحالِاجرایت.
- پلِ گفتگو: از Claude چیزی را از طریقِ تلفنت با Telegram، Discord یا iMessage بپرس، و پاسخ در همان گفتگو برمیگردد در حالی که کار روی دستگاهت روی فایلهای واقعیات اجرا میشود.
- گیرندهی Webhook: یک webhook از CI، error trackerات، یک خطلولهی deploy، یا سرویسِ خارجیِ دیگر جایی میرسد که Claude از قبل فایلهایت را باز دارد و یادش هست داشتی چه چیزی را debug میکردی.
گامهای بعدی
Section titled “گامهای بعدی”وقتی یک channel در حالِ اجرا داری، این قابلیتهای مرتبط را کاوش کن:
- channelِ خودت را بساز برای سیستمهایی که هنوز plugin ندارند
- Remote Control برای هدایتِ یک نشستِ محلی از تلفنت بهجای فوروارد کردنِ رویدادها به آن
- Scheduled tasks برای poll کردن روی یک تایمر بهجای واکنش به رویدادهای pushشده