En esta guía, paso a paso:
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.
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...
Sin spam. Puedes darte de baja cuando quieras. Política de privacidad
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.
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'"
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.
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
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.
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.