“Ogni attrezzo che lasci collegato assorbe corrente. Un banco con dodici macchine accese a vuoto è un banco che fa saltare il proprio salvavita.”
9. enabledPlugins: disattiva, non disinstallare
Cosa fa: stabilisce quali plugin installati si caricano all'avvio della sessione. Perché conta: ogni plugin attivo carica i suoi hook, il contenuto dei SKILL.md e gli schemi dei tool nel tuo budget di contesto prima ancora che tu abbia scritto qualcosa. L'articolo racconta di essere passato da 14 plugin attivi a 4.
{
"enabledPlugins": {
"some-plugin@marketplace": false
}
}Impostare un plugin su false lo mantiene installato ma non caricato; riattivalo per sessione con /plugin enable quando ti serve davvero.
10. permissions.deny, e il bug da conoscere
Cosa fa: impedisce a Claude di eseguire tool specifici o leggere file specifici, con l'intento di prevenire rm -rf, la lettura di .env o scritture fuori dal progetto.
{
"permissions": {
"deny": ["Read(./.env)", "Bash(rm -rf:*)"]
}
}- Aggiungi anche un livello a livello di filesystem: chmod 600 .env, così il sistema operativo rifiuta anche se una regola deny non scatta.
- Verifica con /permissions dentro Claude Code; se le tue regole non compaiono, riavvia la sessione.
11. hooks.SessionStart: carica solo ciò che serve a questa directory
Cosa fa: SessionStart scatta quando apri Claude Code in una directory; può eseguire qualsiasi cosa: stampare info d'ambiente, controllare lo stato git, iniettare un file di contesto. Perché conta: la maggior parte delle persone inietta troppo, facendo crescere CLAUDE.md a migliaia di token perché ogni regola di progetto ci è finita dentro. SessionStart ti permette di caricare solo le regole rilevanti per il branch o la directory correnti.
{
"hooks": {
"SessionStart": [
{ "command": "cat .claude/context-$(git branch --show-current).md 2>/dev/null" }
]
}
}Ogni branch carica il proprio piccolo file di contesto, così il budget smette di dissanguarsi. (Verifica lo schema esatto degli hook sulla documentazione corrente; la forma della config degli hook cambia tra le versioni.)
12. disableAllHooks: l'interruttore d'emergenza
Cosa fa: l'articolo descrive un singolo interruttore che disattiva tutti gli hook in una volta. Perché conta: quando Claude Code si comporta in modo strano (comandi fantasma, blocchi all'avvio, scritture misteriose) un hook difettoso è una causa comune, e spegnerli tutti insieme è più rapido che bisecarli uno alla volta.
{
"disableAllHooks": true
}- Tienilo spento normalmente. Quando qualcosa si rompe, attivalo, riavvia e guarda se il problema sparisce.
- Se sì, riattiva gli hook uno alla volta; se no, il bug è altrove. (Questa chiave non è verificata; controlla la documentazione corrente per il nome esatto.)
13. model: l'override per progetto
Dove: .claude/settings.json alla radice del progetto. Cosa fa: imposta il modello predefinito per quel progetto, sovrascrivendo la tua scelta globale. Perché conta: la gente imposta globalmente il modello più profondo per il lavoro difficile, poi apre un progetto fatto per lo più di markdown o script shell e paga tariffe di fascia alta per un lavoro che un modello più economico gestisce benissimo.
{
"model": "claude-haiku-4-5"
}Il livello progetto vince. Apri il progetto, ottieni il modello giusto, vai avanti.
14. mcpServers: usa il flag enabled
Cosa fa: i server MCP collegano Claude a strumenti esterni, e ogni server connesso carica il suo schema completo di tool nel contesto. Perché conta: la gente collega server per un test e non li scollega mai; l'articolo stima che ogni server inattivo costi comunque schema di contesto a ogni avvio di sessione. Tienili configurati ma non caricati con un flag enabled.
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["-y", "@scope/my-mcp-server"],
"enabled": false
}
}
}Metti enabled su true per sessione quando ti serve. (Verifica che il flag enabled sia rispettato nella tua versione; le chiavi esatte della config MCP variano.)
15. cleanupPeriodDays: la cache di cui nessuno parla
Cosa fa: imposta per quanti giorni Claude Code conserva trascrizioni, log di debug e dati di sessione intermedi (default 30). Perché conta: le funzionalità che imparano dalla tua cronologia, e il tuo grep futuro nelle vecchie sessioni, possono vedere indietro solo fino a questa finestra. Una finestra più lunga dà più segnale a un piccolo costo in disco.
{
"cleanupPeriodDays": 180
}Una riga per ciascuno
- enabledPlugins e mcpServers: tieni le cose installate/configurate ma impostate su false/disabilitate, così non prosciugano in anticipo il tuo contesto.
- permissions.deny è solo un livello di difesa; rinforzalo con i permessi del filesystem e verifica che si applichi davvero.
- hooks.SessionStart carica il contesto per branch per tenere CLAUDE.md piccolo; disableAllHooks è l'interruttore d'emergenza quando gli hook fanno i capricci.
- Imposta un override di modello per progetto sui repo leggeri, e alza cleanupPeriodDays per conservare più cronologia di sessione.
Dove andare ora