Antonio Herrera.
8Fase 8 · Claude desde cero

Permisos y seguridad: qué puede hacer Claude sin preguntarte

Modos de permisos, reglas en settings.json y cómo proteger secretos

Por Antonio Herrera Publicada en octubre 2026 3 min de lectura
10/13
Qué vas a conseguir: decidir qué puede hacer Claude sin preguntarte, qué no puede hacer nunca y cómo proteger tus secretos.
Tiempo: 20 minutos. Resultado: un .claude/settings.json con reglas de permisos (soluciones/fase-08/).
Paso 1 · Conoce los modos de permisos

Con Shift + Tab recorres los modos de la sesión. La línea de abajo siempre dice en cuál estás:

Las cuatro indicaciones de modo: manual mode on, accept edits on, plan mode on y auto mode on
Los cuatro modos, tal como aparecen en la terminal.
Manual
Pregunta antes de editar ficheros o ejecutar comandos. El mejor para empezar.
Accept edits
Edita ficheros sin preguntar; los comandos siguen pidiendo permiso.
Plan
Solo investiga y propone. No cambia nada.
Auto
Un clasificador revisa cada acción en tu lugar y solo te pregunta lo arriesgado. Para cuando ya tienes reglas claras.
Las lecturas no piden permiso: Claude puede leer los ficheros de la carpeta del proyecto libremente. Las ediciones, los comandos y el acceso a internet, sí (en modo manual). Por eso las reglas de bloqueo son importantes para los ficheros sensibles.
Paso 2 · Crea un secreto de prueba

Para practicar, crea en mis-tareas un fichero .env con un valor inventado (nunca uses uno real para probar):

.env
TOKEN_DEMO=esto-no-es-un-secreto-real-123
Paso 3 · Escribe las reglas del proyecto

Crea la carpeta .claude y dentro el fichero settings.json:

.claude/settings.json
{ "permissions": { "allow": [ "Bash(git status)", "Bash(git diff *)" ], "deny": [ "Read(./.env)", "Bash(git push *)" ] } }
  • allow: se ejecuta sin preguntar. El * es un comodín: git diff * cubre cualquier git diff.
  • deny: se bloquea siempre, en cualquier modo. Aquí, leer el .env y publicar con git push.
  • También existe ask: pregunta siempre, aunque el modo no lo haría.

Añade también un .gitignore para que el secreto y tus permisos personales no se suban al repositorio:

.gitignore
.env .claude/settings.local.json
Paso 4 · Revisa las reglas con /permissions

Sal (/exit), vuelve a entrar con claude y escribe /permissions. Muévete por las pestañas con las flechas:

Diálogo de permisos en la pestaña Allow con Bash(git diff *) y Bash(git status)
Pestaña Allow: «Claude Code won't ask before using allowed tools».
Diálogo de permisos en la pestaña Deny con Bash(git push *) y Read(./.env)
Pestaña Deny: «Claude Code will always reject requests to use denied tools». Desde aquí también puedes añadir reglas sin editar el fichero.
Paso 5 · Comprueba que funciona
Claude Code
Lee el fichero .env y dime qué contiene.
Claude responde que no ha podido leer .env porque la configuración de permisos bloquea el acceso, y que no ha intentado saltarse el bloqueo
Bloqueado. Claude explica por qué no puede y no intenta saltarse la regla por otra vía. Las reglas las aplica Claude Code, no dependen de que el modelo obedezca.
Dónde viven los ajustes
.claude/settings.json
Del proyecto. Se sube al repositorio: reglas para todo el equipo.
.claude/settings.local.json
Tuyo en este proyecto. Ahí se guardan los «Yes, and don't ask again».
~/.claude/settings.json
Tuyo, para todos tus proyectos.
Buenas prácticas: bloquea siempre los ficheros con secretos (.env, claves, certificados) y las acciones que publican o destruyen (git push, borrados masivos). Permite solo lo que repites a menudo y es inofensivo. Y nunca pegues secretos en la conversación.
✓ Gate 8 — Permisos definidos
✓
Sé cambiar de modo con Shift + Tab y qué hace cada uno
✓
Tengo un .claude/settings.json con allow y deny
✓
El .env está bloqueado y en .gitignore
✓
He revisado las reglas con /permissions
✓
He comprobado que Claude no puede leer el secreto

Fuentes oficiales: Configure permissions · Permission modes · Settings. Revisado el 15 de octubre de 2026 con Claude Code 2.1.300.

Hablemos →