El problema que nadie te cuenta. Si usas Claude Code para programar, hay algo que probablemente no
sabes: guarda un historial completo de tus conversaciones en texto plano en tu máquina. Y dependiendo como lo hayas usado, puede que necesites proteger los credenciales a no más tardar.
~/.claude/history.jsonl
~/.claude/file-history/
~/.claude/projects/Y además, todo lo que escribes en el chat viaja a los servidores de Anthropic para
procesarse. Eso es el modelo de negocio — no es un secreto, pero tampoco es algo en
lo que piensas cuando estás en modo “flow” programando.
Es por eso que es crítico saber como proteger credenciales en Claude Code. O al menos, las buenas prácticas.
Como proteger credenciales en Claude Code
Antes de entrar en la detección, conviene entender qué ficheros usa
Claude Code y dónde viven. Hay dos tipos:
~/.claude/settings.json — tu configuración personal: permisos, servidores
MCP, variables de entorno. Es el fichero que tú editas directamente.
/Library/Application Support/ClaudeCode/managed-settings.json —
configuración gestionada para entornos corporativos. Los administradores
lo usan para aplicar políticas de seguridad a toda la organización via
MDM. Si trabajas en solitario, probablemente no existe en tu máquina.
Ambos pueden contener información sensible si no se configuran con
cuidado — especialmente settings.json, donde es fácil acabar con
credentials hardcodeadas sin darte cuenta.
Paso 1: Detección
Decidí escanear esos ficheros buscando credentials. Usé patrones conocidos: prefijos
de AWS Access Keys (AKIA, AKAR…), tokens de GitHub (ghp_), y claves genéricas con
formatos largos. El resultado no es sorprendente, al configurar el conector a ciertos proveedores, Claude guarda esos valores en ficheros en tu local.
El problema es que esos ficheros con esa información, no se queda ahí, eso viaja a otro lugar. Y eso pone los pelos de punta.
Y me parece que es algo, sobre lo que no se está hablando lo suficiente.e
La regla que me quedó clara: tratar a Claude como si fuera pair programming por
videollamada con alguien externo a tu empresa. No le mostrarías las keys en pantalla.
Paso 2: Limpieza
Lo primero fue revocar todas las credentials expuestas, que pudieran existir. Una key que estuvo en texto
plano hay que considerarla comprometida, aunque no haya evidencia de uso malicioso.
Vaciar historial del chat
/.claude/history.jsonlEliminar backups de ficheros editador por Claude
rm -rf ~/.claude/file-history/*Vaciar conversaciones guardadas por proyecto
find ~/.claude/projects/ -name "*.jsonl" -exec truncate -s 0 {} \;Revisar el archivo de configuración, si hay tokens, ya sabéis:
~/.claude/settings.jsonPaso 3: Configuración siguiendo buenas prácticas
Con las credentials limpias y revocadas, el objetivo era configurar todo de nuevo
pero sin que ningún valor toque nunca el chat ni los ficheros de Claude.
Usa un token de GitHub con mínimo privilegio
Cuando configures tu token de GitHub para Claude Code, no actives
todos los permisos porque sí. La buena práctica es otorgar solo lo
que realmente vas a usar.
Con un classic token para trabajar con repositorios privados, los
scopes necesarios son:
| Scope | Para qué |
| repo | Lectura y escritura de código, PRs, issues, commits |
| workflow | Ver y modificar GitHub Actions |
| read:org | Acceder a repos de organización privada |
| read:user | Identificación del usuario |
Lo que no debes activar: admin:org, delete_repo, admin:repo_hook,
write:org ni ningún scope de administración.
El principio es el mismo que con cualquier otra credencial: un
token comprometido solo debería poder hacer lo que tú le has
permitido explícitamente — nada más. Cuantos más permisos tenga,
mayor el radio de explosión si acaba en malas manos.
Si tu caso de uso lo permite, los fine-grained tokens son mejor
opción — permiten limitar el acceso a repositorios concretos en
lugar de a toda la cuenta.
Lo mismo aplica para cualquier tipo de token, key, etc.
1Password CLI como fuente de verdad
Una opción es usar 1Password. Tiene CLI, y esa CLI puede inyectar secrets
directamente en tu entorno de shell — sin que el valor aparezca en ningún sitio.
Cuando lo tengas bien configurado verás algo así por pantalla cuando Claude necesite acceder a un item concreto.

Instalar la cli
brew install 1password-cliVerificar estado
op account listSi usamos SSO, Okta o otros proveedores, sigue leyendo.
Ahora, creamos el item en 1Password:
- Crea un nuevo item de tipo “API Credential” en el vault que uses
- Nómbralo de forma que sea fácil de referenciar, p.ej. GitHub PAT
- Guarda el token en el campo credential Setup si tu cuenta Business usa SSO: La mayoría de cuentas empresariales usan SSO (Google, Okta…) y la autenticación
estándar de la CLI no funciona directamente. - La solución:
- Abre la app de 1Password en Mac
- Ve a Settings → Developer → Connect with 1Password CLI
- Actívalo La CLI se autentica a través de la app de escritorio que ya tiene tu sesión SSO
activa. Sin contraseñas maestras, sin configuraciones raras.
- Actualizar .zshrc como sigue:
export GITHUB_PERSONAL_ACCESS_TOKEN=$(op read "op://MyVault/GitHub_PAT/credential" --no-newline)
export GITHUB_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKENVerifica la variable de entorno
echo $GITHUB_TOKEN | cut -c1-4
# exporta el contenido
source ~/.zshrcAntes — el valor queda en .zsh_history y Claude puede verlo export GITHUB_TOKEN=ghp_abc123xyz…
Ahora — el valor nunca aparece en texto. Claude usa $GITHUB_TOKEN del entorno. El valor real vive en 1Password. Nunca lo escribes en el chat.
Así queda — hereda del entorno, sin valores hardcodeados
“env”: {}
"github": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {}
}Verifica que Claude sigue pudiendo operar.
# Puedes comprobarlo pidiendo:
"lista mis repositorios de GitHub"Si el MCP responde con tus repos, el flujo funciona de extremo a extremo.
Paso 3.1 Rotación de credentials
Si una key estuvo expuesta aunque sea un momento, la roto.
Con AWS y GitHub es rápido, y el daño de una exposición queda limitado en el tiempo.
Lo que esto no resuelve
Si en algún momento escribes el token en el chat, sigue yendo a Anthropic. 1Password
solo te protege de la exposición accidental por ficheros o variables de entorno — no
de lo que tú decides escribir.
La herramienta más importante sigue siendo el hábito.
5. Más allá de las credenciales: configuración segura de Claude Code
Gestionar bien los secrets es solo una parte. Claude Code tiene un
sistema de permisos y configuración que vale la pena endurecer.
5.1 Limita los servidores MCP
No actives todos los servidores MCP por defecto, habilita solo los que realmente uses y bloquea
explícitamente los que no
( se configura en managed-settings.json)
"enabledMcpjsonServers": ["github"],
"disabledMcpjsonServers": ["filesystem"]5.2 Configura los permisos con criterio.
Todo lo restante es en settings.json
Claude Code tiene tres niveles: allow, ask y deny. La regla es
mínimo privilegio:
- Allow — solo comandos completamente inofensivos
- Ask — operaciones con impacto: git push, docker run
- Deny — bloqueado sin excepción
Antes
{
"permissions": {
"allow": [
"Bash(curl:*)",
"Bash(docker:*)"
]
},Después
{
"permissions": {
"deny": [
"Bash(curl:*)",
"Bash(docker:*)"
]
},5.3 Endurecer acceso a ciertas carpetas
"permissions": {
"deny": [
"Bash(curl:*)",
"Bash(docker:*)"
],
"deny": [
"Bash(curl:*)",
"Bash(rm -rf:*)",
"Read(~/.ssh/*)",
"Read(~/.aws/*)",
"Read(**/*.pem)",
"Read(**/.env*)"
]
}5.4 Auto limpieza
{
"cleanupPeriodDays": 7,
...
}4. Enseñanzas
Trata a Claud Code como un novato con acceso de root
Claude Code puede disparar tu productividad. Pero si no está bien configurado, puede:
- Exponer tus credenciales
- Corromper tus repositorios
- Abrir una puerta trasera a un usuario no autorizado
Las herramientas de IA para programar son una ventaja enorme. Solo hay que tratarlas
con el mismo criterio de seguridad que cualquier otra herramienta que accede a tu
entorno de trabajo.
¿Te ha pasado algo parecido? ¿Usas alguna otra forma de gestionar esto? Cuéntamelo en
los comentarios.
Links
- https://www.backslash.security/blog/claude-code-security-best-practices
- https://www.rubenortiz.es/
- https://support.claude.com/en/articles/9767949-api-key-best-practices-keeping-your-keys-safe-and-secure
¿Te ha ayudado este artículo?
☕ Invítame a un café