Invia eventi in una sessione in esecuzione con i canali
Utilizza i canali per inviare messaggi, avvisi e webhook nella tua sessione Claude Code da un server MCP. Inoltra i risultati CI, i messaggi di chat e gli eventi di monitoraggio in modo che Claude possa reagire mentre sei assente.
I canali sono in anteprima di ricerca e richiedono Claude Code v2.1.80 o versione successiva. Richiedono l'autenticazione Anthropic tramite claude.ai o una chiave API Console, e non sono disponibili su Amazon Bedrock, Google Vertex AI o Microsoft Foundry. Le organizzazioni Team ed Enterprise devono abilitarli esplicitamente.
Un canale è un server MCP che invia eventi nella tua sessione Claude Code in esecuzione, in modo che Claude possa reagire alle cose che accadono mentre non sei al terminale. I canali possono essere bidirezionali: Claude legge l'evento e risponde attraverso lo stesso canale, come un ponte di chat. Gli eventi arrivano solo mentre la sessione è aperta, quindi per una configurazione sempre attiva esegui Claude in un processo in background o in un terminale persistente.
A differenza delle integrazioni che avviano una nuova sessione cloud o attendono di essere interrogate, l'evento arriva nella sessione che hai già aperto: vedi come si confrontano i canali.
Installi un canale come plugin e lo configuri con le tue credenziali. Telegram, Discord e iMessage sono inclusi nell'anteprima di ricerca.
Quando Claude risponde attraverso un canale, vedi il messaggio in arrivo nel tuo terminale ma non il testo della risposta. Il terminale mostra la chiamata dello strumento e una conferma (come "inviato"), e la risposta effettiva appare sull'altra piattaforma.
Questa pagina copre:
- Canali supportati: configurazione di Telegram, Discord e iMessage
- Installa ed esegui un canale con fakechat, una demo localhost
- Chi può inviare messaggi: allowlist dei mittenti e come si accoppia
- Abilita i canali per la tua organizzazione se gestisci un'organizzazione Team, Enterprise o Console
- Come si confrontano i canali con sessioni web, Slack, MCP e Remote Control
Per creare il tuo canale, vedi il riferimento Canali.
Canali supportati
Ogni canale supportato è un plugin che richiede Bun. Per una demo pratica del flusso del plugin prima di connettere una piattaforma reale, prova la guida rapida fakechat.
Visualizza il codice sorgente del plugin Telegram completo.
Crea un bot Telegram
Apri BotFather in Telegram e invia /newbot. Dagli un nome visualizzato e un nome utente univoco che termina con bot. Copia il token che BotFather restituisce.
Installa il plugin
In Claude Code, esegui:
/plugin install telegram@claude-plugins-official
Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui /plugin marketplace update claude-plugins-official per aggiornarlo, oppure /plugin marketplace add anthropics/claude-plugins-official se non l'hai ancora aggiunto. Quindi riprova l'installazione.
Dopo l'installazione, esegui /reload-plugins per attivare il comando di configurazione del plugin.
Configura il tuo token
Esegui il comando di configurazione con il token da BotFather:
/telegram:configure <token>
Questo lo salva in ~/.claude/channels/telegram/.env. Puoi anche impostare TELEGRAM_BOT_TOKEN nel tuo ambiente shell prima di avviare Claude Code.
Riavvia con i canali abilitati
Esci da Claude Code e riavvia con il flag del canale. Questo avvia il plugin Telegram, che inizia a eseguire il polling dei messaggi dal tuo bot:
claude --channels plugin:telegram@claude-plugins-official
Accoppia il tuo account
Apri Telegram e invia qualsiasi messaggio al tuo bot. Il bot risponde con un codice di accoppiamento.
Se il tuo bot non risponde, assicurati che Claude Code sia in esecuzione con --channels dal passaggio precedente. Il bot può rispondere solo mentre il canale è attivo.
Torna in Claude Code ed esegui:
/telegram:access pair <code>
Quindi blocca l'accesso in modo che solo il tuo account possa inviare messaggi:
/telegram:access policy allowlist
Visualizza il codice sorgente del plugin Discord completo.
Crea un bot Discord
Vai al Discord Developer Portal, fai clic su New Application e assegnagli un nome. Nella sezione Bot, crea un nome utente, quindi fai clic su Reset Token e copia il token.
Abilita Message Content Intent
Nelle impostazioni del tuo bot, scorri fino a Privileged Gateway Intents e abilita Message Content Intent.
Invita il bot al tuo server
Vai a OAuth2 > URL Generator. Seleziona l'ambito bot e abilita questi permessi:
- View Channels
- Send Messages
- Send Messages in Threads
- Read Message History
- Attach Files
- Add Reactions
Apri l'URL generato per aggiungere il bot al tuo server.
Installa il plugin
In Claude Code, esegui:
/plugin install discord@claude-plugins-official
Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui /plugin marketplace update claude-plugins-official per aggiornarlo, oppure /plugin marketplace add anthropics/claude-plugins-official se non l'hai ancora aggiunto. Quindi riprova l'installazione.
Dopo l'installazione, esegui /reload-plugins per attivare il comando di configurazione del plugin.
Configura il tuo token
Esegui il comando di configurazione con il token del bot che hai copiato:
/discord:configure <token>
Questo lo salva in ~/.claude/channels/discord/.env. Puoi anche impostare DISCORD_BOT_TOKEN nel tuo ambiente shell prima di avviare Claude Code.
Riavvia con i canali abilitati
Esci da Claude Code e riavvia con il flag del canale. Questo connette il plugin Discord in modo che il tuo bot possa ricevere e rispondere ai messaggi:
claude --channels plugin:discord@claude-plugins-official
Accoppia il tuo account
Invia un messaggio privato al tuo bot su Discord. Il bot risponde con un codice di accoppiamento.
Se il tuo bot non risponde, assicurati che Claude Code sia in esecuzione con --channels dal passaggio precedente. Il bot può rispondere solo mentre il canale è attivo.
Torna in Claude Code ed esegui:
/discord:access pair <code>
Quindi blocca l'accesso in modo che solo il tuo account possa inviare messaggi:
/discord:access policy allowlist
Visualizza il codice sorgente del plugin iMessage completo.
Il canale iMessage legge il tuo database Messaggi direttamente e invia risposte tramite AppleScript. Richiede macOS e non ha bisogno di token bot o servizio esterno.
Concedi accesso completo al disco
Il database Messaggi in ~/Library/Messages/chat.db è protetto da macOS. La prima volta che il server lo legge, macOS richiede l'accesso: fai clic su Allow. Il prompt nomina qualsiasi app abbia avviato Bun, come Terminal, iTerm o il tuo IDE.
Se il prompt non appare o hai fatto clic su Don't Allow, concedi l'accesso manualmente in System Settings > Privacy & Security > Full Disk Access e aggiungi il tuo terminale. Senza questo, il server esce immediatamente con authorization denied.
Installa il plugin
In Claude Code, esegui:
/plugin install imessage@claude-plugins-official
Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui /plugin marketplace update claude-plugins-official per aggiornarlo, oppure /plugin marketplace add anthropics/claude-plugins-official se non l'hai ancora aggiunto. Quindi riprova l'installazione.
Riavvia con i canali abilitati
Esci da Claude Code e riavvia con il flag del canale:
claude --channels plugin:imessage@claude-plugins-official
Invia un messaggio a te stesso
Apri Messaggi su qualsiasi dispositivo connesso al tuo Apple ID e invia un messaggio a te stesso. Raggiunge Claude immediatamente: l'auto-chat bypassa il controllo di accesso senza configurazione.
La prima risposta che Claude invia attiva un prompt di automazione macOS che chiede se il tuo terminale può controllare Messaggi. Fai clic su OK.
Consenti altri mittenti
Per impostazione predefinita, solo i tuoi messaggi passano. Per consentire a un altro contatto di raggiungere Claude, aggiungi il suo handle:
/imessage:access allow +15551234567
Gli handle sono numeri di telefono nel formato +country o email Apple ID come user@example.com.
Puoi anche creare il tuo canale per sistemi che non hanno ancora un plugin.
Guida rapida
Fakechat è un canale demo ufficialmente supportato che esegue un'interfaccia di chat su localhost, senza nulla da autenticare e nessun servizio esterno da configurare.
Una volta installato e abilitato fakechat, puoi digitare nel browser e il messaggio arriva nella tua sessione Claude Code. Claude risponde e la risposta appare di nuovo nel browser. Dopo aver testato l'interfaccia fakechat, prova Telegram, Discord o iMessage.
Per provare la demo fakechat, avrai bisogno di:
- Claude Code installato e autenticato con un account claude.ai o una chiave API Console
- Bun installato. I plugin di canale pre-costruiti sono script Bun. Controlla con
bun --version; se fallisce, installa Bun. - Organizzazioni Team, Enterprise o Console gestite: l'amministratore della tua organizzazione deve abilitare i canali nelle impostazioni gestite
Installa il plugin del canale fakechat
Avvia una sessione Claude Code ed esegui il comando di installazione:
/plugin install fakechat@claude-plugins-official
Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui /plugin marketplace update claude-plugins-official per aggiornarlo, oppure /plugin marketplace add anthropics/claude-plugins-official se non l'hai ancora aggiunto. Quindi riprova l'installazione.
Riavvia con il canale abilitato
Esci da Claude Code, quindi riavvia con --channels e passa il plugin fakechat che hai installato:
claude --channels plugin:fakechat@claude-plugins-official
Il server fakechat si avvia automaticamente.
Puoi passare più plugin a --channels, separati da spazi.
Invia un messaggio
Apri l'interfaccia fakechat su http://localhost:8787 e digita un messaggio:
hey, what's in my working directory?
Il messaggio arriva nella tua sessione Claude Code come evento <channel source="fakechat">. Claude lo legge, fa il lavoro e chiama lo strumento reply di fakechat. La risposta appare nell'interfaccia di chat.
Se Claude incontra un prompt di permesso mentre sei lontano dal terminale, la sessione si mette in pausa fino a quando non rispondi. I server di canale che dichiarano la capacità di inoltro dei permessi possono inoltrarti questi prompt in modo che tu possa approvare o negare da remoto. Per l'uso incustodito, --dangerously-skip-permissions bypassa i prompt diversi dalle regole di richiesta esplicita, ma usalo solo in ambienti di cui ti fidi.
Quando esegui i canali in modalità non interattiva con -p, gli strumenti che necessitano di input da terminale, come domande a scelta multipla e approvazione della modalità plan, sono disabilitati in modo che la sessione non si blocchi mai in attesa di input.
Sicurezza
Ogni plugin di canale approvato mantiene un allowlist dei mittenti: solo gli ID che hai aggiunto possono inviare messaggi e tutti gli altri vengono silenziosamente scartati.
Telegram e Discord avviano l'elenco mediante accoppiamento:
- Trova il tuo bot in Telegram o Discord e invigli qualsiasi messaggio
- Il bot risponde con un codice di accoppiamento
- Nella tua sessione Claude Code, approva il codice quando richiesto
- Il tuo ID mittente viene aggiunto all'allowlist
iMessage funziona diversamente: inviarti messaggi bypassa automaticamente il gate, e aggiungi altri contatti per handle con /imessage:access allow.
Oltre a ciò, controlli quali server sono abilitati ogni sessione con --channels, e la tua organizzazione controlla la disponibilità con channelsEnabled su piani Team ed Enterprise di claude.ai e su organizzazioni Console che distribuiscono impostazioni gestite.
Essere in .mcp.json non è sufficiente per inviare messaggi: un server deve anche essere nominato in --channels.
L'allowlist controlla anche l'inoltro dei permessi se il canale lo dichiara. Chiunque possa rispondere attraverso il canale può approvare o negare l'uso dello strumento nella tua sessione, quindi allowlist solo i mittenti di cui ti fidi con questa autorità.
Controlli Enterprise
Gli amministratori controllano la disponibilità attraverso due impostazioni gestite che gli utenti non possono ignorare. L'impostazione predefinita dipende da come ti autentichi:
- claude.ai Team ed Enterprise: i canali sono bloccati fino a quando un amministratore non li abilita.
- Anthropic Console con autenticazione tramite chiave API: i canali sono consentiti per impostazione predefinita. Hai bisogno di questa impostazione solo se la tua organizzazione distribuisce impostazioni gestite.
In tutti i casi, nessun canale viene eseguito fino a quando un utente non lo abilita per la sessione con --channels.
| Impostazione | Scopo | Quando non configurato |
|---|---|---|
channelsEnabled |
Interruttore principale. Deve essere true affinché qualsiasi canale consegni messaggi. Impostato tramite l'interruttore della console Admin di claude.ai o direttamente nelle impostazioni gestite. Blocca tutti i canali incluso il flag di sviluppo quando disattivato. |
claude.ai Team ed Enterprise: canali bloccati. Console: canali consentiti a meno che la tua organizzazione non distribuisca impostazioni gestite, nel qual caso i canali sono bloccati fino a quando questa chiave non è impostata |
allowedChannelPlugins |
Quali plugin possono registrarsi una volta abilitati i canali. Sostituisce l'elenco mantenuto da Anthropic quando impostato. Si applica solo quando channelsEnabled è true. |
Si applica l'elenco predefinito di Anthropic |
Gli utenti Pro e Max senza un'organizzazione saltano completamente questi controlli: i canali sono disponibili e gli utenti optano per sessione con --channels.
Abilita i canali per la tua organizzazione
Gli amministratori possono abilitare i canali da claude.ai → Admin settings → Claude Code → Channels, oppure impostando channelsEnabled su true nelle impostazioni gestite.
Una volta abilitati, gli utenti della tua organizzazione possono usare --channels per optare i server di canale in sessioni individuali. Se l'impostazione è disabilitata o non impostata, il server MCP si connette comunque e i suoi strumenti funzionano, ma i messaggi del canale non arriveranno. Un avviso di avvio dice all'utente di far abilitare l'impostazione a un amministratore.
Limita quali plugin di canale possono essere eseguiti
Per impostazione predefinita, qualsiasi plugin nell'elenco di allowlist mantenuto da Anthropic può registrarsi come canale. Gli amministratori su piani Team ed Enterprise possono sostituire quell'allowlist con il loro impostando allowedChannelPlugins nelle impostazioni gestite. Usalo per limitare quali plugin ufficiali sono consentiti, approvare canali dal tuo marketplace interno, o entrambi. Ogni voce nomina un plugin e il marketplace da cui proviene:
{
"channelsEnabled": true,
"allowedChannelPlugins": [
{ "marketplace": "claude-plugins-official", "plugin": "telegram" },
{ "marketplace": "claude-plugins-official", "plugin": "discord" },
{ "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }
]
}
Quando allowedChannelPlugins è impostato, sostituisce completamente l'allowlist di Anthropic: solo i plugin elencati possono registrarsi. Lascialo non impostato per tornare all'allowlist predefinito di Anthropic. Un array vuoto blocca tutti i plugin di canale dall'allowlist, ma --dangerously-load-development-channels può comunque bypassarlo per i test locali. Per bloccare completamente i canali incluso il flag di sviluppo, lascia invece channelsEnabled non impostato.
Questa impostazione richiede channelsEnabled: true. Se un utente passa un plugin a --channels che non è nel tuo elenco, Claude Code si avvia normalmente ma il canale non si registra, e l'avviso di avvio spiega che il plugin non è nell'elenco approvato dell'organizzazione.
Anteprima di ricerca
I canali sono una funzione di anteprima di ricerca. La disponibilità viene implementata gradualmente e la sintassi del flag --channels e il contratto del protocollo possono cambiare in base al feedback.
Durante l'anteprima, --channels accetta solo plugin da un allowlist mantenuto da Anthropic, o dall'allowlist della tua organizzazione se un amministratore ha impostato allowedChannelPlugins. I plugin di canale in claude-plugins-official sono l'insieme approvato predefinito. Se passi qualcosa che non è nell'allowlist effettivo, Claude Code si avvia normalmente ma il canale non si registra, e l'avviso di avvio ti dice perché.
Per testare un canale che stai costruendo, usa --dangerously-load-development-channels. Vedi Test durante l'anteprima di ricerca per informazioni sul test di canali personalizzati che costruisci.
Segnala problemi o feedback nel repository GitHub di Claude Code.
Come si confrontano i canali
Diverse funzioni di Claude Code si connettono a sistemi al di fuori del terminale, ognuna adatta a un diverso tipo di lavoro:
| Funzione | Cosa fa | Buono per |
|---|---|---|
| Claude Code sul web | Esegue attività in una nuova sandbox cloud, clonata da GitHub | Delegare lavoro asincrono autonomo su cui torni in seguito |
| Claude in Slack | Avvia una sessione web da una menzione @Claude in un canale o thread |
Avviare attività direttamente dal contesto della conversazione del team |
| Server MCP standard | Claude lo interroga durante un'attività; nulla viene inviato alla sessione | Dare a Claude accesso on-demand per leggere o interrogare un sistema |
| Remote Control | Guidi la tua sessione locale da claude.ai o dall'app mobile Claude | Guidare una sessione in corso mentre sei lontano dalla tua scrivania |
I canali colmano il divario in quell'elenco inviando eventi da fonti non-Claude nella tua sessione locale già in esecuzione.
- Ponte di chat: chiedi a Claude qualcosa dal tuo telefono tramite Telegram, Discord o iMessage, e la risposta torna nella stessa chat mentre il lavoro viene eseguito sulla tua macchina contro i tuoi file reali.
- Ricevitore webhook: un webhook da CI, il tuo error tracker, una pipeline di deploy o altro servizio esterno arriva dove Claude ha già i tuoi file aperti e ricorda cosa stavi debuggando.
Passaggi successivi
Una volta che hai un canale in esecuzione, esplora queste funzioni correlate:
- Crea il tuo canale per sistemi che non hanno ancora plugin
- Remote Control per guidare una sessione locale dal tuo telefono invece di inoltrarvi eventi
- Attività pianificate per eseguire il polling su un timer invece di reagire a eventi inviati