← Artículos

settings.json de Claude Code: la guía del bloque env

· 5 min de lectura

El archivo de configuración de Claude Code vive en ~/.claude/settings.json. Dentro lleva un bloque "env" donde defines variables de entorno que Claude Code lee al arrancar. Los valores van siempre entre comillas, y cualquier cambio exige cerrar y volver a abrir Claude Code: las variables se leen una sola vez, al inicio de la sesión.

Dónde vive el archivo

Claude Code lee su configuración de `~/.claude/settings.json`. La virgulilla es tu carpeta de usuario, así que la ruta completa se parece a `/Users/tunombre/.claude/settings.json` en Mac o `C:\Users\tunombre\.claude\settings.json` en Windows.

Dos cosas que confunden a todo el mundo la primera vez:

  1. La carpeta `.claude` empieza con punto, así que está oculta. En Finder se ve con `Cmd + Shift + .`; en el explorador de Windows hay que activar "elementos ocultos".
  2. Si el archivo no existe, lo creas tú. No es un archivo que Claude Code necesite haber generado antes. Es un archivo de texto plano, y basta con que contenga `{}` para ser válido.

La forma mínima del bloque env

Un `settings.json` que solo define variables de entorno se ve así, completo:

```json

{

"env": {

"CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "0"

}

}

```

Las reglas que hacen que esto no se rompa:

Si ya tenías cosas en el archivo, `env` convive con ellas como una clave más:

```json

{

"model": "opus",

"env": {

"CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "0"

}

}

```

Qué hace CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT

Es el interruptor que decide si el modelo recibe el system prompt completo o el recortado. Y va al revés de lo que la intuición dice:

| Valor | Qué recibe el modelo |

|---|---|

| `"0"` (falso) | el system prompt completo |

| `"1"` (verdadero) | el system prompt recortado |

Se lee así: la variable pregunta "¿quieres el prompt simple?". Contestar que no (`"0"`) es pedir el largo.

Importa porque, desde la generación 5, Claude Code manda el prompt recortado por defecto a modelos como Opus 5 y Fable 5. Anthropic lo publicó en su blog en julio de 2026: quitaron más del 80% del system prompt para esos modelos, sin pérdida medible en sus evaluaciones de código. La consecuencia visible es de forma, no de corrección: respuestas más largas y con menos disciplina de tono.

El orden de precedencia

Cuando la misma variable está definida en varios sitios, gana la más cercana a la sesión:

  1. Variable exportada en tu terminal (`export CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0`) — gana sobre todo lo demás, y solo dura esa terminal.
  2. `settings.json` del proyecto, si tu proyecto tiene el suyo.
  3. `~/.claude/settings.json`, el global — el que estás editando aquí.

Para probar algo rápido sin tocar archivos, exportarla en la terminal y lanzar `claude` ahí mismo es la vía más limpia: cierras esa terminal y todo vuelve a como estaba.

Reiniciar no es opcional

Las variables de entorno se leen una sola vez, cuando arranca la sesión. Editar el archivo con Claude Code abierto no hace nada. Hay que cerrarlo del todo y volver a abrirlo.

Este es el motivo más común por el que alguien escribe la línea correcta y jura que no funciona.

Cómo comprobar que surtió efecto

No hace falta nada sofisticado. Hazle la misma pregunta corta dos veces: una con la variable puesta y otra sin ella, en sesiones nuevas las dos. Algo como "responde solo sí o no: ¿este archivo usa async?".

Si la longitud y la forma de la respuesta cambian de manera evidente, tenías el prompt recortado. Si no cambia nada, o tu modelo ya recibía el completo, o el archivo tiene un error de sintaxis y Claude Code lo está ignorando.

Para descartar lo segundo, valida el JSON antes de dar nada por sentado:

```bash

python3 -m json.tool ~/.claude/settings.json

```

Si te devuelve el contenido ordenado, el archivo es válido. Si te devuelve un error, ahí está el problema —casi siempre una coma de más.

Cuándo NO tocarlo

Si usas Claude Code sobre todo para escribir código, considera dejarlo como viene. Ese recorte fue deliberado y Anthropic afirma haberlo medido sin pérdida en programación; devolverlo es reintroducir instrucciones que ellos ya descartaron. El caso donde de verdad se nota a favor es el otro: cuando usas Claude Code para pensar, redactar y discutir contigo.

Preguntas frecuentes

¿Dónde está el settings.json de Claude Code?
En ~/.claude/settings.json, dentro de tu carpeta de usuario. La carpeta .claude está oculta porque empieza con punto: en Mac se muestra con Cmd + Shift + punto. Si el archivo no existe, puedes crearlo tú: es texto plano y basta con que contenga {}.
¿Cómo añado una variable de entorno en Claude Code?
Dentro de settings.json, en un bloque "env" con pares nombre-valor. Todos los valores van entre comillas, incluso los números. Después hay que cerrar y volver a abrir Claude Code, porque las variables se leen solo al arrancar la sesión.
¿Por qué CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT va en "0" y no en "1"?
Porque la variable pregunta si quieres el prompt simple. Ponerla en "0" es responder que no, y por tanto recibir el system prompt completo. Ponerla en "1" fuerza el recortado.
Edité settings.json y no cambió nada. ¿Qué pasó?
Casi siempre una de dos cosas: no reiniciaste Claude Code, o el JSON tiene un error de sintaxis y el archivo se está ignorando entero. Valida el archivo con python3 -m json.tool ~/.claude/settings.json; el fallo más común es una coma después del último elemento.
¿Qué gana si defino la misma variable en varios sitios?
Gana la más cercana a la sesión: primero una variable exportada en tu terminal, luego el settings.json del proyecto, y por último el settings.json global de ~/.claude. Exportarla en la terminal es la forma más limpia de probar algo sin dejar rastro.

Fuentes

MÁQUINA IA

La comunidad donde dejas de usar IA y empiezas a dirigirla.

Entrar a la comunidad →