AIDive

Pack video

Mod di Claude Code: verdetto con fonti, misure e checklist del lunedì

9 min di lettura

In breve

  • Tieni tre mod su dieci: collision-guard, model-router e auto-handoff. Ognuno ha mostrato un sovraccarico misurato vicino a zero su un compito di lettura headless, e ognuno risolve un problema che sai nominare.
  • Elimina next-steps. Fa il fork della sessione dopo ogni risposta idonea e nel nostro test è costato +250 token di output e +2850 ms per turno, anche sulle superfici che non disegnano mai i suoi suggerimenti.
  • Elimina cache-keeper (+1589 ms, ping a pagamento al modello), recording-mode (maschera ciò che viene mostrato, non la cronologia salvata) e session-bookmarks (un segnalibro che può chiamare il modello, avviare processi e scrivere file).
  • Elimina goal-meter, repo-heatmap e flight-recorder, a meno che ti piaccia l'aspetto visivo. Costano quasi nulla e non hanno mostrato benefici misurati.
  • Ogni mod di guardia fallisce in modo aperto per impostazione predefinita. Senza un gestore .catch, una guardia che lancia un errore viene saltata e il comando viene eseguito.
  • I mod non sono in un sandbox. Leggi l'output di claude plugin validate prima di installarne uno.

Cosa dicono le misure

Hype e scala. Il tweet di lancio aveva 4,138,918 visualizzazioni, 20,021 like e 13,440 segnalibri quando lo abbiamo catturato il 2026-10-03 s11. Il catalogo della community elenca 1018 mod in 873 repository candidati, scansionati il 2026-10-03 su Claude Code 2.1.288 s9.

Un mod è una funzione che si aggancia a un evento. Può girare prima, dopo, al posto dell'evento, oppure avvolgerlo s1. I mod richiedono Claude Code v2.1.287 o successivo e sono attivi per impostazione predefinita s2.

Prima la sicurezza. Parole di Anthropic: "Mods run with the same access to your machine as Claude Code itself. They aren't sandboxed" s1. Un processo avviato da un mod gira fuori dal sandbox anche con il sandbox attivo s2. Con Read(.env) negato, un mod può comunque leggere quel file con $.fs.read o avviare un programma che lo fa s6. Nella scansione del catalogo, 409 mod eseguono processi host, 167 scrivono file, 150 accedono alla rete e 28 non superano la validazione su questa versione s9.

Portata contro promessa. Nel nostro audit statico, session-bookmarks chiama $.model.complete, $.process.run e $.fs.write, la portata maggiore del gruppo per una funzione di segnalibri. next-steps aveva l'impronta più piccola: niente fs, niente process, niente env. claude plugin validate stampa le righe calls: e env reads: usate per questo audit s6.

Il mod di punta ha un costo per turno. next-steps fa il fork della sessione con $.model.fork su turn.complete, e il README dice che il fork "costs about one short reply" s10. I suggerimenti vengono disegnati solo nel terminale; le altre superfici non mostrano nulla s10. Il fork non ha opzioni per disattivarlo. Nel nostro run headless ha aggiunto +250 token di output e +2850 ms, con il fork che finiva nell'uso della sessione mentre nulla veniva mostrato s10.

Limiti documentati. Il tempo di esecuzione di un hook è limitato a 10 secondi per evento, letture e scritture di $.fs a 4 MiB per file e $.store a 4 MiB di JSON in totale s3.

Le guardie falliscono in modo aperto. La doc dice che un hook senza gestore .catch che lancia un errore, va in timeout o restituisce il formato sbagliato viene saltato, e al suo posto gira il gestore successivo s7. Lo abbiamo riprodotto: una guardia Bash che lancia un errore, senza .catch, ha lasciato che touch ./marker-failopen.txt creasse il file. La stessa guardia con un .catch che restituisce {deny} non ha creato alcun file. Un resoconto sul campo ha trovato una guardia attiva e in esecuzione che non faceva nulla, mentre plugin list mostrava ancora "enabled" s8.

Un bug aperto su 2.1.288: un deny restituito dopo await next(e) non ferma lo strumento, e il file è stato scritto 3 volte su 3 mentre al modello veniva detto che la scrittura era fallita s5.

Mod contro hook di settings. Un hook di settings avvia un processo per chiamata. Abbiamo misurato l'avvio a 2.2 ms per un binario true, 8.3 ms per bash -c 'exit 0', 26.1 ms per python3 -c 'pass' e 43.1 ms per node -e ''. Su 5,993 chiamate a strumenti a settimana, l'hook node costa 258 s. Un mod in-process non paga nulla di tutto questo. La doc raccomanda un hook di settings quando hai già uno script che blocca, consente o registra un evento s2. Un resoconto di migrazione è passato da 27 hook shell a 5 mod s8.

Il mascheramento è solo visivo. recording-mode riscrive ciò che ui.render disegna. ~/.claude/history.jsonl conserva il prompt come digitato, e un tester ha trovato la sua stringa canarino 7 volte nelle voci queue-operation del transcript s5.

Dove i mod non girano. La modalità headless claude -p e l'Agent SDK eseguono gli hook ma non disegnano nulla; una sessione Desktop WSL non esegue nessuno dei due s2.

