Claude Code en GitHub Actions: CI/CD, permisos y seguridad para agentes de código

Claude Code puede vivir dentro de GitHub Actions, pero un agente en CI no debe tener los mismos permisos que un desarrollador interactivo.

Claude Code en GitHub Actions: CI/CD, permisos y seguridad para agentes de código

Claude Code puede vivir dentro de GitHub Actions, pero un agente en CI no debe tener los mismos permisos que un desarrollador interactivo.

Claude Code en GitHub Actions convierte una conversación con un agente en una automatización reproducible: puedes invocarlo desde comentarios, pull requests, issues, tareas programadas o workflows internos. La promesa es clara: revisar PRs, preparar cambios, clasificar issues o ejecutar mantenimiento sin abrir el editor.

Checklist

Qué cambió con la acción v1

La documentación actual de Anthropic recomienda usar `anthropics/claude-code-action@v1`. La versión v1 simplifica la configuración con entradas unificadas como `prompt` y `claude_args`, elimina parte de la configuración antigua de modos y permite pasar argumentos de Claude Code desde el workflow.

Eso mejora la ergonomía, pero no elimina las decisiones importantes. Tienes que decidir qué evento dispara el agente, qué puede leer, qué puede escribir, qué modelo usar, cuántos turnos permitir, si tendrá MCP, si podrá usar proveedores como Bedrock o Vertex, y si el resultado será comentario, PR o cambio directo.

Trata la migración desde beta como una revisión de seguridad, no como un reemplazo mecánico de YAML. Si el workflow anterior ya tenía permisos amplios, la actualización es un buen momento para recortarlos.

El tercer patrón es mantenimiento programado: informes diarios, actualización de documentación, triage de issues o propuestas de refactor. Aquí el riesgo no está en el comentario, sino en convertir recomendaciones automáticas en trabajo que nadie revisa.

Secretos y contexto

Guarda `ANTHROPIC_API_KEY` como secreto de GitHub, nunca en el YAML ni en `CLAUDE.md`. Si el workflow usa otros secretos, separa los jobs: el job que comenta o revisa código no debería heredar credenciales de despliegue si no despliega.

No metas datos sensibles en el prompt. Los títulos de PR, comentarios de issues y bodies de usuarios externos son entrada no confiable. Si interpolas ese texto dentro de comandos shell o prompts con permisos de escritura, estás mezclando prompt injection con CI injection.

GitHub recomienda tratar entradas del contexto como potencialmente peligrosas en scripts. En workflows con agentes, el mismo criterio aplica doblemente: lo que viene de un comentario puede influir en una decisión del modelo y también en lo que acaba ejecutando el job.

Cómo acotar herramientas y MCP

MCP es útil cuando Claude necesita leer documentación interna, consultar tickets o hablar con sistemas corporativos. Pero en CI, cada servidor MCP aumenta la superficie de permisos. No conectes el mismo servidor que usas localmente si incluye acciones de escritura que el workflow no necesita.

Puntos a revisar

Lo que conviene comprobar

Usa allowlists de herramientas y servidores. En Claude Code, `claude_args` permite pasar opciones como `--allowedTools`, `--max-turns`, `--model` o una ruta de configuración MCP. Ese control debe estar en el YAML o en configuración versionada, no en una instrucción informal dentro del prompt.

Si necesitas hooks, úsalos para validaciones deterministas: bloquear rutas sensibles, exigir tests después de editar, impedir cambios en migraciones sin etiqueta o registrar qué herramientas se invocaron. Los hooks no sustituyen revisión humana, pero reducen estados peligrosos antes de que el diff llegue al PR.

Checklist

Costes que conviene medir

Hay dos facturas. Una es GitHub Actions: cada ejecución consume minutos de runner, especialmente si el agente instala dependencias, corre tests o itera varias veces. La otra es la API de Claude: el coste depende del contexto, modelo, longitud del repo y número de turnos.

Empieza con `--max-turns` conservador y timeouts de workflow. Añade `concurrency` para evitar que cinco comentarios disparen cinco sesiones simultáneas sobre el mismo PR. Si el workflow es automático en cada push, mide coste por PR, no solo coste mensual.

La métrica útil no es cuántos comentarios genera Claude. Es cuántos comentarios terminan en cambios aceptados, cuántos falsos positivos produce y cuánto tiempo humano ahorra frente al coste de revisión adicional.

Checklist

Un workflow inicial razonable

Actívalo primero en un repositorio de riesgo medio, no en producción crítica ni en un sandbox irrelevante. Usa disparo manual por mención, `permissions` explícitos, `ANTHROPIC_API_KEY` en secrets, `--max-turns` bajo y un prompt que pida análisis antes de cambios.

Durante dos semanas, prohíbe merges automáticos generados por el agente. Claude puede comentar, sugerir y abrir PRs, pero una persona debe aprobar. Registra duración de jobs, tokens aproximados, rutas tocadas, tests ejecutados y comentarios descartados.

Después decide si ampliar por caso de uso. Si funcionó bien revisando PRs de backend, no significa que deba tocar despliegues, migraciones o infraestructura. La expansión sana es por permiso y por workflow, no por entusiasmo.

Checklist de seguridad

  • Define `permissions` por job y evita permisos globales amplios.
  • Usa secretos de GitHub y revisa qué jobs pueden acceder a ellos.
  • Trata comentarios, títulos de PR e issues como entrada no confiable.
  • Limita `--max-turns`, modelo y herramientas con `claude_args`.
  • Separa revisión, edición y despliegue en workflows distintos.
  • No concedas MCP de escritura salvo que el caso de uso lo exija.
  • Añade hooks para rutas sensibles, tests obligatorios y logging.
  • Usa OIDC para cloud cuando puedas evitar claves estáticas.
  • Revisa cada diff como código humano nuevo: intención, pruebas, permisos y rollback.

Fuentes y referencias

También te puede interesar

Claude Code: guía completaHooks para agentes de códigoPull requests hechos por agentesMCP en producción: seguridad y permisosMétricas para agentes de código

Recibe una lectura semanal de herramientas IA para devs

Cada martes: Claude Code, Cursor, Copilot, MCP, agentes y herramientas nuevas. En español y sin ruido.

Suscribirme gratis