Quando ClawHub e stato lanciato, sembrava il modo ovvio per estendere un runtime per agenti AI. Un marketplace di skill — installa quello che ti serve, salta quello che non ti serve, contribuisci con le tue. Il modello funzionava per le estensioni del browser, per i plugin di VS Code, per i pacchetti npm. Perche non per gli agenti AI?
All'inizio del 2026, la risposta era chiara. I ricercatori di sicurezza hanno scoperto che il 41,7% delle skill pubblicate su ClawHub conteneva vulnerabilita. Centinaia erano apertamente malevole — pacchetti caricati specificamente per compromettere gli utenti che li installavano. Il modello plugin, si e scoperto, ha un problema fondamentale quando applicato a software che gira con permessi elevati sulla tua macchina.
ZeroClaw e stato progettato con questo scenario di fallimento in mente. Invece di un sistema di plugin, usa i trait Rust.
Cosa c'e di Sbagliato nei Sistemi di Plugin Runtime
Il problema principale con i sistemi di plugin tradizionali non e la qualita dell'implementazione — e il modello stesso. Quando installi un plugin, stai scaricando codice da internet ed eseguendolo all'interno del processo della tua applicazione, con i permessi della tua applicazione. Il plugin puo leggere i tuoi file, accedere alla tua rete, leggere le tue variabili d'ambiente e fare qualsiasi altra cosa la tua applicazione puo fare.
Questo va bene per un plugin di editor di testo che aggiunge syntax highlighting. Non va bene per un runtime per agenti AI che ha accesso alle tue credenziali, al tuo file system e ai tuoi canali di chat.
I modi specifici di fallimento sono prevedibili. Il caricamento di codice a runtime significa che i plugin eseguono codice arbitrario nel processo host — nessuna sandbox, nessun isolamento, nessun modello di capability. La fiducia predefinita significa che una volta installato un plugin, ha gli stessi permessi dell'applicazione host. Gli attacchi alla supply chain sono banalmente facili: pubblica un pacchetto con un nome simile a uno popolare, aspetta che gli utenti lo installino.
ClawHub di OpenClaw ha dimostrato tutti questi modi di fallimento nel 2026. Le skill malevole non erano sofisticate — erano solo pacchetti che capitava di essere installati da utenti che si fidavano del marketplace.
Trait: Un Modello Diverso
Un trait Rust e un contratto di interfaccia applicato dal compilatore. Definisce quali metodi un'implementazione deve fornire, quali tipi quei metodi accettano e restituiscono, e quali garanzie di thread-safety devono rispettare. Ecco il trait channel di ZeroClaw, semplificato:
Ogni canale — Telegram, Discord, WhatsApp, Signal, Matrix, IRC — implementa questo trait. Il compilatore garantisce type safety, thread safety (i bound Send + Sync garantiscono accesso concorrente sicuro) e completezza (ogni metodo richiesto deve essere implementato — nessun errore "metodo non trovato" a runtime).
Cosa fondamentale: i nuovi canali vengono compilati nel binario, non caricati a runtime. Nessuna iniezione di codice, nessun caricamento dinamico, nessuna decisione di fiducia da prendere al momento dell'installazione. L'estensione e verificata dal compilatore prima che venga mai eseguita.
Aggiungere un Nuovo Canale
L'esperienza pratica di estendere ZeroClaw e implementare il trait. Ecco come appare un adattatore di canale Matrix:
Sono circa 50 righe per un adattatore di canale completo. Il compilatore verifica che l'implementazione sia corretta prima che il codice venga distribuito. Se dimentichi di implementare un metodo, o restituisci il tipo sbagliato, o violi un vincolo di thread-safety, ottieni un errore di compilazione — non un crash a runtime in produzione.
Lo Stesso Pattern per Ogni Punto di Estensione
ZeroClaw usa i trait per ogni punto in cui il sistema deve essere estensibile. I provider AI implementano un trait Provider. Passare da OpenAI ad Anthropic a Ollama significa implementare lo stesso trait con chiamate HTTP diverse. Il resto di ZeroClaw non sa ne gli importa quale provider e attivo — chiama semplicemente i metodi del trait.
Gli strumenti implementano un trait Tool che richiede di dichiarare i permessi in anticipo. Ogni strumento dichiara di cosa ha bisogno — accesso ai file, accesso alla rete, percorsi specifici — prima di essere eseguito. Il runtime applica le allowlist basate su quelle dichiarazioni. Uno strumento che afferma di aver bisogno di accesso in lettura a ~/documents non puo accedere silenziosamente a ~/.ssh.
I backend di memoria implementano un trait MemoryBackend, motivo per cui SQLite e il default ma backend alternativi sono possibili senza modificare nessun altro codice.
Il Confronto sulla Sicurezza
| Aspetto | Sistema Plugin | Sistema Trait | |--------|--------------|-------------| | Origine del codice | Scaricato a runtime | Compilato al build time | | Verifica | Basata sulla fiducia | Verificata dal compilatore | | Permessi | Runtime, spesso non controllati | Dichiarati nei tipi, applicati | | Supply chain | Vulnerabile | Nessun caricamento di codice esterno | | Type safety | Errori a runtime | Errori a compile time | | Concorrenza | Race condition possibili | Data race impossibili |
L'intuizione chiave e semplice: non puoi avere un attacco alla supply chain se non hai una supply chain. Le estensioni di ZeroClaw sono compilate dentro, non scaricate. Non c'e nessun marketplace da compromettere, nessun pacchetto da typosquattare, nessuna decisione di fiducia da prendere al momento dell'installazione.
Il Vero Compromesso
L'approccio trait significa che non puoi installare un nuovo canale scaricando un file. Aggiungere un'estensione personalizzata richiede scrivere Rust, aggiungerla al sorgente di ZeroClaw e compilare un nuovo binario. Per la maggior parte degli utenti, i 30+ canali e strumenti integrati coprono tutto cio di cui hanno bisogno. Per gli sviluppatori che necessitano di estensioni personalizzate, il sistema trait fornisce un contratto chiaro e type-safe da implementare.
Questo compromesso e intenzionale. Una superficie di estensione piu piccola e verificata e meglio di una grande e non verificata. ClawHub di OpenClaw ha dimostrato cosa succede quando si ottimizza per la dimensione dell'ecosistema rispetto alla sicurezza. ZeroClaw ottimizza per il contrario, e il conteggio CVE riflette quella scelta.