// docs / security guides / claude code checklist
Checklist de seguridad de Claude Code: 26 ítems
Claude Code (el agente CLI de Anthropic) genera bases de código completas mediante comandos de barra diagonal, gestiona la refactorización de múltiples archivos y lee /writes archivos a través de bash. Esta lista de verificación se enfoca en los riesgos específicos de Claude Code: no hay políticas de seguridad predeterminadas, rara vez se agregan límites de velocidad, <code>.claude/CLAUDE.md</code> como su archivo de barrera de seguridad y el riesgo de comprometer <code>.env</code> o tokens almacenados en caché. 26 elementos entre secretos, base de datos, autenticación, encabezados, implementación y errores específicos de Claude Code.
PRE = implementación previa (audite su fuente). DEPLOY = en el momento de la implementación. POST = verificación posterior a la implementación. Referencia de artículos FixVibe verifique los ID en formato category.check-id cuando sea relevante.
Secretos y claves API (5 artículos)
Claude Code lee árboles fuente completos y genera archivos completos. Los secretos en su contexto se convierten en secretos en el resultado.
- PRE — Create
.claude/CLAUDE.mdwith security policies. Agregar: "Security Rules: Nunca inserte claves service_role en paquetes de clientes. Enrute siempre las operaciones confidenciales a través de puntos finales exclusivos del servidor. Verifique que NEXT_PUBLIC_* las variables de entorno contengan solo valores seguros (sin claves, sin tokens)". Claude Code lee.claude/CLAUDE.mdpara obtener orientación sobre el proyecto. - PRE — Ensure
.env.localis in.gitignore. Claude Code puede confirmar accidentalmente.env.localdurante una refactorización. Ejecutegit ls-files .env*para comprobar qué se está rastreando. Si.env.localestá presente, está expuesto. - PRE — Audit generated API routes for env-var verification. Claude Code a veces se olvida de verificar que
process.env.SECRETexiste en el lado del servidor antes de usarlo. Las rutas deberían fallar rápidamente si falta una var de entorno, no caer en un valor predeterminado. - PRE — Check the
.claudecache directory. Claude Code almacena en caché el contexto de la conversación en.claude/cacheo.claude/history. Estos archivos no deben confirmarse. Agregue.claude/a.gitignore. - POST — Run secrets.browser-storage on the deployed app. Si Claude Code inserta una clave, el escaneo pasivo la encontrará en el paquete renderizado.
Control de acceso a la base de datos (4 artículos)
Claude Code es excelente generando esquemas, pero las políticas RLS necesitan instrucciones explícitas.
- PRE — Instruct Claude Code on RLS in
.claude/CLAUDE.md. Agregar: "Cada migración debe incluirALTER TABLE ... ENABLE ROW LEVEL SECURITYyFORCE ROW LEVEL SECURITY. Cada política debe validar elauth.uid()del usuario". - PRE — Review generated migrations for
FORCE ROW LEVEL SECURITY. Claude Code puede generarENABLEpero olvidaFORCE. SinFORCE, los propietarios de la tabla (el corredor de migración) omiten RLS. Agréguelo manualmente si falta. - DEPLOY — Test RLS enforcement after deploy. Abra Supabase Studio, elija una mesa, confirme que RLS alternar es ON. Si la migración de Claude Code utilizó
ENABLEsinFORCE, el interruptor dirá ON pero la aplicación está incompleta. - POST — Run the baas.supabase-rls active check. Intenta escribir con la tecla anon. Si tiene éxito, RLS está incompleto. Agregue
FORCEa la migración y vuelva a implementar.
Autenticación y sesiones (4 artículos)
Claude Code genera bien los flujos de autenticación, pero no agrega automáticamente limitación de velocidad ni verifica todas las reclamaciones de tokens en el lado del servidor.
- PRE — Mandate server-only auth verification in
.claude/CLAUDE.md. Agregar: "Cada ruta API que mute datos debe verificar al usuario conawait supabase.auth.getUser()en el servidor. Nunca confíe engetSession()o en el usuario ID del cuerpo de la solicitud". - PRE — Check generated auth handlers for token expiry. Los tokens de enlace mágico y de restablecimiento de contraseña necesitan ser aplicados por el servidor
expires_at. Pregunte a Claude Code: "Agregue un cheque que rechace tokens de más de 1 hora". - PRE — Verify sign-in redirect guards. La redirección del parámetro
nextdebe comenzar con/y no con//. Agregar a.claude/CLAUDE.md: "Validar el parámetronext: debe comenzar con/, rechazar si comienza con//o contiene un protocolo". - POST — Test logout clears cookies. Iniciar sesión, cerrar sesión, inspeccionar Aplicación → Cookies. La cookie de sesión debe borrarse. Si persiste, el punto final de cierre de sesión no está destruyendo el estado.
HTTP encabezados y CSP (3 elementos)
Claude Code no genera middleware de forma predeterminada a menos que usted lo solicite.
- PRE — Add middleware request to
.claude/CLAUDE.md. Incluye: "Generesrc/middleware.tscon Content-Security-Policy utilizando encabezados nonce por solicitud, HSTS, X-Frame-Options y X-Content-Type-Options". Luego pídele a Claude Code que lo implemente. - PRE — Verify
src/middleware.tsexists and has CSP. Con el diseño Next.jssrc/, el middleware debe estar ensrc/middleware.ts, no en la raíz del proyecto. Verifique que el encabezado CSP incluya'strict-dynamic'y un nonce. - POST — Run headers.security-headers on the deployed URL. La verificación informa que faltan encabezados y sugiere soluciones para su plataforma.
Higiene del despliegue (4 artículos)
Claude Code no configura su plataforma de implementación; esa es su responsabilidad, pero vale la pena comprobarlo.
- DEPLOY — Scope env vars per environment in Vercel (or equivalent). Configuración → Variables de entorno → asigne cada secreto solo a Producción. Nunca comparta
sk_live_*con Vista previa o Desarrollo. - DEPLOY — Audit your CI workflow for secret echo. Si GitHub Acciones u otro CI tiene
echo $SECRETen cualquier lugar, elimínelo. Los registros de compilación se archivan; Los secretos en los registros están comprometidos. - Configuración de DEPLOY — Prefer platform-native secret storage. Vercel → Las variables de entorno están cifradas; GitHub Los secretos de acciones son mejores que nada, pero no coinciden con el almacenamiento nativo de la plataforma.
- POST — Rotate any key that reached a public build. Si una clave apareció en una Vercel Vista previa URL o en cualquier artefacto público incluso durante segundos, está comprometida. Girar inmediatamente.
Claude Code errores específicos (5 artículos)
Patrones exclusivos de la arquitectura y los flujos de trabajo de Claude Code:
- Claude Code forks work into subagents. En tareas grandes, Claude Code puede generar múltiples instancias de subagente, cada una con un contexto de base de código parcial. Si un subagente alucina un patrón de seguridad secreta que otro no, surge una inconsistencia. Revise cuidadosamente la diferencia final.
- Bash operations are unverified. Claude Code ejecuta comandos bash directamente.
git commit -m "fix"es conveniente, pero si el directorio de trabajo tiene un archivo.envy un globo lo incluye, se confirma. Siempre revisegit diff --cachedantes de que Claude Code se comprometa. - Context window boundaries create gaps. Si su código base es grande, el contexto de Claude Code puede dividirse en varias ventanas. El manejo
.env.localde una ventana puede diferir del de otra. Haga cumplir la política en.claude/CLAUDE.mdy verifique el resultado. - Rate-limiting is almost never added without asking. Claude Code genera CRUD funcional pero rara vez incluye encabezados que limitan la velocidad o lógica de retroceso exponencial. Pídelo explícitamente en
.claude/CLAUDE.md. .claude/CLAUDE.mdis read but not enforced. Claude Code lee tu.claude/CLAUDE.mdcomo una pista, no como una restricción. Si la pista entra en conflicto con la tarea, Claude Code puede ignorarla. Revise siempre el resultado.
Próximos pasos
Verifique general vibe coding security checklist para ver 44 elementos de herramientas cruzadas, luego consulte step-by-step hardening para conocer los patrones en el momento de la implementación. Si también estás usando Cursor, consulta Cursor security checklist.
