🔐 Claude Code · Seguridad

Audita tu entorno de Claude Code en 10 minutos: los 5 ajustes que cierran las filtraciones más comunes

Por Ivan Eguiguren · Mayo 2026

En esta guía, paso a paso:


Paso 1: Audita tu CLAUDE.md

El CLAUDE.md se carga automáticamente en el contexto de Claude antes de cada conversación. Si contiene URLs internas, nombres de sistemas, tokens de ejemplo o rutas de producción, Claude puede mencionarlos, incluirlos en logs, o exponerlos via herramientas MCP. Ejecuta esto para detectarlo:

# Busca en configuración global
grep -n "http\|https\|token\|key\|pass\|secret\|@\|10\.\|192\.168\|\.internal" ~/.claude/CLAUDE.md 2>/dev/null

# Busca en configuración del proyecto
grep -n "http\|https\|token\|key\|pass\|secret\|@\|10\.\|192\.168\|\.internal" .claude/CLAUDE.md 2>/dev/null

Si el grep devuelve líneas, tienes exposición activa. El fix: mueve esos valores a variables de entorno y referéncialas en el CLAUDE.md sin el valor real. Por ejemplo, en lugar de DB: postgres://prod-server/mydb, escribe DB: $DATABASE_URL.

Paso 2: Revisa los hooks para inyección de comandos

Los hooks de Claude Code ejecutan comandos de shell automáticamente. Si algún hook pasa output de Claude directamente a un comando sin validarlo, cualquier respuesta de Claude puede ejecutar código arbitrario en tu máquina. Abre tu settings.json y busca patrones como estos...

🔐
Los ajustes 2–5 y el test de verificación
Hooks de shell seguros, permisos MCP mínimos, cómo excluir .claude/ del repo, y el test final que confirma que no hay filtraciones.

Sin spam. Puedes darte de baja cuando quieras. Política de privacidad

Recurso desbloqueado — aquí están los 5 ajustes completos.

1. Audita tu CLAUDE.md ahora mismo

Abre el CLAUDE.md de tu proyecto y busca: URLs internas (10.x.x.x, localhost, dominios internos), tokens o claves aunque sean de ejemplo, nombres de bases de datos o sistemas de producción, instrucciones que revelen la arquitectura interna. Si encuentras cualquiera de estas cosas, sácalas del archivo. Crea un archivo .env.claude separado para los valores sensibles y referencia las variables de entorno en su lugar.

2. Revisa tus hooks para inyección de comandos

Los hooks de Claude Code ejecutan shell commands. Si un hook hace algo como echo $INPUT_FROM_CLAUDE o pasa output de Claude directamente a un comando de shell, estás abriendo la puerta a prompt injection. Valida siempre el input antes de pasarlo a shell. Usa listas blancas de comandos permitidos, no listas negras.

# ❌ Peligroso — Claude controla el argumento
hook: "git commit -m '$CLAUDE_OUTPUT'"

# ✅ Seguro — el mensaje viene de una fuente controlada
hook: "git commit -m 'Auto: tarea completada'"

3. Permisos MCP: el principio de mínimo privilegio

Cada servidor MCP que conectas a Claude tiene acceso a un conjunto de herramientas. Revisa qué herramientas tiene habilitadas cada servidor y desactiva las que no uses activamente. En particular: nunca des acceso de escritura a sistemas de producción desde Claude Code directamente. Usa un entorno de staging para pruebas.

4. Excluye .claude/ de tu repositorio

Si tu carpeta .claude/ contiene configuraciones específicas del proyecto (CLAUDE.md local, settings.json con hooks), añádela a .gitignore antes de hacer tu próximo commit. Lo que no quieres es que toda tu configuración de Claude — incluyendo las instrucciones que le das sobre cómo actuar en tu proyecto — sea pública.

# .gitignore
.claude/
*.claude.md
.env.claude

5. Separa configuración global de configuración de proyecto

Claude Code carga configuración en cascada: primero la global (~/.claude/), luego la del proyecto (.claude/). Mantén la configuración global mínima — solo preferencias de comportamiento, sin datos de proyecto. Toda la configuración específica del proyecto va en el .claude/ local, que no commitas al repo.

Verificación rápida

Una vez aplicados los ajustes, haz este test: abre una sesión nueva de Claude Code y pregúntale "¿Qué información tienes sobre este proyecto?". Si menciona URLs internas, credenciales o datos que no debería conocer, todavía tienes filtraciones.