“Más manos moviéndose a la vez son más formas de tirar algo al suelo. Atornilla los cajones peligrosos antes de que llegue la cuadrilla.”
Cierra los permisos
En `settings.json`, permite las herramientas que el equipo necesita y deniega las que causan daños irreversibles. `defaultMode: "acceptEdits"` deja que los agentes editen sin una confirmación por cambio para que el equipo no se detenga; la lista de denegación es lo que hace que eso sea seguro.
{
"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"
}
}Los patrones son `Tool(glob)`: un solo `*` coincide con un segmento, `**` recorre en profundidad. `defaultMode` también acepta otros valores (`default`, `plan` y más), pero `acceptEdits` es el que le va bien a un equipo en marcha.
La configuración para copiar y pegar
Variables de entorno para tu perfil de 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 bloque mínimo de barandillas para `settings.json`:
{
"permissions": {
"allow": ["Read", "Glob", "Grep", "Edit", "Write(src/**)", "Write(tests/**)"],
"deny": ["Read(**/.env*)", "Bash(rm -rf *)", "Bash(git push *)"],
"defaultMode": "acceptEdits"
}
}Antes y después
- Antes (solo): una tarea cada vez; escribes, revisas, pruebas y commiteas en secuencia; una feature de cuatro partes lleva un día; el contexto se hincha con cada cambio de tarea.
- Después (equipo): backend, frontend, tests y revisión corren a la vez; la misma feature está lista en horas; cada agente tiene un contexto limpio y enfocado; tú revisas y mergeas.
Una línea por cada uno
- Permite las herramientas que el equipo necesita; deniega las irreversibles (rm -rf, git push, leer secretos).
- defaultMode: acceptEdits mantiene al equipo en movimiento; la lista de denegación es lo que hace que eso sea seguro.
- La configuración es un bloque de variables de entorno más un bloque de permisos; nada más cambia en tu plan ni en tus herramientas.
Adónde ir ahora