Fiducia nel catalogo. Un tester ha pubblicato un mod il cui pulsante avviava un programma con $.process.run e scriveva un file nella sua cartella home. Si è installato come qualsiasi altro mod, senza alcun avviso s5. Era una proof of concept auto-pubblicata, non un attacco visto in natura.

Misure

Corpus: gli ultimi 7 giorni di una configurazione reale, 85 sessioni, 4 progetti, 882 prompt utente, 11,010 turni dell'assistente, 5,993 chiamate a strumenti. Benchmark eseguito su Claude Code 2.1.288 (macOS).

config durata ms Δdurata token output Δoutput compito ok
baseline 3980 0 247 0 3/3
next-steps 6830 +2850 497 +250 3/3
cache-keeper 5569 +1589 367 +120 3/3
recording-mode 8240 +4260* 598 +351* 3/3
goal-meter 3722 -258 244 -3 3/3
collision-guard 4565 +585 376 +129* 3/3
repo-heatmap 4119 +139 257 +10 3/3
flight-recorder 3949 -31 261 +14 3/3
model-router 3698 -282 238 -9 3/3
session-bookmarks 4152 +172 235 -12 3/3
auto-handoff 4051 +71 248 +1 3/3
Le righe contrassegnate con * sono probabilmente varianza della risposta. recording-mode era disattivato durante il run e non inietta nulla quando è disattivato.

Protocollo per rifarlo:

  1. Installa un mod alla volta e conferma che supera claude plugin validate.
  2. Esegui lo stesso compito in sola lettura in headless con claude -p su haiku, 3 ripetizioni per configurazione, e prendi la mediana di durata e token di output.
  3. Cita solo le differenze di durata e di token di output. Il costo in USD varia con l'ordine della cache tra le configurazioni, ignoralo.
  4. Per il costo di avvio, cronometra 30 avvii del corpo di ogni hook, prendi la mediana e moltiplica per il tuo numero settimanale di chiamate a strumenti.

Da fare lunedì

  • Esegui claude plugin validate su ogni mod installato e leggi le righe calls: e env reads:.
  • Disattiva ogni mod la cui portata (process, scrittura fs, chiamata al modello) è più grande del suo compito.
  • Disattiva next-steps se lavori soprattutto in headless, nel pannello VS Code o con l'SDK, dove i suoi suggerimenti non vengono mai disegnati.
  • Aggiungi un gestore .catch che restituisce { deny: ... } a ogni mod di guardia su cui fai affidamento.
  • Dimostra che ogni guardia fallisce in modo chiuso: falla lanciare un errore, esegui un comando che crea un file marcatore e verifica che il file non compaia.
  • Non contare su un mod di mascheramento per tenere i segreti fuori da ~/.claude/history.jsonl o dal transcript. Controlla entrambi su disco.
  • Sostituisci gli hook shell per chiamata che avviano node o python con un mod in-process, o con un binario compilato, se il costo di avvio si accumula sulle tue chiamate settimanali a strumenti.
  • Impara gli interruttori: disattivare un mod in /plugin, --safe-mode per una sessione, "disableAllHooks": true in ~/.claude/settings.json per ovunque.

Per andare oltre

  • Costruisci il tuo: una guida pratica a un mod di circa 80 righe, con le trappole che contano (lo stato a livello di modulo si azzera al hot reload, quindi tieni i dati in $.state) s4.
  • Decidi tra mod, hook, skill o settings partendo dalla tua cronologia: un praticante suggerisce di analizzare prima i log di sessione per trovare i problemi ricorrenti s12.
  • Leggi l'elenco completo di eventi e limiti prima di scrivere una guardia s3.
  • La gestione a livello di organizzazione è fuori tema qui. L'unico punto per uno sviluppatore solo: sec-default si carica quando la macchina ha settings gestiti o hai effettuato l'accesso con un piano Team o Enterprise, e non aggiunge altre restrizioni s6.
  • L'origine del design, incluso un bug di isolamento dei worktree corretto in 2.1.288 e gli interni del runtime, si trova nel thread aperto s5.
  • I mod di esempio di Anthropic (token-weather, blast-radius, replay-theater) sono elencati come condivisi senza supporto s2.

Fonti

FAQ

I mod sono in un sandbox?

No. Anthropic dice che i mod girano con lo stesso accesso alla tua macchina di Claude Code stesso s1. Anche i programmi avviati da un mod girano fuori dal sandbox s2.

Cosa succede se la mia guardia va in crash?

Senza gestore .catch viene saltata e il comando viene eseguito s7. Aggiungi un .catch che restituisce { deny: ... } così fallisce in modo chiuso.

Un mod costa token?

Solo se chiama il modello. Dei dieci che abbiamo eseguito, next-steps e cache-keeper hanno mostrato un costo misurabile; gli altri non hanno mostrato un sovraccarico solido nel nostro run.

Come disattivo rapidamente i mod?

Disattivane uno in /plugin, avvia una sessione con --safe-mode, oppure imposta "disableAllHooks": true in ~/.claude/settings.json s2. Nessuno di questi ferma i mod integrati.

Posso controllare cosa fa un mod prima di installarlo?

Sì. claude plugin validate elenca gli hook, le chiamate API e le variabili d'ambiente che legge s6.