2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.
4 4
5# Gestire i mod per la vostra organizzazione5# Gestire i mod per la tua organizzazione
6 6
7> Controllare i mod di Claude Code con impostazioni gestite: bloccare i mod installati dagli utenti, consentire solo i vostri, esaminare cosa può fare un mod e applicare la politica con il vostro mod.7> Controlla i mod di Claude Code con le impostazioni gestite: blocca i mod installati dagli utenti, consenti solo i tuoi, verifica cosa può fare un mod e applica le policy con un tuo mod.
8 8
9Un [mod](/docs/it/plugins/mods/overview) è un plugin che esegue codice all'interno di Claude Code con i permessi dell'utente che lo ha installato. I mod non sono sandboxed. Attraverso le [impostazioni gestite](/docs/it/managed-settings), voi decidete se i mod vengono eseguiti sulle macchine dei vostri utenti, quali e in quale ordine. Potete anche installare un mod vostro che osserva o rifiuta quello che fanno gli altri mod.9Un [mod](/docs/it/plugins/mods/overview) è un plugin che esegue codice all'interno di Claude Code con i permessi dell'utente che lo ha installato. I mod non sono isolati in una sandbox. Tramite le [impostazioni gestite](/docs/it/managed-settings), decidi se i mod vengono eseguiti sui computer dei tuoi utenti, quali e in quale ordine. Puoi anche installare un tuo mod che osserva o rifiuta ciò che fanno gli altri mod.
10 10
11Questa pagina è per la persona che distribuisce le impostazioni gestite per Claude Code, sia come file, tramite MDM, che dalla console di amministrazione di claude.ai. I mod sono attivati per impostazione predefinita in Claude Code v2.1.287 e versioni successive. Iniziate con la sezione che corrisponde a quello che siete venuti a fare:11Questa pagina è rivolta a chi distribuisce le impostazioni gestite per Claude Code, sia come file, tramite MDM o dalla console di amministrazione di claude.ai. I mod sono attivi per impostazione predefinita in Claude Code v2.1.287 e versioni successive. Inizia dalla sezione che corrisponde a ciò che vuoi fare:
12 12
13* **Tenere fuori i mod propri degli utenti, con o senza mod vostri**: [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading)13* **Escludere i mod degli utenti, con o senza mod tuoi**: [Impedisci il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading)
14* **Vedere cosa ottengono i vostri utenti quando non cambiate nulla**: [Sapere cosa accade per impostazione predefinita](#know-what-happens-by-default)14* **Vedere cosa ottengono i tuoi utenti se non modifichi nulla**: [Scopri cosa succede per impostazione predefinita](#know-what-happens-by-default)
15* **Lasciare i mod attivi con altri limiti**: [Scegliere quanto consentire](#choose-how-much-to-allow)15* **Lasciare attivi i mod con altri limiti**: [Scegli quanto consentire](#choose-how-much-to-allow)
16 16
17<Note>17<Note>
18 Questi casi sono trattati in altre pagine:18 Questi casi sono trattati in altre pagine:
19 19
20 * **Non avete mai distribuito impostazioni gestite prima**: iniziate con [Distribuire impostazioni gestite](/docs/it/managed-settings)20 * **Non hai mai distribuito impostazioni gestite**: inizia da [Distribuire le impostazioni gestite](/docs/it/managed-settings)
21 * **Volete controllare quali plugin gli utenti possono installare**: vedere [Gestire i plugin per la vostra organizzazione](/docs/it/plugins/org)21 * **Vuoi controllare quali plugin possono installare gli utenti**: consulta [Gestire i plugin per la tua organizzazione](/docs/it/plugins/org)
22</Note>22</Note>
23 23
24<h2 id="stop-user-installed-mods-from-loading">24<h2 id="stop-user-installed-mods-from-loading">
25 Impedire il caricamento dei mod installati dagli utenti25 Impedire il caricamento dei mod installati dagli utenti
26</h2>26</h2>
27 27
28Per impedire il caricamento di ogni mod che i vostri utenti portano, impostate l'opzione `allowManagedModsOnly` sulla [guardia incorporata](#know-what-happens-by-default), un mod di politica che Claude Code carica prima di ogni mod che un utente installa. L'opzione va nelle impostazioni gestite sotto `pluginConfigs`, con chiave `cc-plugin-sec-default@builtin`:28Per impedire il caricamento di tutti i mod portati dai tuoi utenti, imposta l'opzione `allowManagedModsOnly` sulla [protezione integrata](#know-what-happens-by-default), un mod di criteri che Claude Code carica prima di ogni mod installato da un utente. L'opzione va nelle impostazioni gestite sotto `pluginConfigs`, con chiave `cc-plugin-sec-default@builtin`:
29 29
30```json managed-settings.json theme={null}30```json managed-settings.json theme={null}
31{31{
41 41
42Con l'opzione impostata nelle impostazioni gestite:42Con l'opzione impostata nelle impostazioni gestite:
43 43
44* **Nessun mod che un utente porta viene caricato**: questo copre un mod in un plugin che l'utente ha installato, un mod caricato con `--plugin-dir`, e un mod [che Claude ha scritto durante una sessione](/docs/it/plugins/mods/create#ask-claude-for-a-mod)44* **Nessun mod portato da un utente viene caricato**: questo include un mod in un plugin installato dall'utente, un mod caricato con `--plugin-dir` e un mod [scritto da Claude durante una sessione](/docs/it/plugins/mods/create#ask-claude-for-a-mod)
45* **I mod della vostra organizzazione continuano a caricarsi**: un mod che [conta come della vostra organizzazione](#install-your-organizations-mods) non viene controllato. Ogni altro mod conta come di un utente e non viene caricato. Questo include un mod in un plugin che abilitate da un marketplace GitHub o altro remoto, e uno che la vostra organizzazione attiva per i suoi membri su claude.ai. Se nessuno conta come vostro, nessun mod installato viene caricato.45* **I mod della tua organizzazione vengono comunque caricati**: un mod che [conta come appartenente alla tua organizzazione](#install-your-organizations-mods) non viene controllato. Ogni altro mod conta come appartenente a un utente e non viene caricato. Questo include un mod in un plugin che abiliti da GitHub o da un altro marketplace remoto, e uno che la tua organizzazione attiva per i propri membri su claude.ai. Se nessuno conta come tuo, nessun mod installato viene caricato.
46* **Gli utenti non possono annullarlo**: la guardia legge l'opzione solo dalle impostazioni gestite, quindi la stessa voce in un file di impostazioni utente, progetto o locale, o in un file passato con `--settings`, non cambia nulla46* **Gli utenti non possono annullarlo**: la protezione integrata legge l'opzione solo dalle impostazioni gestite, quindi la stessa voce in un file di impostazioni utente, di progetto o locale, o in un file passato con `--settings`, non cambia nulla
47* **Un file o una politica MDM copre ogni provider**: quando consegnate l'opzione come file o tramite MDM, funziona allo stesso modo su Amazon Bedrock, Agent Platform di Google Cloud e Microsoft Foundry. Per la consegna dalla console di amministrazione di claude.ai, vedere [Disponibilità della piattaforma](/docs/it/server-managed-settings#platform-availability)47* **Un file o un criterio MDM copre ogni provider**: quando distribuisci l'opzione come file o tramite MDM, funziona allo stesso modo su Amazon Bedrock, Agent Platform di Google Cloud e Microsoft Foundry. Per la distribuzione dalla console di amministrazione di claude.ai, consulta [Disponibilità delle piattaforme](/docs/it/server-managed-settings#platform-availability)
48* **Le altre personalizzazioni degli utenti continuano a funzionare**: i loro [hook nei file di impostazioni](/docs/it/hooks), le righe di stato e `/goal` non sono interessati48* **Le altre personalizzazioni degli utenti continuano a funzionare**: i loro [hook nei file di impostazioni](/docs/it/hooks), le righe di stato e `/goal` non sono interessati
49* **I mod incorporati continuano a funzionare**: i mod incorporati in Claude Code, come il supporto `AGENTS.md`, hanno ciascuno [il loro interruttore](/docs/it/plugins/mods/overview#mods-built-into-claude-code)49* **I mod integrati continuano a funzionare**: i mod integrati in Claude Code, come il supporto per `AGENTS.md`, hanno ciascuno [il proprio interruttore](/docs/it/plugins/mods/overview#mods-built-into-claude-code)
50 50
51Per confermare l'opzione sulla macchina di un utente, avviate Claude Code lì con `--plugin-dir` e il percorso di una directory che contiene un mod, come `claude --plugin-dir ./first-mod`. Gli hook del mod non vengono eseguiti, e la trascrizione e il log di debug hanno il [messaggio della guardia](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard), che nomina il mod e `allowManagedModsOnly`. Se il mod viene caricato, vedere [Verificare che una politica sia in vigore](/docs/it/managed-settings#check-that-a-policy-is-in-force) e le [regole che decidono se un'opzione ha effetto](#set-options-on-the-built-in-guard).51Per verificare l'opzione sul computer di un utente, avvia lì Claude Code con `--plugin-dir` e il percorso di una directory che contiene un mod, ad esempio `claude --plugin-dir ./first-mod`. Gli hook del mod non vengono eseguiti, e la trascrizione e il log di debug contengono il [messaggio della protezione integrata](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard), che indica il nome del mod e `allowManagedModsOnly`. Se il mod viene caricato, consulta [Verificare che un criterio sia in vigore](/docs/it/managed-settings#check-that-a-policy-is-in-force) e le [regole che determinano se un'opzione ha effetto](#set-options-on-the-built-in-guard).
52 52
53Se avete impostato `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` a `0` durante l'accesso anticipato, sostituirlo con questa opzione. Claude Code v2.1.287 e versioni successive ignora la variabile a qualsiasi valore, quindi uno `0` lì lascia i mod attivi.53Se durante l'accesso anticipato hai impostato `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` su `0`, sostituiscila con questa opzione. Claude Code v2.1.287 e versioni successive ignorano la variabile con qualsiasi valore, quindi un `0` lascia i mod attivi.
54 54
55<h2 id="know-what-happens-by-default">55<h2 id="know-what-happens-by-default">
56 Sapere cosa accade per impostazione predefinita56 Sapere cosa succede per impostazione predefinita
57</h2>57</h2>
58 58
59Senza impostazioni mod proprie, questo è quello che i vostri utenti ottengono:59Senza impostazioni dei mod tue, ecco cosa ottengono i tuoi utenti:
60 60
61* **I mod sono attivi.** Un utente può installare un plugin che contiene un mod da qualsiasi marketplace che le vostre impostazioni di plugin consentono, o caricarne uno da una directory con `--plugin-dir`.61* **I mod sono attivi.** Un utente può installare un plugin che contiene un mod da qualsiasi marketplace consentito dalle tue impostazioni dei plugin, oppure caricarne uno da una directory con `--plugin-dir`.
62* **Una guardia incorporata viene eseguita per prima.** Claude Code carica un mod incorporato denominato `sec-default@builtin` prima di ogni mod che un utente installa. Gli utenti non possono disattivarla. `/plugin` e il log di debug la elencano come `cc-plugin-sec-default`. La guardia viene caricata quando una di queste è vera:62* **Una protezione integrata viene eseguita per prima.** Claude Code carica un mod integrato chiamato `sec-default@builtin` prima di ogni mod installato da un utente. Gli utenti non possono disattivarlo. `/plugin` e il log di debug lo elencano come `cc-plugin-sec-default`. La protezione viene caricata quando è vera una di queste condizioni:
63 63
64 * La macchina ha impostazioni gestite64 * La macchina ha impostazioni gestite
65 * L'utente è connesso a Claude Code con un piano Team o Enterprise65 * L'utente ha effettuato l'accesso a Claude Code con un piano Team o Enterprise
66 66
67 Un utente che si autentica con una chiave API, o tramite Amazon Bedrock, Agent Platform di Google Cloud, o Microsoft Foundry, ottiene la guardia solo su una macchina che ha impostazioni gestite.67 Un utente che si autentica con una chiave API, oppure tramite Amazon Bedrock, Agent Platform di Google Cloud o Microsoft Foundry, ottiene la protezione solo su una macchina che ha impostazioni gestite.
68* **La guardia protegge quello che gestite.** Un mod di un utente non può cambiare quello che i vostri hook gestiti ricevono o decidono, il prompt di sistema, il vostro `CLAUDE.md` gestito e altre istruzioni gestite, quello che qualsiasi mod legge come impostazioni, o gli strumenti e le descrizioni dei vostri server MCP gestiti.68* **La protezione tutela ciò che gestisci.** Il mod di un utente non può modificare ciò che i tuoi hook gestiti ricevono o decidono, il prompt di sistema, il tuo `CLAUDE.md` gestito e le altre istruzioni gestite, ciò che qualsiasi mod legge come impostazioni, né gli strumenti e le descrizioni dei tuoi server MCP gestiti.
69* **Tutto il resto è consentito.** La guardia non aggiunge altre restrizioni. Un mod di un utente può comunque leggere e scrivere file, avviare processi, fare richieste di rete, riscrivere chiamate di strumenti e prompt, negare una chiamata di strumento, approvare una che altrimenti richiederebbe un prompt, e disegnare nell'interfaccia, tutto con i permessi di quell'utente.69* **Tutto il resto è consentito.** La protezione non aggiunge altre restrizioni. Il mod di un utente può comunque leggere e scrivere file, avviare processi, effettuare richieste di rete, riscrivere chiamate agli strumenti e prompt, negare una chiamata a uno strumento, approvarne una che altrimenti richiederebbe conferma e disegnare nell'interfaccia, il tutto con i permessi di quell'utente.
70* **Le regole di negazione e i vostri hook gestiti hanno la precedenza.** Dove la guardia viene caricata, un mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, indipendentemente da quale file di impostazioni contiene la regola. Un blocco da un hook `PreToolUse` nelle impostazioni gestite è definitivo anche. Entrambi si applicano alle chiamate di strumenti di Claude. Nessuno si applica alle chiamate proprie di un mod [`$.fs` e `$.process`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network): con `Read(.env)` negato, un mod può comunque leggere quel file con `$.fs.read` o avviare un programma che lo fa. Per limitare quelle chiamate, impedire al mod di caricarsi o agganciare la chiamata in un [mod di politica](#enforce-a-policy-with-a-mod-of-your-own).70* **Le regole deny e i tuoi hook gestiti hanno la precedenza.** Dove la protezione viene caricata, il mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, qualunque sia il file di impostazioni che contiene la regola. Anche un blocco da un hook `PreToolUse` nelle impostazioni gestite è definitivo. Entrambi si applicano alle chiamate agli strumenti di Claude. Nessuno dei due si applica alle [chiamate `$.fs` e `$.process`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) del mod stesso: con `Read(.env)` negato, un mod può comunque leggere quel file con `$.fs.read` o avviare un programma che lo fa. Per limitare quelle chiamate, impedisci il caricamento del mod oppure gestisci la chiamata in un [mod di criteri](#enforce-a-policy-with-a-mod-of-your-own).
71* **Altri controlli di permesso possono essere ignorati.** Un mod di un utente che approva le chiamate di strumenti può approvare una chiamata che una regola `ask` richiederebbe un prompt, o che un hook `PreToolUse` al di fuori delle impostazioni gestite ha bloccato. In modalità automatica, una chiamata che il mod approva viene eseguita senza un controllo del classificatore.71* **Gli altri controlli dei permessi possono essere aggirati.** Il mod di un utente che approva le chiamate agli strumenti può approvare una chiamata per cui una regola `ask` chiederebbe conferma, oppure che un hook `PreToolUse` esterno alle impostazioni gestite ha bloccato. In modalità auto, una chiamata approvata dal mod viene eseguita senza un controllo del classificatore.
72 72
73La fonte della guardia è pubblica nella [directory `mods/sec-default` del repository di Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).73Il codice sorgente della protezione è pubblico nella [directory `mods/sec-default` del repository di Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).
74 74
75<h3 id="know-which-controls-still-apply">75<h3 id="know-which-controls-still-apply">
76 Sapere quali controlli si applicano ancora76 Sapere quali controlli continuano ad applicarsi
77</h3>77</h3>
78 78
79I mod non sostituiscono i controlli che avete già:79I mod non sostituiscono i controlli che hai già:
80 80
81* **Gli hook di impostazioni continuano a funzionare.** Gli hook di comando, HTTP, prompt e agente nei file di impostazioni e nel `hooks/hooks.json` dei plugin vengono eseguiti come prima, insieme ai mod. Nulla di loro è deprecato.81* **Gli hook delle impostazioni continuano a funzionare.** Gli hook di tipo command, HTTP, prompt e agent nei file di impostazioni e in `hooks/hooks.json` dei plugin vengono eseguiti come prima, insieme ai mod. Nulla di essi è deprecato.
82* **Le regole di negazione hanno la precedenza dove la guardia viene caricata.** Un mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, a meno che non impostiate [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).82* **Le regole deny hanno la precedenza dove la protezione viene caricata.** Il mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, a meno che tu non imposti [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).
83* **Gli hook gestiti vengono eseguiti per primi.** Un hook `PreToolUse` nelle impostazioni gestite viene eseguito prima che qualsiasi mod veda la chiamata di strumento, e il suo blocco è definitivo. Se un mod poi riscrive la chiamata, i vostri hook gestiti vengono eseguiti di nuovo sulla chiamata riscritta, quindi un blocco si applica comunque. Gli hook `PreToolUse` da altri file di impostazioni e dai plugin vengono eseguiti dopo l'ultimo mod, quindi un mod che restituisce il suo proprio risultato al posto di eseguire lo strumento impedisce a quelli di funzionare. Vedere [L'ordine in cui i mod vengono eseguiti](/docs/it/plugins/mods/events#the-order-mods-run-in).83* **Gli hook gestiti vengono eseguiti per primi.** Un hook `PreToolUse` nelle impostazioni gestite viene eseguito prima che qualsiasi mod veda la chiamata allo strumento, e il suo blocco è definitivo. Se poi un mod riscrive la chiamata, i tuoi hook gestiti vengono eseguiti di nuovo sulla chiamata riscritta, quindi un blocco si applica comunque. Gli hook `PreToolUse` provenienti da altri file di impostazioni e dai plugin vengono eseguiti dopo l'ultimo mod, quindi un mod che restituisce un proprio risultato invece di eseguire lo strumento ne impedisce l'esecuzione. Consulta [L'ordine in cui vengono eseguiti i mod](/docs/it/plugins/mods/events#the-order-mods-run-in).
84* **La politica di rete copre `$.http.fetch`.** Se la vostra organizzazione disattiva il recupero web, o il traffico di rete non essenziale è disattivato per la sessione, Claude Code rifiuta una richiesta di rete che un mod fa con `$.http.fetch`. La politica non copre un programma che il mod avvia con `$.process.run`. Quel programma raggiunge la rete con l'accesso proprio dell'utente.84* **La policy di rete copre `$.http.fetch`.** Se la tua organizzazione disattiva il recupero web, oppure il traffico di rete non essenziale è disattivato per la sessione, Claude Code rifiuta una richiesta di rete che un mod effettua con `$.http.fetch`. La policy non copre un programma che il mod avvia con `$.process.run`. Quel programma raggiunge la rete con l'accesso dell'utente stesso.
85* **I controlli dei plugin coprono i mod.** Un mod è un plugin, quindi le [impostazioni che limitano quello che gli utenti possono installare](/docs/it/plugins/org#restrict-what-users-can-install), come `strictKnownMarketplaces`, decidono se può essere installato affatto.85* **I controlli dei plugin coprono i mod.** Un mod è un plugin, quindi le [impostazioni che limitano ciò che gli utenti possono installare](/docs/it/plugins/org#restrict-what-users-can-install), come `strictKnownMarketplaces`, decidono se può essere installato o meno.
86* **I mod non possono cambiare il prompt di permesso.** Un mod può ridisegnare gran parte dell'interfaccia di Claude Code, ma non il prompt di permesso, quindi non può cambiare quello che un prompt mostra. Un mod può comunque approvare o negare una chiamata di strumento prima che il prompt appaia, come [Sapere cosa accade per impostazione predefinita](#know-what-happens-by-default) descrive.86* **I mod non possono modificare la richiesta di permesso.** Un mod può cambiare lo stile di gran parte dell'interfaccia di Claude Code, ma non della richiesta di permesso, quindi non può modificare ciò che una richiesta mostra. Un mod può comunque approvare o negare una chiamata a uno strumento prima che compaia la richiesta, come descritto in [Sapere cosa succede per impostazione predefinita](#know-what-happens-by-default).
87* **I prompt di fiducia vengono per primi.** In una sessione interattiva in una directory che l'utente non ha ancora fiducia, nessun mod viene caricato finché non rispondono al prompt di fiducia.87* **Le richieste di attendibilità vengono prima.** In una sessione interattiva in una directory che l'utente non ha ancora considerato attendibile, nessun mod viene caricato finché l'utente non risponde alla richiesta di attendibilità.
88* **`--safe-mode` disattiva i mod installati, inclusi i vostri.** Avviate una sessione con `claude --safe-mode` per verificare se un mod ha causato un problema.88* **`--safe-mode` disattiva i mod installati, compresi i tuoi.** Avvia una sessione con `claude --safe-mode` per verificare se un mod ha causato un problema.
89 89
90Nessuno di questi controlli sandboxes un mod. Un mod che consentite viene eseguito come l'utente, con l'accesso dell'utente a file, processi e la rete.90Nessuno di questi controlli esegue un mod in una sandbox. Un mod che consenti viene eseguito come l'utente, con l'accesso dell'utente a file, processi e rete.
91 91
92<h2 id="decide-whether-to-leave-mods-on">92<h2 id="decide-whether-to-leave-mods-on">
93 Decidere se lasciare i mod attivi93 Decidi se lasciare attivi i mod
94</h2>94</h2>
95 95
96Un mod può fare più di altre parti di un plugin perché viene eseguito all'interno di Claude Code. Vede ogni prompt e chiamata di strumento, può cambiarli, e può consentire o negare una chiamata di strumento prima che un prompt di permesso appaia.96Un mod può fare più delle altre parti di un plugin perché viene eseguito all'interno di Claude Code. Vede ogni prompt e ogni chiamata a uno strumento, può modificarli e può consentire o negare una chiamata a uno strumento prima che compaia una richiesta di permesso.
97 97
98Quello che un utente può caricare come mod dipende dai controlli dei plugin che avete già:98Ciò che un utente può caricare come mod dipende dai controlli sui plugin che hai già:
99 99
100| I vostri controlli di plugin oggi | Quello che un utente può caricare come mod |100| I tuoi controlli sui plugin oggi | Cosa può caricare un utente come mod |
101| :- | :- |101| :- | :- |
102| Nessuno | Un mod da qualsiasi marketplace, da qualsiasi directory con `--plugin-dir`, o che Claude scrive durante una sessione |102| Nessuno | Un mod da qualsiasi marketplace, da qualsiasi directory con `--plugin-dir`, o che Claude scrive durante una sessione |
103| Una lista di consentiti del marketplace | Un mod dai marketplace che consentite, o da qualsiasi directory con `--plugin-dir`. Un mod che Claude scrive durante una sessione viene caricato solo quando la lista di consentiti [include `skills-dir`](/docs/it/plugins/org#keep-skills-directory-plugins-loading). |103| Un'allowlist di marketplace | Un mod dai marketplace che consenti, o da qualsiasi directory con `--plugin-dir`. Un mod che Claude scrive durante una sessione viene caricato solo quando l'allowlist [include `skills-dir`](/docs/it/plugins/org#keep-skills-directory-plugins-loading). |
104| Una lista di consentiti del marketplace e `disableSideloadFlags` | Un mod dai marketplace che consentite |104| Un'allowlist di marketplace e `disableSideloadFlags` | Un mod dai marketplace che consenti |
105 105
106[Gestire i plugin per la vostra organizzazione](/docs/it/plugins/org) elenca ogni modo in cui un plugin viene caricato e l'impostazione che controlla ciascuno.106[Gestire i plugin per la tua organizzazione](/docs/it/plugins/org) elenca i modi in cui un plugin viene caricato e l'impostazione che controlla ciascuno di essi.
107 107
108Per controllare i mod in un marketplace prima che i vostri utenti li installino, vedere [Esaminare cosa può fare un mod](#review-what-a-mod-can-do). Per tenere fuori i mod degli utenti finché non lo avete fatto, vedere [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading).108Per controllare i mod in un marketplace prima che i tuoi utenti li installino, consulta [Verifica cosa può fare un mod](#review-what-a-mod-can-do). Per impedire il caricamento dei mod degli utenti finché non l'hai fatto, consulta [Impedisci il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading).
109 109
110<h3 id="review-what-a-mod-can-do">110<h3 id="review-what-a-mod-can-do">
111 Esaminare cosa può fare un mod111 Verifica cosa può fare un mod
112</h3>112</h3>
113 113
114Potete vedere cosa un mod è in grado di fare senza eseguirlo. Nel vostro shell, eseguite `claude plugin validate` sulla directory del plugin:114Puoi vedere cosa è in grado di fare un mod senza eseguirlo. Nella tua shell, esegui `claude plugin validate` sulla directory del plugin:
115 115
116```bash theme={null}116```bash theme={null}
117claude plugin validate ./some-mod117claude plugin validate ./some-mod
118```118```
119 119
120Due righe nell'output descrivono il codice del mod:120Due righe dell'output descrivono il codice del mod:
121 121
122```text theme={null}122```text theme={null}
123 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane}123 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane}
124 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open124 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open
125```125```
126 126
127La riga `hooks:` elenca gli eventi che il mod riceve. La riga `calls:` elenca i metodi dell'API dei mod che il suo codice chiama. L'[API dei mod](/docs/it/plugins/mods/api), scritta `$` nel codice di un mod, è come un mod raggiunge file, processi e la rete. Claude Code rifiuta di caricare un mod che usa l'API dei mod in un modo che questo comando non può leggere.127La riga `hooks:` elenca gli eventi che il mod riceve. La riga `calls:` elenca i metodi dell'API dei mod che il suo codice chiama. L'[API dei mod](/docs/it/plugins/mods/api), scritta `$` nel codice di un mod, è il modo in cui un mod accede a file, processi e rete. Claude Code si rifiuta di caricare un mod che usa l'API dei mod in un modo che questo comando non riesce a leggere.
128 128
129Guardate la riga `calls:` per questi:129Cerca questi elementi nella riga `calls:`:
130 130
131| Chiamata | Cosa significa |131| Chiamata | Cosa significa |
132| :- | :- |132| :- | :- |
133| `$.fs.read`, `$.fs.write` | Legge o scrive file ovunque l'utente possa |133| `$.fs.read`, `$.fs.write` | Legge o scrive file ovunque possa farlo l'utente |
134| `$.process.run`, `$.process.spawn` | Avvia programmi come l'utente |134| `$.process.run`, `$.process.spawn` | Avvia programmi come l'utente |
135| `$.http.fetch` | Fa richieste di rete |135| `$.http.fetch` | Effettua richieste di rete |
136| `$.env.get`, `$.settings.read` | Legge variabili di ambiente e impostazioni, che possono contenere chiavi API. Una riga `env reads:` nell'output nomina ogni variabile. |136| `$.env.get`, `$.settings.read` | Legge variabili d'ambiente e impostazioni, che possono contenere chiavi API. Una riga `env reads:` nell'output indica il nome di ciascuna variabile. |
137| `$.env.set` | Imposta una variabile di ambiente per Claude Code e per ogni comando e server MCP che avvia dopo, che può cambiare quello che quei programmi eseguono. Una riga `env writes:` nomina ogni variabile. |137| `$.env.set` | Imposta una variabile d'ambiente per Claude Code e per ogni comando e server MCP che avvia successivamente, il che può cambiare ciò che quei programmi eseguono. Una riga `env writes:` indica il nome di ciascuna variabile. |
138| `$.mcp.call` | Chiama uno strumento su un server MCP connesso, secondo le regole di permesso della sessione |138| `$.mcp.call` | Chiama uno strumento su un server MCP connesso, secondo le regole di permesso della sessione |
139| `$.model.complete` | Usa il piano o la chiave API dell'utente per le chiamate di modello |139| `$.model.complete` | Usa il piano o la chiave API dell'utente per le chiamate al modello |
140| `$.prompt.submit` | Invia un prompt, e può inviarlo come le proprie parole dell'utente |140| `$.prompt.submit` | Invia un prompt e può inviarlo come se fossero parole dell'utente stesso |
141| `$.session.send` | Invia un messaggio che un'altra sessione o subagent di Claude legge |141| `$.session.send` | Invia un messaggio che viene letto dal Claude di un'altra sessione o di un subagent |
142 142
143Nella riga `hooks:`, [`tool.call`](/docs/it/plugins/mods/reference#tools) e [`prompt.submit`](/docs/it/plugins/mods/reference#prompts-and-what-claude-reads) significano che il mod vede ogni chiamata di strumento e ogni prompt, e può cambiarli. [`session.append`](/docs/it/plugins/mods/reference#session) significa che il mod può riscrivere ogni riga della conversazione prima che sia archiviata. [`ui.render{component=AskUserQuestion}`](/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) significa che il mod può ridisegnare il dialogo che Claude usa per chiedere all'utente una domanda. `tool.check` significa che il mod può approvare o negare una chiamata di strumento prima che un prompt di permesso appaia. [Sapere cosa accade per impostazione predefinita](#know-what-happens-by-default) elenca quale dei vostri regole e hook ha la precedenza sulla sua risposta.143Nella riga `hooks:`, [`tool.call`](/docs/it/plugins/mods/reference#tools) e [`prompt.submit`](/docs/it/plugins/mods/reference#prompts-and-what-claude-reads) indicano che il mod vede ogni chiamata a uno strumento e ogni prompt, e può modificarli. [`session.append`](/docs/it/plugins/mods/reference#session) indica che il mod può riscrivere ogni riga della conversazione prima che venga memorizzata. [`ui.render{component=AskUserQuestion}`](/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) indica che il mod può ridisegnare la finestra di dialogo che Claude usa per porre una domanda all'utente. `tool.check` indica che il mod può approvare o negare una chiamata a uno strumento prima che compaia una richiesta di permesso. [Sapere cosa succede per impostazione predefinita](#know-what-happens-by-default) elenca quali delle tue regole e dei tuoi hook hanno la precedenza sulla sua risposta.
144 144
145<h2 id="choose-how-much-to-allow">145<h2 id="choose-how-much-to-allow">
146 Scegliere quanto consentire146 Scegli quanto consentire
147</h2>147</h2>
148 148
149Le politiche dei mod vanno da nessun mod installato affatto a qualsiasi mod che un utente sceglie, con il vostro mod che controlla gli altri, e ognuna è poche impostazioni gestite. Trovate la politica che volete nella prima colonna e impostate quello che la seconda colonna nomina. [Distribuire impostazioni gestite](/docs/it/managed-settings) copre dove vivono le impostazioni gestite.149I criteri per i mod vanno dal non consentire alcun mod installato fino a consentire qualsiasi mod scelto da un utente, con il tuo mod che controlla gli altri, e ciascuno corrisponde a poche impostazioni gestite. Trova il criterio che desideri nella prima colonna e imposta ciò che indica la seconda colonna. [Distribuire le impostazioni gestite](/docs/it/managed-settings) spiega dove si trovano le impostazioni gestite.
150 150
151| Quello che volete | Impostazioni |151| Cosa desideri | Impostazioni |
152| :- | :- |152| :- | :- |
153| Nessun mod installato, con hook intatti | Impostate [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) e non distribuite mod vostri |153| Nessun mod installato, con gli hook non toccati | Imposta [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) e non distribuire alcun mod tuo |
154| Nessun mod installato e nessun hook affatto, inclusi i vostri hook gestiti | Impostate `disableAllHooks` a `true` |154| Nessun mod installato e nessun hook, inclusi i tuoi hook gestiti | Imposta `disableAllHooks` su `true` |
155| Solo i mod della vostra organizzazione | Impostate l'opzione [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading) della guardia, e [installate i vostri mod](#install-your-organizations-mods) in modo che contino come vostri |155| Solo i mod della tua organizzazione | Imposta l'[opzione `allowManagedModsOnly`](#stop-user-installed-mods-from-loading) della protezione, e [installa i tuoi mod](#install-your-organizations-mods) in modo che vengano considerati tuoi |
156| Qualsiasi mod dai marketplace che approvate | Mantenete le vostre [restrizioni del marketplace](/docs/it/plugins/org#restrict-what-users-can-install), e impostate `disableSideloadFlags` a `true` |156| Qualsiasi mod dai marketplace che approvi | Mantieni le tue [restrizioni sui marketplace](/docs/it/plugins/org#restrict-what-users-can-install), e imposta `disableSideloadFlags` su `true` |
157| Qualsiasi mod, con il vostro mod che controlla gli altri | [Installate il vostro mod](#install-your-organizations-mods), e elencatelo con `sec-default@builtin` in `prependPlugins` |157| Qualsiasi mod, con il tuo mod che controlla gli altri | [Installa il tuo mod](#install-your-organizations-mods), ed elencalo insieme a `sec-default@builtin` in `prependPlugins` |
158 158
159Quello che ogni impostazione fa:159Cosa fa ciascuna impostazione:
160 160
161* **`allowManagedModsOnly`**: un'opzione sulla guardia incorporata. I mod propri degli utenti non vengono caricati, e i loro hook di impostazioni, righe di stato e `/goal` continuano a funzionare. [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading) elenca quello che copre.161* **`allowManagedModsOnly`**: un'opzione della protezione integrata. I mod degli utenti non vengono caricati, mentre i loro hook delle impostazioni, le righe di stato e `/goal` continuano a funzionare. [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading) elenca cosa copre.
162* **`allowManagedHooksOnly`**: un'impostazione più ampia. Solo i [mod della vostra organizzazione](#install-your-organizations-mods) e i mod incorporati in Claude Code vengono caricati. Un mod che un utente ha installato da solo non lo fa. L'impostazione blocca anche gli hook nei file di impostazioni propri degli utenti. Leggete [Quello che viene eseguito sotto `allowManagedHooksOnly`](/docs/it/settings-reference#what-runs-under-allowmanagedhooksonly) prima di impostarla.162* **`allowManagedHooksOnly`**: un'impostazione più ampia. Vengono caricati solo [i mod della tua organizzazione](#install-your-organizations-mods) e i mod integrati in Claude Code. Un mod installato da un utente non viene caricato. L'impostazione blocca anche gli hook nei file di impostazioni degli utenti. Leggi [Cosa viene eseguito con `allowManagedHooksOnly`](/docs/it/settings-reference#what-runs-under-allowmanagedhooksonly) prima di impostarla.
163* **`disableAllHooks`**: l'impostazione più ampia. Nelle impostazioni gestite, ferma i mod in ogni plugin installato, incluso il vostro, e disattiva ogni hook nei file di impostazioni, quindi un hook `PreToolUse` nelle vostre impostazioni gestite non blocca più nulla. Le righe di stato personalizzate e `/goal` smettono di funzionare anche. Leggete [`disableAllHooks`](/docs/it/settings-reference#disableallhooks) prima di impostarla.163* **`disableAllHooks`**: l'impostazione più ampia. Nelle impostazioni gestite, blocca i mod in ogni plugin installato, inclusi i tuoi, e disattiva ogni hook nei file di impostazioni, quindi un hook `PreToolUse` nelle tue impostazioni gestite non blocca più nulla. Anche le righe di stato personalizzate e `/goal` smettono di funzionare. Leggi [`disableAllHooks`](/docs/it/settings-reference#disableallhooks) prima di impostarla.
164* **`disableSideloadFlags`**: rifiuta `--plugin-dir` e `--plugin-url` all'avvio, quindi nessuno carica un mod da una directory, e impedisce ai mod che Claude scrive durante una sessione di caricarsi. L'impostazione rifiuta anche `--agents` e `--mcp-config`. Leggete [`disableSideloadFlags`](/docs/it/settings-reference#disablesideloadflags) prima di impostarla.164* **`disableSideloadFlags`**: rifiuta `--plugin-dir` e `--plugin-url` all'avvio, e impedisce il caricamento dei mod che Claude scrive durante una sessione. L'impostazione rifiuta anche `--agents` e `--mcp-config`. Leggi [`disableSideloadFlags`](/docs/it/settings-reference#disablesideloadflags) prima di impostarla.
165 165
166I mod incorporati in Claude Code, come il supporto `AGENTS.md`, non sono interessati da queste impostazioni. Ognuno ha [il suo interruttore](/docs/it/plugins/mods/overview#mods-built-into-claude-code).166I mod integrati in Claude Code, come il supporto per `AGENTS.md`, non sono interessati da queste impostazioni. Ognuno ha [il proprio interruttore](/docs/it/plugins/mods/overview#mods-built-into-claude-code).
167 167
168Un utente il cui mod non è stato caricato trova il motivo nel suo log di debug. [Messaggi di rifiuto](/docs/it/plugins/mods/troubleshoot#refusal-messages) elenca le righe per `allowManagedHooksOnly` e `disableAllHooks`, e [Messaggi dalla guardia incorporata](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard) ha la riga per `allowManagedModsOnly`.168Un utente il cui mod non è stato caricato trova il motivo nel proprio log di debug. [Messaggi di rifiuto](/docs/it/plugins/mods/troubleshoot#refusal-messages) elenca le righe per `allowManagedHooksOnly` e `disableAllHooks`, e [Messaggi dalla protezione integrata](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard) riporta la riga per `allowManagedModsOnly`.
169
170<h3 id="allow-only-your-organization’s-mods">
171 Consentire solo i mod della tua organizzazione
172</h3>
173
174Per eseguire i mod della tua organizzazione e bloccare quelli portati dagli utenti, distribuisci le impostazioni della riga **Solo i mod della tua organizzazione** della [tabella dei criteri](#choose-how-much-to-allow), più `disableSideloadFlags`. Con questo `managed-settings.json` completo, Claude Code rifiuta i mod degli utenti, quindi nessuno dei loro hook viene eseguito, e il tuo mod di criteri viene eseguito prima degli altri mod:
175
176```json managed-settings.json theme={null}
177{
178 "extraKnownMarketplaces": {
179 "acme-tools": {
180 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }
181 }
182 },
183 "enabledPlugins": { "acme-guard@acme-tools": true },
184 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"],
185 "pluginConfigs": {
186 "cc-plugin-sec-default@builtin": {
187 "options": { "allowManagedModsOnly": true }
188 }
189 },
190 "disableSideloadFlags": true
191}
192```
193
194Ogni gruppo di chiavi svolge un compito:
195
196* **`extraKnownMarketplaces`, `enabledPlugins` e `prependPlugins`**: installano il tuo mod in modo che venga considerato tuo, e lo eseguono per primo con la protezione subito dopo. [Installare i mod della tua organizzazione e impostare l'ordine](#install-your-organizations-mods) descrive la directory a cui puntano queste chiavi.
197* **`pluginConfigs`**: imposta l'opzione `allowManagedModsOnly` della protezione, così Claude Code rifiuta i mod degli utenti. I loro hook delle impostazioni, le righe di stato e `/goal` continuano a funzionare.
198* **`disableSideloadFlags`**: consulta [`disableSideloadFlags`](/docs/it/settings-reference#disablesideloadflags) per i flag che rifiuta all'avvio
199
200Per verificare il criterio su una macchina di test, nella tua shell avvia una sessione con `claude --debug` e leggi il log di debug:
201
202* **Il tuo mod**: la sua riga `hooks module` contiene `tier prepend`
203* **Un mod installato dall'utente**: una riga riporta `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`. Una riga precedente indica che il modulo degli hook di quel mod è `loaded`, quindi cerca il rifiuto.
204* **Una directory di plugin**: `claude --plugin-dir ./any-mod` termina con un messaggio che inizia con `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`
205
206Per limitare anche i marketplace che gli utenti possono aggiungere, combina questo file con le tue [restrizioni sui marketplace](/docs/it/plugins/org#restrict-what-users-can-install).
207
208<h3 id="apply-your-plugin-controls-to-mods">
209 Applicare i controlli sui plugin ai mod
210</h3>
211
212Un mod è un plugin, quindi i modi in cui [gestisci i plugin per la tua organizzazione](/docs/it/plugins/org) si applicano anche a un plugin che contiene un mod:
213
214* **Vedere quali plugin vengono caricati nella tua flotta**: [Verifica e revisione](/docs/it/plugins/org#audit-and-review)
215* **Decidere quando un plugin che hai revisionato può aggiornarsi**: [Impostare il criterio di aggiornamento](/docs/it/plugins/org#set-update-policy)
216* **Assegnare a un gruppo un criterio diverso, ad esempio un gruppo pilota**: [Pianificare ciò che le impostazioni gestite non possono imporre](/docs/it/plugins/org#plan-for-what-managed-settings-can’t-enforce)
217* **Verificare quali app e tipi di sessione applicano le chiavi dei plugin**: [Quando ciascuna superficie applica le chiavi dei plugin](/docs/it/plugins/org#when-each-surface-applies-the-plugin-keys)
218* **Configurare CI e container**: [Predisporre container e CI](/docs/it/plugins/org#seed-containers-and-ci)
219* **Offrire mod che i tuoi utenti possono installare**: [Ospitare un marketplace](/docs/it/plugins/host-marketplace). Un mod che Claude Code copia da una sorgente GitHub, git, URL o npm viene considerato di un utente, non [della tua organizzazione](#install-your-organizations-mods).
169 220
170<h3 id="set-options-on-the-built-in-guard">221<h3 id="set-options-on-the-built-in-guard">
171 Impostare le opzioni sulla guardia incorporata222 Impostare le opzioni della protezione integrata
172</h3>223</h3>
173 224
174La guardia incorporata accetta due opzioni. Impostatele nelle impostazioni gestite sotto `pluginConfigs`, con chiave `cc-plugin-sec-default@builtin`, come l'esempio in [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading) fa.225La protezione integrata accetta delle opzioni. Impostale nelle impostazioni gestite sotto `pluginConfigs`, con la chiave `cc-plugin-sec-default@builtin`, come fa l'esempio in [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading).
175 226
176La tabella dà quello che i vostri utenti ottengono con ogni opzione non impostata e con essa impostata a `true`:227La tabella indica cosa ottengono i tuoi utenti con ciascuna opzione non impostata e impostata su `true`:
177 228
178| Opzione | Non impostata | `true` |229| Opzione | Non impostata | `true` |
179| :- | :- | :- |230| :- | :- | :- |
180| `allowManagedModsOnly` | I mod propri degli utenti vengono caricati | Solo i [mod della vostra organizzazione](#install-your-organizations-mods), e i mod incorporati in Claude Code, vengono caricati. Claude Code rifiuta ogni altro mod, incluso uno che un utente ha installato o nominato con `--plugin-dir`. |231| `allowManagedModsOnly` | I mod degli utenti vengono caricati | Vengono caricati solo [i mod della tua organizzazione](#install-your-organizations-mods) e i mod integrati in Claude Code. Claude Code rifiuta ogni altro mod, incluso uno installato da un utente o indicato con `--plugin-dir`. |
181| `allowModsToOverrideDenyRules` | Le regole di negazione hanno la precedenza sui mod degli utenti | Un mod di un utente che approva le chiamate di strumenti può approvare una chiamata che una regola `deny` rifiuta |232| `allowModsToOverrideDenyRules` | Le regole `deny` hanno la precedenza sui mod degli utenti | Un mod di un utente che approva le chiamate agli strumenti può approvare una chiamata che una regola `deny` rifiuta |
182 233
183Queste regole decidono se un'opzione ha effetto:234Queste regole stabiliscono se un'opzione ha effetto:
184 235
185* **L'id ha una sola ortografia qui**: Claude Code legge le opzioni solo sotto `cc-plugin-sec-default@builtin`. `prependPlugins` accetta anche `sec-default@builtin`, e `pluginConfigs` no.236* **L'id ha una sola forma qui**: Claude Code legge le opzioni solo sotto `cc-plugin-sec-default@builtin`. `prependPlugins` accetta anche `sec-default@builtin`, mentre `pluginConfigs` no.
186* **Solo le impostazioni gestite contano**: la stessa voce in un file di impostazioni utente, progetto o locale, o in un file passato con `--settings`, né imposta un'opzione né ne allenta una237* **Contano solo le impostazioni gestite**: la stessa voce in un file di impostazioni utente, di progetto o locale, o in un file passato con `--settings`, non imposta né allenta un'opzione
187* **La guardia deve caricarsi**: se impostate `prependPlugins`, [nominate la guardia nella lista](#install-your-organizations-mods). Dove la guardia non viene caricata, nessuna opzione si applica.238* **La protezione deve essere caricata**: se imposti `prependPlugins`, [indica la protezione nell'elenco](#install-your-organizations-mods). Dove la protezione non viene caricata, nessuna delle due opzioni si applica.
188* **La guardia fallisce chiusa**: se la guardia non può leggere le impostazioni gestite, rifiuta ogni mod di un utente al caricamento. Se non può controllare le regole di negazione per una chiamata che un mod di un utente ha approvato, rifiuta la chiamata.239* **La protezione fallisce in modo chiuso**: se la protezione non riesce a leggere le impostazioni gestite, rifiuta ogni mod degli utenti al caricamento. Se non riesce a verificare le regole `deny` per una chiamata approvata dal mod di un utente, rifiuta la chiamata.
189 240
190I [messaggi dalla guardia incorporata](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard) sono quello che i vostri utenti vedono quando una delle due opzioni si applica.241I [messaggi dalla protezione integrata](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard) sono ciò che vedono i tuoi utenti quando si applica una delle due opzioni.
191 242
192<h2 id="run-your-organization’s-own-mods">243<h2 id="run-your-organization’s-own-mods">
193 Eseguire i mod propri della vostra organizzazione244 Esegui i mod della tua organizzazione
194</h2>245</h2>
195 246
196Potete distribuire mod vostri a ogni utente, scegliere dove vengono eseguiti rispetto ai mod degli utenti, e usarne uno per applicare una politica.247Puoi distribuire i tuoi mod a ogni utente, scegliere dove vengono eseguiti rispetto ai mod degli utenti e usarne uno per applicare un criterio.
197 248
198<h3 id="install-your-organizations-mods">249<h3 id="install-your-organizations-mods">
199 Installare i mod della vostra organizzazione e impostare l'ordine250 Installa i mod della tua organizzazione e imposta l'ordine
200</h3>251</h3>
201 252
202I mod della vostra organizzazione vengono caricati dove i mod degli utenti non lo fanno e possono essere eseguiti prima di loro, quindi Claude Code deve essere in grado di dire che un mod viene da voi. Lo tratta come della vostra organizzazione solo quando tutti questi sono veri:253I mod della tua organizzazione vengono caricati dove quelli degli utenti non lo sono e possono essere eseguiti prima di essi, quindi Claude Code deve essere in grado di capire che un mod proviene da te. Considera un mod come appartenente alla tua organizzazione solo quando tutte queste condizioni sono vere:
203 254
204* Le impostazioni gestite `enabledPlugins` impostano il plugin del mod a `true`255* L'impostazione gestita `enabledPlugins` imposta il plugin del mod su `true`
205* Le impostazioni gestite nominano il [marketplace](/docs/it/plugins/create-marketplace) del plugin come una directory sulla macchina dell'utente, per percorso assoluto. Una voce `extraKnownMarketplaces` fa questo e registra il marketplace per l'utente anche.256* Le impostazioni gestite indicano il [marketplace](/docs/it/plugins/create-marketplace) del plugin come una directory sulla macchina dell'utente, tramite percorso assoluto. Una voce `extraKnownMarketplaces` fa proprio questo e registra anche il marketplace per l'utente.
206* Il marketplace elenca il plugin per un percorso relativo, quindi Claude Code lo [carica in place](/docs/it/plugins/loading#in-place-and-copied-plugins) da quella directory257* Il marketplace elenca il plugin tramite un percorso relativo, così Claude Code [lo carica sul posto](/docs/it/plugins/loading#in-place-and-copied-plugins) da quella directory
207 258
208Per soddisfarli, fate in modo che la vostra gestione dei dispositivi copi la directory del marketplace allo stesso percorso su ogni macchina. Rendete la directory e ogni directory sopra di essa scrivibile solo da un amministratore, come il file di impostazioni gestite. Chiunque possa scrivere lì può riscrivere il vostro mod. Le impostazioni gestite che consegnate dalla console di amministrazione di claude.ai possono portare le chiavi, ma non possono mettere la directory su una macchina.259Per soddisfarle, fai in modo che il tuo sistema di gestione dei dispositivi copi la directory del marketplace nello stesso percorso su ogni macchina. Rendi la directory e ogni directory sovrastante scrivibili solo da un amministratore, come il file delle impostazioni gestite. Chiunque possa scrivere lì può riscrivere il tuo mod. Le impostazioni gestite che distribuisci dalla console di amministrazione di claude.ai possono contenere le chiavi, ma non possono collocare la directory su una macchina.
209 260
210La directory contiene il manifesto del marketplace e il plugin:261La directory contiene il manifest del marketplace e il plugin:
211 262
212```text theme={null}263```text theme={null}
213/opt/acme/claude-plugins/264/opt/acme/claude-plugins/
222 └── register.js273 └── register.js
223```274```
224 275
225Il manifesto elenca il plugin per il suo percorso relativo a quella directory:276Il manifest elenca il plugin tramite il suo percorso relativo a quella directory:
226 277
227```json /opt/acme/claude-plugins/.claude-plugin/marketplace.json theme={null}278```json /opt/acme/claude-plugins/.claude-plugin/marketplace.json theme={null}
228{279{
234}285}
235```286```
236 287
237Un plugin che Claude Code copia nella sua cache conta come di un utente, anche quando le impostazioni gestite `enabledPlugins` lo abilitano. Questo copre ogni plugin da una fonte GitHub, git, URL o npm. Il suo mod viene eseguito tra i mod degli utenti, `prependPlugins` e `appendPlugins` lo saltano, e non viene caricato sotto `allowManagedModsOnly` o `allowManagedHooksOnly`. Il log di debug dell'utente ha una riga che inizia con l'id del plugin e `is enabled by managed settings, but`.288Un plugin che Claude Code copia nella sua cache viene considerato di un utente, anche quando l'impostazione gestita `enabledPlugins` lo abilita. Questo vale per ogni plugin proveniente da una sorgente GitHub, git, URL o npm. Il suo mod viene eseguito tra i mod degli utenti, `prependPlugins` e `appendPlugins` lo ignorano e non viene caricato con `allowManagedModsOnly` o `allowManagedHooksOnly`. Il log di debug dell'utente contiene una riga che inizia con l'id del plugin e `is enabled by managed settings, but`.
238 289
239Claude Code genera un evento ogni volta che sta per agire, come eseguire uno strumento, e lo passa a ogni mod a turno. Un mod che conta come vostro [viene eseguito prima dei mod degli utenti](/docs/it/plugins/mods/events#the-order-mods-run-in) anche quando non lo elencate da nessuna parte. Per impostare il suo posto, elencate il suo id in una di due impostazioni. L'id è il nome del plugin, `@`, e il nome del marketplace, come `acme-guard@acme-tools`.290Claude Code genera un evento ogni volta che sta per compiere un'azione, come eseguire uno strumento, e lo passa a ciascun mod a turno. Un mod che viene considerato tuo [viene eseguito prima dei mod degli utenti](/docs/it/plugins/mods/events#the-order-mods-run-in) anche se non lo elenchi da nessuna parte. Per impostarne la posizione, elenca il suo id in una delle due impostazioni. L'id è il nome del plugin, `@` e il nome del marketplace, ad esempio `acme-guard@acme-tools`.
240 291
241* **`prependPlugins`**: il vostro mod vede ogni evento prima di qualsiasi mod di un utente e ogni risultato dopo. Può cambiare l'evento, rifiutarlo, o saltare i mod degli utenti.292* **`prependPlugins`**: il tuo mod vede ogni evento prima di qualsiasi mod degli utenti e ogni risultato dopo. Può modificare l'evento, rifiutarlo o saltare i mod degli utenti.
242* **`appendPlugins`**: il vostro mod viene eseguito dopo ogni mod di un utente, quindi vede solo gli eventi che quei mod passano, nella forma che li passano293* **`appendPlugins`**: il tuo mod viene eseguito dopo ogni mod degli utenti, quindi vede solo gli eventi che quei mod trasmettono, nella forma in cui li trasmettono
243 294
244Questo esempio dichiara il marketplace `acme-tools` a `/opt/acme/claude-plugins`, abilita `acme-guard` da esso, e esegue quel mod per primo, con la guardia incorporata dopo:295Questo esempio dichiara il marketplace `acme-tools` in `/opt/acme/claude-plugins`, abilita `acme-guard` da esso ed esegue quel mod per primo, seguito dalla protezione integrata:
245 296
246```json managed-settings.json theme={null}297```json managed-settings.json theme={null}
247{298{
255}306}
256```307```
257 308
258Ogni chiave fa un lavoro:309Ogni chiave svolge un compito:
259 310
260* **`extraKnownMarketplaces`**: nomina la directory che contiene il marketplace `acme-tools`. `path` è il percorso assoluto della directory che contiene `.claude-plugin/marketplace.json`.311* **`extraKnownMarketplaces`**: indica la directory che contiene il marketplace `acme-tools`. `path` è il percorso assoluto della directory che contiene `.claude-plugin/marketplace.json`.
261* **`enabledPlugins`**: attiva `acme-guard` per ogni utente che riceve queste impostazioni gestite312* **`enabledPlugins`**: attiva `acme-guard` per ogni utente che riceve queste impostazioni gestite
262* **`prependPlugins`**: mette `acme-guard` per primo e la guardia incorporata per secondo, entrambi prima di qualsiasi mod che un utente installa. Claude Code segue l'ordine che elencate.313* **`prependPlugins`**: mette `acme-guard` al primo posto e la protezione integrata al secondo, entrambi prima di qualsiasi mod installato da un utente. Claude Code segue l'ordine che elenchi.
263 314
264Per confermare che la macchina di un utente ha ricevuto le impostazioni, vedere [Verificare che una politica sia in vigore](/docs/it/managed-settings#check-that-a-policy-is-in-force).315Per verificare che la macchina di un utente abbia ricevuto le impostazioni, consulta [Verifica che un criterio sia in vigore](/docs/it/managed-settings#check-that-a-policy-is-in-force).
265 316
266Per confermare dove il mod viene eseguito, avviate una sessione su quella macchina con `claude --debug` e cercate nel [log di debug](/docs/it/plugins/mods/troubleshoot#read-the-debug-log) l'id del mod:317Per verificare dove viene eseguito il mod, avvia una sessione su quella macchina con `claude --debug` e cerca l'id del mod nel [log di debug](/docs/it/plugins/mods/troubleshoot#read-the-debug-log):
267 318
268* **`hooks module acme-guard@acme-tools loaded`, con `tier prepend`**: il mod conta come della vostra organizzazione e viene eseguito per primo319* **`hooks module acme-guard@acme-tools loaded`, con `tier prepend`**: il mod viene considerato della tua organizzazione e viene eseguito per primo
269* **La stessa riga con `tier user`**: Claude Code lo tratta come un mod di un utente. Una seconda riga, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, dice che la lista lo ha saltato.320* **La stessa riga con `tier user`**: Claude Code lo tratta come un mod di un utente. Una seconda riga, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, indica che l'elenco lo ha ignorato.
270 321
271Queste regole decidono quali id nelle due liste hanno effetto:322Queste regole stabiliscono quali id nei due elenchi hanno effetto:
272 323
273* **La lista sostituisce il valore predefinito**: quando impostate `prependPlugins` nelle impostazioni gestite, nominate `sec-default@builtin` in essa per mantenere la guardia incorporata. La guardia è incorporata e non ha bisogno di una voce `enabledPlugins`.324* **L'elenco sostituisce il valore predefinito**: quando imposti `prependPlugins` nelle impostazioni gestite, includi `sec-default@builtin` per mantenere la protezione integrata. La protezione è integrata e non richiede una voce `enabledPlugins`.
274* **I vostri id devono contare come vostri**: nelle impostazioni gestite, Claude Code salta un id il cui plugin non soddisfa le tre condizioni per un mod di un'organizzazione325* **I tuoi id devono essere considerati tuoi**: nelle impostazioni gestite, Claude Code ignora un id il cui plugin non soddisfa le condizioni per un mod dell'organizzazione
275* **I repository non possono impostarli**: Claude Code legge entrambe le impostazioni dalle impostazioni gestite e mai da un file di impostazioni di un repository. Un utente può impostarli in `~/.claude/settings.json` per ordinare i loro mod propri solo su una macchina senza impostazioni gestite, e solo quando non sono connessi con un piano Team o Enterprise. Ovunque altro, Claude Code ignora entrambe le chiavi nelle impostazioni dell'utente. Una lista lì né aggiunge né rimuove la guardia incorporata.326* **I repository non possono impostarle**: Claude Code legge entrambe le impostazioni dalle impostazioni gestite e mai dal file di impostazioni di un repository. Un utente può impostarle in `~/.claude/settings.json` per ordinare i propri mod solo su una macchina senza impostazioni gestite, e solo quando non ha effettuato l'accesso con un piano Team o Enterprise. In qualsiasi altro caso, Claude Code ignora entrambe le chiavi nelle impostazioni utente. Un elenco lì non aggiunge né rimuove la protezione integrata.
276 327
277<h3 id="enforce-a-policy-with-a-mod-of-your-own">328<h3 id="enforce-a-policy-with-a-mod-of-your-own">
278 Applicare una politica con un mod vostro329 Applica un criterio con un tuo mod
279</h3>330</h3>
280 331
281Per tenere fuori ogni mod di un utente, non avete bisogno di un mod vostro. Impostate [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Scrivete un mod di politica quando volete ammettere alcuni mod degli utenti e rifiutarne altri, o per registrare quello che i mod fanno.332Per escludere tutti i mod degli utenti, non hai bisogno di un tuo mod. Imposta [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Scrivi un mod di criteri quando vuoi consentire alcuni mod degli utenti e rifiutarne altri, oppure per registrare ciò che fanno i mod.
282 333
283Ogni volta che un altro mod sta per caricarsi, il vostro mod riceve la lista che `claude plugin validate` stampa, in un evento denominato [`plugin.register`](/docs/it/plugins/mods/reference#other-mods). Un mod in `prependPlugins` può leggere quella lista e rifiutare il mod. Può anche [agganciare qualsiasi chiamata dell'API dei mod per nome](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) per registrare o rifiutare quella chiamata per ogni altro mod. Il nome è il metodo senza il `$.`, quindi un aggancio su `fs.write` vede ogni chiamata `$.fs.write`.334Ogni volta che un altro mod sta per essere caricato, il tuo mod riceve l'elenco che `claude plugin validate` stampa, in un evento denominato [`plugin.register`](/docs/it/plugins/mods/reference#other-mods). Un mod in `prependPlugins` può leggere quell'elenco e rifiutare il mod. Può anche [gestire qualsiasi chiamata all'API dei mod per nome](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) per registrare o rifiutare quella chiamata per ogni altro mod. Il nome è il metodo senza `$.`, quindi un hook su `fs.write` vede ogni chiamata `$.fs.write`.
284 335
285Questo mod di politica rifiuta qualsiasi mod di un utente il cui codice proprio chiama `$.process.run` o `$.process.spawn`. Mantiene anche un log di audit, scrivendo ogni chiamata di strumento e ogni file che un mod scrive nel log di debug. Poiché viene eseguito per primo, il log registra quello che è stato richiesto, prima che qualsiasi mod di un utente lo cambi. Salvate come `acme-guard/hooks/register.js`:336Questo mod di criteri rifiuta qualsiasi mod di un utente il cui codice chiama `$.process.run` o `$.process.spawn`. Mantiene anche un log di audit, scrivendo nel log di debug ogni chiamata a uno strumento e ogni file scritto da un mod. Poiché viene eseguito per primo, il log registra ciò che è stato richiesto, prima che qualsiasi mod degli utenti lo modifichi. Salvalo come `acme-guard/hooks/register.js`:
286 337
287```javascript acme-guard/hooks/register.js theme={null}338```javascript acme-guard/hooks/register.js theme={null}
288// I metodi che nessun mod di un utente può chiamare, ognuno scritto namespace.method339// The methods no user's mod may call, each spelled namespace.method
289const BLOCKED_CALLS = ['process.run', 'process.spawn']340const BLOCKED_CALLS = ['process.run', 'process.spawn']
290 341
291export function register(on) {342export function register(on) {
292 // Viene eseguito ogni volta che un altro mod sta per caricarsi343 // Runs each time another mod is about to load
293 on('plugin.register', async ($, e, next) => {344 on('plugin.register', async ($, e, next) => {
294 // Mantieni le chiamate in quel mod il cui codice è sulla lista bloccata345 // Keep the calls in that mod's code that are on the blocked list
295 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))346 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))
296 if (e.tier === 'user' && blocked.length > 0) {347 if (e.tier === 'user' && blocked.length > 0) {
297 // Restituire refuse impedisce al mod di caricarsi, e il testo è il motivo348 // Returning refuse keeps the mod from loading, and the text is the reason
298 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }349 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }
299 }350 }
300 // Lascia caricare ogni altro mod351 // Let every other mod load
301 return next(e)352 return next(e)
302 })353 })
303 354
304 // Registra ogni chiamata di strumento, poi lasciala andare avanti invariata355 // Record each tool call, then let it go ahead unchanged
305 on('tool.call', async ($, e, next) => {356 on('tool.call', async ($, e, next) => {
306 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })357 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })
307 return next(e)358 return next(e)
308 })359 })
309 360
310 // Registra quale mod ha scritto un file, poi il percorso, tra virgolette perché il mod lo ha scelto361 // Record which mod wrote a file, then the path, quoted because the mod chose it
311 on('fs.write', async ($, e, next) => {362 on('fs.write', async ($, e, next) => {
312 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })363 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })
313 return next(e)364 return next(e)
317 368
318Il file registra tre hook:369Il file registra tre hook:
319 370
320* **`plugin.register`**: decide se un altro mod viene caricato. Rifiuta un mod di un utente che chiama un metodo bloccato e passa ogni altro mod.371* **`plugin.register`**: decide se un altro mod viene caricato. Rifiuta un mod di un utente che chiama un metodo bloccato e lascia passare ogni altro mod.
321* **`tool.call`**: scrive una riga come `audit tool.call Bash` nel log di debug per ogni chiamata di strumento, e non cambia nulla372* **`tool.call`**: scrive nel log di debug una riga come `audit tool.call Bash` per ogni chiamata a uno strumento, senza modificare nulla
322* **`fs.write`**: scrive una riga come `audit fs.write by reader "/tmp/notes.md"` per ogni chiamata `$.fs.write` che un altro mod fa, e non cambia nulla. Il nome del mod viene per primo e il percorso è tra virgolette, quindi un percorso che un mod sceglie non può passare per un altro campo della riga.373* **`fs.write`**: scrive una riga come `audit fs.write by reader "/tmp/notes.md"` per ogni chiamata `$.fs.write` effettuata da un altro mod, senza modificare nulla. Il nome del mod viene prima e il percorso è tra virgolette, così un percorso scelto da un mod non può spacciarsi per un altro campo della riga.
323 374
324L'hook `plugin.register` legge due campi dell'evento:375L'hook `plugin.register` legge due campi dell'evento:
325 376
326* **`e.tier`**: dove il mod verrebbe eseguito, uno di `prepend`, `user`, `append`, o `builtin`. Ogni mod che una persona installa è `user`.377* **`e.tier`**: dove verrebbe eseguito il mod, uno tra `prepend`, `user`, `append` o `builtin`. Ogni mod installato da una persona è `user`.
327* **`e.uses.calls`**: i metodi dell'API dei mod che il mod chiama, ognuno scritto `namespace.method` come `process.run`, senza il `$.` che `claude plugin validate` stampa378* **`e.uses.calls`**: i metodi dell'API dei mod che il mod chiama, ciascuno scritto come `namespace.method`, ad esempio `process.run`, senza il `$.` che `claude plugin validate` stampa
328 379
329Quando un utente installa un mod che chiama `$.process.run`, il mod non viene caricato, e il suo log di debug ha una riga che termina con `refused by acme-guard:` e il vostro motivo. Il rifiuto raggiunge anche la trascrizione in una [sessione che ricarica a caldo una directory di plugin](/docs/it/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Per bloccare una chiamata senza rifiutare l'intero mod, restituite `{ deny: 'your reason' }` da un aggancio sul nome di quella chiamata.380Quando un utente installa un mod che chiama `$.process.run`, il mod non viene caricato e il suo log di debug contiene una riga che termina con `refused by acme-guard:` seguita dal tuo motivo. Il rifiuto compare anche nella trascrizione in una [sessione che ricarica a caldo una directory di plugin](/docs/it/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Per bloccare una chiamata senza rifiutare l'intero mod, restituisci `{ deny: 'your reason' }` da un hook sul nome di quella chiamata.
330 381
331Per inviare le righe di audit da qualche parte diversa dal log di debug, chiamate `$.http.fetch` dagli stessi hook.382Per inviare le righe di audit in un posto diverso dal log di debug, chiama `$.http.fetch` dagli stessi hook.
332 383
333Una sessione può funzionare senza il vostro mod. Se il thread di lavoro che esegue i mod installati [si arresta tre volte](/docs/it/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), Claude Code scarica ogni mod che non è incorporato, incluso il vostro, finché l'utente non esegue `/reload-plugins` o non avvia una nuova sessione. E un utente che avvia Claude Code con `--safe-mode` viene eseguito senza mod installati, incluso il vostro.384Una sessione può essere eseguita senza il tuo mod. Se il thread di lavoro che esegue i mod installati [si arresta in modo anomalo tre volte](/docs/it/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), Claude Code scarica ogni mod non integrato, compreso il tuo, finché l'utente non esegue `/reload-plugins` o avvia una nuova sessione. Inoltre, un utente che avvia Claude Code con `--safe-mode` lavora senza mod installati, compreso il tuo.
334 385
335[Creare un mod](/docs/it/plugins/mods/create) copre i file che un mod ha bisogno. [Testare un mod che giudica altri mod](/docs/it/plugins/mods/test#test-a-mod-that-judges-other-mods) ha un file di test per questo mod di politica.386[Crea un mod](/docs/it/plugins/mods/create) descrive i file di cui un mod ha bisogno. [Testa un mod di criteri](/docs/it/plugins/mods/test#test-a-mod-that-judges-other-mods) contiene un file di test per questo mod di criteri.
336 387
337<h4 id="refuse-mods-when-your-check-fails">388<h4 id="refuse-mods-when-your-check-fails">
338 Rifiutare i mod quando il vostro controllo fallisce389 Rifiuta i mod quando il tuo controllo fallisce
339</h4>390</h4>
340 391
341Se il vostro hook `plugin.register` genera un'eccezione o supera il suo limite di tempo, Claude Code salta l'hook, quindi il controllo fallisce aperto e il mod che stava controllando viene caricato. Per fallire chiuso e rifiutare i mod degli utenti, spostate il controllo in una funzione denominata e aggiungete un gestore `.catch` che restituisce il rifiuto. Questa versione del file mostra solo l'hook `plugin.register`, quindi mantenete i due hook di audit dalla prima versione in `register`:392Se il tuo hook `plugin.register` genera un'eccezione o supera il suo limite di tempo, Claude Code salta l'hook, quindi il controllo fallisce in modo aperto e il mod che stava controllando viene caricato. Per fallire in modo chiuso e rifiutare i mod degli utenti, sposta il controllo in una funzione con nome e aggiungi un gestore `.catch` che restituisca il rifiuto. Questa versione del file mostra solo l'hook `plugin.register`, quindi mantieni in `register` i due hook di audit della prima versione:
342 393
343```javascript acme-guard/hooks/register.js theme={null}394```javascript acme-guard/hooks/register.js theme={null}
344const BLOCKED_CALLS = ['process.run', 'process.spawn']395const BLOCKED_CALLS = ['process.run', 'process.spawn']
345 396
346// Lo stesso controllo di prima, spostato in una funzione propria397// The same check as before, moved into a function of its own
347async function checkMod($, e, next) {398async function checkMod($, e, next) {
348 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))399 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))
349 if (e.tier === 'user' && blocked.length > 0) {400 if (e.tier === 'user' && blocked.length > 0) {
353}404}
354 405
355export function register(on) {406export function register(on) {
356 // Il gestore viene eseguito solo quando checkMod genera un'eccezione o supera il suo limite di tempo407 // The handler runs only when checkMod throws or exceeds its time limit
357 on('plugin.register', checkMod).catch(async ($, e, next) => {408 on('plugin.register', checkMod).catch(async ($, e, next) => {
358 // Lascia caricare i mod della vostra organizzazione e i mod incorporati409 // Let your organization's mods and built-in mods load
359 if (e.tier !== 'user') return next(e)410 if (e.tier !== 'user') return next(e)
360 // Rifiuta il mod dell'utente che non poteva essere controllato411 // Refuse the user's mod that couldn't be checked
361 return { refuse: 'Acme policy check failed, so this mod was not loaded' }412 return { refuse: 'Acme policy check failed, so this mod was not loaded' }
362 })413 })
363}414}
364```415```
365 416
366Con il gestore in place, un mod che stava per essere controllato quando il controllo ha generato un'eccezione o ha superato il tempo limite non viene caricato, e la riga di rifiuto porta il secondo motivo, come in `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Il gestore passa ogni mod al di fuori del tier `user` a `next(e)`, quindi un controllo fallito non ferma i mod che la vostra organizzazione elenca. [Gestire un hook che fallisce](/docs/it/plugins/mods/events#handle-a-hook-that-fails) copre `.catch` per altri eventi.417Con il gestore in funzione, un mod che era in fase di controllo quando il controllo ha generato un'eccezione o è scaduto non viene caricato, e la riga di rifiuto riporta il secondo motivo, come in `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Il gestore passa a `next(e)` ogni mod al di fuori del livello `user`, quindi un controllo fallito non blocca i mod elencati dalla tua organizzazione. [Gestisci un hook che fallisce](/docs/it/plugins/mods/events#handle-a-hook-that-fails) descrive `.catch` per altri eventi.
367 418
368<h2 id="next-steps">419<h2 id="next-steps">
369 Prossimi passi420 Passaggi successivi
370</h2>421</h2>
371 422
372* [Sicurezza dei plugin](/docs/it/plugins/security): quello che qualsiasi plugin può fare sulla macchina di un utente, e come esaminarne uno prima che sia installato423* [Sicurezza dei plugin](/docs/it/plugins/security): cosa può fare qualsiasi plugin sul computer di un utente e come esaminarne uno prima che venga installato
373* [Panoramica dei mod](/docs/it/plugins/mods/overview): cosa è un mod e come si confronta con hook, skills e server MCP424* [Panoramica dei mod](/docs/it/plugins/mods/overview): cos'è un mod e come si confronta con gli hook, le skill e i server MCP
374* [L'ordine in cui i mod vengono eseguiti](/docs/it/plugins/mods/events#the-order-mods-run-in): come `prependPlugins` e `appendPlugins` si adattano ai mod degli utenti425* [L'ordine in cui vengono eseguiti i mod](/docs/it/plugins/mods/events#the-order-mods-run-in): come `prependPlugins` e `appendPlugins` si combinano con i mod degli utenti
375* [Impostazioni e variabili di ambiente](/docs/it/plugins/mods/reference#settings-and-environment-variables): ogni impostazione nominata su questa pagina in una tabella426* [Impostazioni e variabili d'ambiente](/docs/it/plugins/mods/reference#settings-and-environment-variables): tutte le impostazioni citate in questa pagina in un'unica tabella