“Cada herramienta que dejas enchufada consume energía. Un banco de trabajo con doce máquinas en reposo encendidas es un banco que hace saltar su propio diferencial.”
9. enabledPlugins: desactiva, no desinstales
Qué hace: define qué plugins instalados se cargan al iniciar la sesión. Por qué importa: cada plugin activo carga sus hooks, su contenido SKILL.md y sus esquemas de herramientas en tu presupuesto de contexto antes de que hayas escrito nada. El artículo cuenta pasar de 14 plugins activados a 4.
{
"enabledPlugins": {
"some-plugin@marketplace": false
}
}Poner un plugin a false lo mantiene instalado pero sin cargar; reactívalo por sesión con /plugin enable cuando lo necesites de verdad.
10. permissions.deny, y el bug que debes conocer
Qué hace: impide que Claude ejecute herramientas concretas o lea archivos concretos, con la intención de evitar rm -rf, leer .env o escribir fuera del proyecto.
{
"permissions": {
"deny": ["Read(./.env)", "Bash(rm -rf:*)"]
}
}- Añade también una capa a nivel de sistema de archivos: chmod 600 .env para que el SO se niegue aunque una regla deny no salte.
- Verifica con /permissions dentro de Claude Code; si tus reglas no aparecen, reinicia la sesión.
11. hooks.SessionStart: carga solo lo que necesita este directorio
Qué hace: SessionStart se dispara cuando abres Claude Code en un directorio; puede ejecutar cualquier cosa: imprimir info de entorno, revisar el estado de git, inyectar un archivo de contexto. Por qué importa: la mayoría sobreinyecta, engordando CLAUDE.md hasta miles de tokens porque metió dentro todas las reglas del proyecto. SessionStart te permite cargar solo las reglas relevantes para la rama o el directorio actuales.
{
"hooks": {
"SessionStart": [
{ "command": "cat .claude/context-$(git branch --show-current).md 2>/dev/null" }
]
}
}Cada rama carga su propio archivo de contexto pequeño, y el presupuesto deja de sangrar. (Confirma el esquema exacto de los hooks con la documentación actual; el formato de config de hooks cambia entre versiones.)
12. disableAllHooks: el interruptor de pánico
Qué hace: el artículo describe un único toggle que desactiva todos los hooks a la vez. Por qué importa: cuando Claude Code se comporta raro (comandos fantasma, cuelgues al arrancar, escrituras misteriosas), un hook que falla es una causa habitual, y matarlos todos de golpe es más rápido que bisecarlos uno a uno.
{
"disableAllHooks": true
}- Déjalo apagado en condiciones normales. Cuando algo se rompa, actívalo, reinicia y mira si el problema desaparece.
- Si sí, reactiva los hooks de uno en uno; si no, el bug está en otra parte. (Esta clave no está verificada; comprueba el nombre exacto en la documentación actual.)
13. model: el override por proyecto
Dónde: .claude/settings.json en la raíz del proyecto. Qué hace: fija el modelo por defecto de ese proyecto, sobrescribiendo tu elección global. Por qué importa: la gente pone el modelo más profundo en global para el trabajo difícil, luego abre un proyecto que es sobre todo markdown o scripts de shell y paga tarifas de gama alta por un trabajo que un modelo más barato resuelve bien.
{
"model": "claude-haiku-4-5"
}El nivel de proyecto gana. Abre el proyecto, obtén el modelo correcto y sigue.
14. mcpServers: usa el flag enabled
Qué hace: los servidores MCP conectan Claude con herramientas externas, y cada servidor conectado carga su esquema completo de herramientas en el contexto. Por qué importa: la gente conecta servidores para probar y nunca los desconecta; el artículo estima que cada servidor inactivo sigue costando esquema de contexto en cada inicio de sesión. Mantenlos configurados pero sin cargar con un flag enabled.
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["-y", "@scope/my-mcp-server"],
"enabled": false
}
}
}Pon enabled a true por sesión cuando lo necesites. (Verifica que el flag enabled se respeta en tu versión; las claves exactas de config de MCP varían.)
15. cleanupPeriodDays: la caché de la que nadie habla
Qué hace: fija cuántos días conserva Claude Code las transcripciones, los logs de debug y los datos intermedios de sesión (30 por defecto). Por qué importa: las funciones que aprenden de tu historial, y tu propio grep posterior por sesiones antiguas, solo pueden ver hasta donde llega esta ventana. Una ventana más larga da más señal a un coste de disco pequeño.
{
"cleanupPeriodDays": 180
}Una línea por cada uno
- enabledPlugins y mcpServers: mantén las cosas instaladas/configuradas pero a false/desactivadas para que no precarguen tu contexto.
- permissions.deny es solo una capa; respáldala con permisos del sistema de archivos y verifica que se aplica de verdad.
- hooks.SessionStart carga contexto por rama para mantener CLAUDE.md pequeño; disableAllHooks es el interruptor de pánico cuando los hooks fallan.
- Fija un override de modelo por proyecto en repos ligeros y sube cleanupPeriodDays para conservar más historial de sesiones.
Adónde ir ahora