plugin.approval.* e le stesse interfacce di approvazione che gestiscono i pulsanti di approvazione nelle chat e i comandi /approve.
Usare le richieste di autorizzazione dei Plugin per le autorizzazioni di Plugin/app. Non sostituiscono le approvazioni di esecuzione dell’host, gli elenchi facoltativi degli strumenti consentiti o la revisione nativa delle autorizzazioni di Codex.
Scegliere il controllo appropriato
Scegliere il controllo corrispondente al punto decisionale necessario:
Gli strumenti facoltativi costituiscono un controllo nella fase di individuazione. Le richieste di autorizzazione dei Plugin costituiscono un controllo per singola chiamata. Usarli entrambi quando uno strumento sensibile deve richiedere un consenso esplicito prima di essere visibile al modello e un’approvazione prima dell’esecuzione dell’azione.
Richiedere l’approvazione prima di una chiamata a uno strumento
La maggior parte delle richieste create dai Plugin dovrebbe iniziare in un hookbefore_tool_call. L’hook viene eseguito dopo che il modello seleziona uno strumento e prima che OpenClaw lo esegua:
- Mantenere
titlebreve e incentrato sull’azione; il Gateway lo limita a 80 caratteri. - Mantenere
descriptionspecifico e circoscritto; il Gateway lo limita a 512 caratteri. - Includere l’azione, la destinazione e il rischio. Non includere segreti, token o payload privati che non devono apparire nelle interfacce di approvazione delle chat.
severityusa per impostazione predefinita"warning"se omesso. Usare"critical"solo per le azioni in cui una decisione errata potrebbe causare danni alla produzione o perdita di dati.allowedDecisionsusa per impostazione predefinita["allow-once", "allow-always", "deny"]se omesso. Passare["allow-once", "deny"]quando la fiducia persistente non è sicura per quell’azione.timeoutMsusa per impostazione predefinita 120000 (2 minuti) ed è limitato a 600000 (10 minuti), indipendentemente dal valore richiesto.
Comportamento delle decisioni
OpenClaw crea un’approvazione in sospeso con un IDplugin:, la invia alle
interfacce di approvazione disponibili e attende una decisione.
Solo le decisioni esatte
allow-once e allow-always consentite dalla
richiesta permettono l’esecuzione. Le decisioni sconosciute, non valide, non corrispondenti, mancanti o scadute
determinano un blocco per impostazione predefinita. Il campo legacy timeoutBehavior continua a essere accettato per
la compatibilità dei Plugin, ma è deprecato e ignorato; non impostarlo nei nuovi hook.
allow-always è permanente solo quando il Plugin o il runtime richiedente implementa
tale persistenza. Per i normali hook before_tool_call.requireApproval,
OpenClaw considera allow-once e allow-always decisioni di approvazione per la
chiamata corrente e passa il valore risolto a onResolution. Se il Plugin
offre allow-always, documentare e implementare esattamente quali chiamate future considera
attendibili.
Se l’hook restituisce anche params, OpenClaw applica tali modifiche ai parametri solo
dopo l’approvazione. Un hook con priorità inferiore può comunque bloccare dopo che un
hook con priorità superiore ha richiesto l’approvazione.
allowedDecisions limita i pulsanti e i comandi mostrati all’utente. Il
Gateway rifiuta qualsiasi tentativo di risoluzione con una decisione non proposta dalla richiesta.
Instradare le richieste di approvazione
Le richieste di approvazione possono essere risolte nelle interfacce utente locali o nei canali di chat che supportano la gestione delle approvazioni. Per inoltrare le richieste di approvazione dei Plugin a destinazioni di chat esplicite, configurareapprovals.plugin:
approvals.plugin è indipendente da approvals.exec. L’abilitazione dell’inoltro delle approvazioni di esecuzione
non instrada le richieste di approvazione dei Plugin e l’abilitazione dell’inoltro delle approvazioni dei Plugin
non modifica i criteri di esecuzione dell’host.
Quando una richiesta include testo per l’approvazione manuale, risolverla con una delle decisioni
proposte:
Autorizzazioni native di Codex
Anche le richieste di autorizzazione native di Codex possono transitare tramite le approvazioni dei Plugin, ma hanno una titolarità diversa dagli hook creati dai Plugin.- Le richieste di approvazione dell’app-server di Codex vengono instradate tramite OpenClaw dopo la revisione di Codex.
- Il relay dell’hook nativo
permission_requestpuò effettuare la richiesta tramiteplugin.approval.requestquando tale relay è abilitato. - Le richieste di approvazione degli strumenti MCP vengono instradate tramite le approvazioni dei Plugin quando Codex contrassegna
_meta.codex_approval_kindcome"mcp_tool_call".
Risoluzione dei problemi
Lo strumento indica che le approvazioni dei Plugin non sono disponibili. Nessuna interfaccia di approvazione o percorso di approvazione configurato ha accettato la richiesta. Connettere un client in grado di gestire le approvazioni, usare un canale che supporti/approve nella stessa chat oppure configurare approvals.plugin.
Viene visualizzato allow-always, ma la chiamata successiva richiede nuovamente l’approvazione. Il flusso generico di
approvazione dei Plugin non rende automaticamente permanente la fiducia per hook arbitrari. Rendere permanente
la fiducia di proprietà del Plugin nel Plugin dopo onResolution("allow-always"), oppure
offrire solo allow-once e deny.
/approve rifiuta la decisione. La richiesta ha limitato
allowedDecisions. Usare una delle decisioni mostrate nella richiesta.
Una richiesta di Discord, Matrix, Slack o Telegram viene instradata diversamente dalle
approvazioni di esecuzione. Le approvazioni dei Plugin e le approvazioni di esecuzione usano configurazioni separate e possono usare
controlli di autorizzazione diversi. Verificare approvals.plugin e il supporto del canale
per l’approvazione dei Plugin, anziché controllare soltanto approvals.exec.