Ir al contenido
Mastering Claude

Inicio / Seguridad y datos

Seguridad y datos8 minApplication

Leer basta para exponer un secreto

Una búsqueda de texto restituye el contenido de un archivo de secretos que atraviesa, y una regla de denegación Read(./.env) no se aplica a un comando de shell que lee archivos sin nombrar nunca ese.

Una búsqueda de texto lanzada sobre una carpeta entera devuelve cada línea que contiene el patrón buscado, precedida del nombre del archivo del que procede. Un archivo .env oculto que contiene ese patrón sube con los demás resultados, sin que se haya pedido ninguna lectura de ese archivo.

Lo que cubre una regla Read(./.env)

Una regla de denegación Read(./.env), puesta en los ajustes de permisos, sirve para impedir que Claude lea ese archivo. La documentación de permisos de Claude Code la aplica a las herramientas de archivo integradas de Claude, a los comandos de shell de archivo que Claude Code reconoce, como cat, head, tail, sed o tee, y a las redirecciones: el destino de una redirección de entrada < archivo depende de las reglas Read, el de una redirección de salida > archivo de las reglas Edit. La misma página fija a continuación dos exclusiones con todas las letras: un comando que lee archivos sin nombrarlos, con el ejemplo de grep -r pattern . lanzado desde la carpeta que contiene el archivo, y un subproceso que abre él mismo sus archivos, como un script de Python o de Node.

Dos herramientas de búsqueda, dos regímenes

La palabra búsqueda abarca dos cosas. El comando de shell grep -r, que Claude lanza en un terminal, queda fuera del alcance de la regla, como dice la exclusión anterior. La herramienta de búsqueda integrada de Claude, en cambio, es una herramienta de archivo: la documentación anuncia que aplica las reglas Read a las herramientas integradas que leen archivos, como Grep y Glob, en la medida de lo posible, sin enumerar los casos en que esa aplicación fallaría.

La demostración

Una carpeta desechable lleva un falso archivo .env y una regla de denegación en el archivo de ajustes del proyecto, .claude/settings.json.

mkdir -p demo-env && cd demo-env
mkdir -p .claude
printf '{"permissions":{"deny":["Read(./.env)"]}}\n' > .claude/settings.json
printf 'CLAVE_FALSA=ejemplo-no-es-una-clave-real\n' > .env
grep -r CLAVE .
./.env:CLAVE_FALSA=ejemplo-no-es-una-clave-real

Lanzada en tu propio terminal, esta búsqueda no pone a prueba ninguna regla: las reglas de permisos solo se aplican a las acciones de Claude. Muestra lo que el comando devuelve. La prueba de la regla se hace abriendo Claude Code en esa carpeta y pidiéndole que lance la misma búsqueda: según la exclusión documentada, la regla no la detiene, mientras que una petición de mostrar el archivo con cat .env se rechaza según la misma página. Un archivo de ajustes aceptado al arrancar no dice lo que la regla bloquea: lo dice esa prueba.

Para un bloqueo impuesto por el sistema operativo a todos los procesos, la documentación remite al sandbox de Claude Code: un aislamiento que restringe el acceso de los comandos de shell a los archivos y a la red, procesos hijos incluidos. Las reglas de denegación Read se fusionan en su configuración. Funciona en macOS, Linux y WSL2, no en Windows nativo. La lección sobre lo que un agente puede filtrar sin que se lo pidas muestra de dónde puede venir una petición de lectura que nadie ha escrito: una instrucción oculta en un contenido que Claude lee.

Figure 1

Una regla de denegación Read(./.env) impide que una búsqueda lo revele

Réfuté
La regla detiene las herramientas de archivo de Claude y los comandos de shell reconocidos que nombran el archivo, pero no se aplica a un comando de búsqueda recursiva que recorre la carpeta sin nombrarlo.
Preuve
Documentación de permisos de Claude Code, consultada el 2026-09-28: las reglas de denegación Read no se aplican a un comando que lee archivos sin nombrarlos, siendo el ejemplo dado grep -r pattern . lanzado desde la carpeta que contiene el archivo.
El veredicto recae sobre el comando de shell de búsqueda; la herramienta de búsqueda integrada de Claude depende de otro régimen.
Figure 2

Lo que cubre una regla Read(./.env), según la documentación

Acceso intentado por ClaudeCubierto por la regla
Herramienta de lectura integrada que abre .envSí
Comando de shell reconocido que nombra el archivo, como cat .envSí
Herramienta de búsqueda integrada, como GrepEn la medida de lo posible, según la documentación
Comando grep -r que no nombra el archivoNo, exclusión explícita
Script de Python o de Node que abre él mismo sus archivosNo, exclusión explícita
Cinco maneras de alcanzar el mismo archivo de secretos, y el alcance que la documentación de permisos da a la regla en cada una.
Calíbralo tú mismo

Una administradora añade una regla de denegación Read(./.env) en el archivo .claude/settings.json de su proyecto, para proteger el archivo que contiene las credenciales de conexión. Abre Claude Code en ese proyecto y la sesión arranca. Al día siguiente, pide a Claude que busque, en toda la carpeta del proyecto, cada línea que contenga una palabra dada, mediante un comando de shell de búsqueda recursiva.

Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.

Lo que hay que recordar
  • Una regla Read(./.env) detiene las herramientas de archivo de Claude, los comandos de shell reconocidos que nombran el archivo y una redirección de entrada que lo apunta.
  • Un comando de shell que recorre una carpeta sin nombrar el archivo, como grep -r, queda fuera del alcance documentado de la regla.
  • La herramienta de búsqueda integrada de Claude recibe las reglas Read en la medida de lo posible, lo que se verifica con una prueba en tu propio equipo.
  • Una búsqueda lanzada en tu propio terminal muestra lo que un comando devuelve, no lo que una regla de Claude bloquea.
  • El sandbox recoge las reglas de denegación Read y hace que el sistema operativo las respete, procesos hijos incluidos, salvo en Windows nativo.
Hazlo ahora

Repite la demostración en una carpeta nueva y lanza luego claude en esa carpeta. Pídele primero que lance grep -r CLAVE . y anota si se muestra la línea del falso .env, pídele después que muestre .env con cat, y luego que busque CLAVE con su herramienta de búsqueda integrada, y anota en cada petición si pasa o si se rechaza.

Lo que queda por verificar

Estos puntos dependen de una interfaz o de una regla que puede haber cambiado desde la redacción. Verifícalos en tu propia pantalla antes de fiarte de ellos.

  • La documentación aplica las reglas Read a la herramienta de búsqueda integrada de Claude en la medida de lo posible, sin enumerar los casos de fallo: el gesto de esta lección lo pone a prueba en tu equipo, y es ese resultado el que vale para tu versión.
Verificar en la fuente

Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.