Audita automáticamente secretos de un repositorio usando Cursor CLI en GitHub Actions
name: Auto Secrets Audit
on:
schedule:
- cron: "0 4 * * *"
workflow_dispatch:
permissions:
contents: write
pull-requests: write
actions: read
jobs:
secrets-audit:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Cursor CLI
run: |
curl https://cursor.com/install -fsS | bash
echo "$HOME/.cursor/bin" >> $GITHUB_PATH
- name: Configure git identity
run: |
git config user.name "Cursor Agent"
git config user.email "cursoragent@cursor.com"
- name: Scan and propose hardening
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
MODEL: gpt-5
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: audit
run: |
cursor-agent -p "Estás ejecutándote en un runner de GitHub Actions.
El CLI de GitHub está disponible como `gh` y autenticado mediante `GH_TOKEN`. Git está disponible. Tienes acceso de escritura al contenido del repositorio y puedes comentar en pull requests, pero no debes crear o editar PRs directamente.
# Contexto:
- Repo: ${{ github.repository }}
- Prefijo de Rama de Hardening: ${{ env.BRANCH_PREFIX }}
# Objetivo:
- Realizar una auditoría programada de exposición de secretos del repositorio y hardening de workflows, y proponer correcciones mínimas seguras.
# Requisitos:
1) Escanear posibles secretos en archivos rastreados e historial reciente; soportar patrones de allowlist si están presentes (ej., .gitleaks.toml).
2) Detectar patrones de workflow riesgosos: actions sin pinear, permisos excesivamente amplios, uso inseguro de pull_request_target, secretos en contextos de PR forkeados, comandos inseguros deprecados, bloques de permisos faltantes.
3) Mantener una rama persistente para esta ejecución usando el Prefijo de Rama de Hardening del Contexto. Crearla si no existe, actualizarla en caso contrario, y hacer push de los cambios al origin.
4) Proponer ediciones mínimas: redactar literales donde sea seguro, agregar reglas de ignore, pinear actions a SHA, reducir permisos, agregar guardrails a workflows, y agregar un SECURITY_LOG.md resumiendo cambios y guía de remediación.
5) Hacer push al origin.
6) Si hay al menos un PR abierto en el repo, publicar o actualizar un solo comentario en lenguaje natural (1–2 oraciones) en el PR abierto actualizado más recientemente que explique brevemente los cambios de hardening e incluya un enlace de comparación inline para crear rápidamente un PR.
7) Evitar comentarios duplicados; actualizar un comentario de bot existente si está presente. Si no hay cambios o no hay PRs abiertos, no publicar nada.
# Inputs y convenciones:
- Usar `gh` para listar PRs y para publicar comentarios. Evitar comentarios duplicados.
# Entregables cuando ocurren actualizaciones:
- Commits pusheados a la rama de hardening persistente para esta ejecución.
- Un solo comentario de PR en lenguaje natural con el enlace de comparación de arriba (solo si existe un PR abierto).
" --force --model "$MODEL" --output-format=text
¿Esta página le ayudó?