“Più mani che si muovono insieme significano più modi di far cadere qualcosa. Chiudi a chiave i cassetti pericolosi prima che arrivi la squadra.”
Blinda i permessi
In `settings.json`, consenti gli strumenti di cui il team ha bisogno e nega quelli che fanno danni irreversibili. `defaultMode: "acceptEdits"` lascia gli agenti modificare senza una richiesta di conferma per ogni cambiamento, così il team non si ferma; la lista di deny è ciò che rende sicuro tutto questo.
{
"permissions": {
"allow": [
"Read", "Glob", "Grep", "Edit",
"Write(src/**)", "Write(tests/**)",
"Bash(npm test *)", "Bash(npx tsc *)",
"Bash(git add *)", "Bash(git commit *)"
],
"deny": [
"Read(**/.env*)", "Read(**/.ssh/**)",
"Bash(rm -rf *)", "Bash(sudo *)",
"Bash(git push *)", "Bash(npm publish *)"
],
"defaultMode": "acceptEdits"
}
}I pattern sono `Tool(glob)`: un singolo `*` corrisponde a un segmento, `**` è ricorsivo. `defaultMode` accetta anche altri valori (`default`, `plan` e altri), ma `acceptEdits` è quello adatto a un team in funzione.
La configurazione da copiare e incollare
Variabili d'ambiente per il profilo della tua shell:
# Add to ~/.zshrc or ~/.bashrc export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-6" export CLAUDE_CODE_EFFORT_LEVEL=high export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1
Un blocco minimo di guardrail per `settings.json`:
{
"permissions": {
"allow": ["Read", "Glob", "Grep", "Edit", "Write(src/**)", "Write(tests/**)"],
"deny": ["Read(**/.env*)", "Bash(rm -rf *)", "Bash(git push *)"],
"defaultMode": "acceptEdits"
}
}Prima e dopo
- Prima (da solo): un'attività alla volta; scrivi, revisioni, testi e fai commit in sequenza; una funzionalità in quattro parti richiede una giornata; il contesto si gonfia mentre cambi attività.
- Dopo (con il team): backend, frontend, test e revisione corrono insieme; la stessa funzionalità è pronta in poche ore; ogni agente ha un contesto pulito e mirato; tu revisioni e fai merge.
Una riga per ciascuno
- Consenti gli strumenti di cui il team ha bisogno; nega quelli irreversibili (rm -rf, git push, lettura dei segreti).
- defaultMode: acceptEdits tiene il team in movimento; la lista di deny è ciò che lo rende sicuro.
- La configurazione è un blocco di variabili d'ambiente più un blocco di permessi; nient'altro cambia nel tuo piano o nei tuoi strumenti.
Dove andare ora