Inicio/Permisos

🔐 Permisos

El sistema de permisos de Claude Code garantiza que nada ocurra sin tu conocimiento. Aprende a configurar qué puede y qué no puede hacer Claude.

Filosofía de permisos

Claude Code sigue el principio de mínimo privilegio: por defecto pide confirmación para cualquier acción potencialmente irreversible o que afecte a recursos fuera de tu proyecto. Tú decides cuándo darle más autonomía.

Herramientas y sus permisos

Claude Code tiene acceso a estas herramientas, cada una con su nivel de riesgo por defecto:

HerramientaQué haceConfirmación por defecto
ReadLeer archivos de tu proyectoNo
EditEditar archivos existentesSí (muestra diff)
WriteCrear nuevos archivos
BashEjecutar comandos de terminal
WebFetchHacer peticiones HTTP
WebSearchBuscar en internetNo
TodoRead/WriteGestionar lista de tareas internaNo

Permitir y denegar operaciones

Configura permisos en .claude/settings.json para no tener que confirmar operaciones frecuentes:

{
  "permissions": {
    "allow": [
      "Bash(npm run:*)",
      "Bash(git:*)",
      "Bash(npx:*)",
      "Read(**)",
      "Edit(**)",
      "Write(**)",
      "WebFetch(domain:api.github.com)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)",
      "WebFetch(domain:*.evil.com)"
    ]
  }
}

Sintaxis de permisos

Los permisos usan el formato Herramienta(patrón:valor):

  • Bash(npm:*) — permite cualquier comando npm
  • Bash(git commit:*) — permite git commit con cualquier argumento
  • Read(**) — permite leer cualquier archivo (** = cualquier ruta)
  • WebFetch(domain:api.example.com) — permite fetch solo a ese dominio
  • Edit(src/**) — permite editar solo archivos bajo src/

Gestión interactiva de permisos

Dentro de Claude Code, usa el comando:

/permissions

Esto abre un panel interactivo donde puedes ver, añadir o revocar permisos de la sesión actual.

Permisos durante una sesión

Cuando Claude Code solicita hacer algo que no tienes pre-autorizado, te mostrará un diálogo como este:

Claude quiere ejecutar:
  git push origin main

¿Permitir? [s/N/siempre/nunca] _
  • s — permitir solo esta vez.
  • N — denegar (Claude buscará otra alternativa).
  • siempre — añadir a la lista de permisos permanentes.
  • nunca — añadir a la lista de denegados permanentes.

Modo sin permisos (peligroso)

Para entornos controlados (CI, Docker, sandboxes), puedes desactivar todas las confirmaciones:

claude --dangerously-skip-permissions "implementa los tests unitarios"
Solo para entornos aislados. Con este flag, Claude puede ejecutar cualquier comando sin confirmación. Úsalo en contenedores Docker o VMs donde el daño potencial esté contenido.

Buenas prácticas de seguridad

  • Usa git: trabajar en un repositorio git te permite revertir cualquier cambio que Claude haya hecho con git restore.
  • Limita el scope en producción: en servidores de producción, no le des permisos de escritura a Claude.
  • Revisa los diffs: Claude siempre muestra un diff antes de editar. Léelo antes de aceptar.
  • Permisos por dominio: si usas WebFetch, especifica los dominios exactos en lugar de WebFetch(*).
  • Variables de entorno: Claude no puede leer tus secretos a menos que estén en el entorno o se los pases explícitamente.

Configuración de permisos para equipo

Añade .claude/settings.json a tu repositorio para que todo el equipo use la misma configuración de permisos base:

# .gitignore — NO ignorar settings.json del equipo
# (sí ignorar settings.local.json para configs personales)
.claude/settings.local.json
Existe un archivo settings.local.json para configuraciones personales que no deben compartirse (como tu API key o rutas locales). Claude Code lo lee y tiene prioridad sobre settings.json.