Saltar al contenido
Capítulo 03 · 11 min

Claude Code: 7 claves en settings.json

Estas viven en ~/.claude/settings.json (nivel de usuario) o .claude/settings.json (nivel de proyecto, que tiene prioridad). Las siete de abajo son las que, según el artículo, mueven de verdad la aguja del presupuesto de contexto y del coste.

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.

gated bystaysClaude CodePermissions + hooksSafe by default
Claude Code settings gate permissions, hooks, and what the agent may touch.

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.

jsonCopiar el prompt
{
  "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.

jsonCopiar el prompt
{
  "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.

jsonCopiar el prompt
{
  "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.

jsonCopiar el prompt
{
  "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.

jsonCopiar el prompt
{
  "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.

jsonCopiar el prompt
{
  "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.

jsonCopiar el prompt
{
  "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.
Claude Code: 7 claves en settings.json · Cours d'IA · SDEN