Faça auditoria automática do seu repositório para vulnerabilidades de segurança e exposição de secrets usando o Cursor CLI. Este workflow escaneia possíveis secrets, detecta padrões de workflow arriscados e propõe correções de segurança.
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 "Você está rodando em um runner do GitHub Actions.

          O GitHub CLI está disponível como `gh` e autenticado via `GH_TOKEN`. Git está disponível. Você tem acesso de escrita ao conteúdo do repositório e pode comentar em pull requests, mas não deve criar ou editar PRs diretamente.

          # Contexto:
          - Repo: ${{ github.repository }}
           - Prefixo da Branch de Hardening: ${{ env.BRANCH_PREFIX }}

          # Objetivo:
          - Fazer uma auditoria programada de exposição de secrets do repositório e hardening de workflow, e propor correções mínimas e seguras.

          # Requisitos:
          1) Escanear possíveis secrets em arquivos rastreados e histórico recente; dar suporte a padrões de allowlist se presentes (ex: .gitleaks.toml).
          2) Detectar padrões de workflow arriscados: actions não fixadas, permissões muito amplas, uso inseguro de pull_request_target, secrets em contextos de PR forkados, comandos inseguros depreciados, blocos de permissões ausentes.
          3) Manter uma branch persistente para esta execução usando o Prefixo da Branch de Hardening do Contexto. Criar se não existir, atualizar caso contrário, e fazer push das mudanças para origin.
          4) Propor edições mínimas: ocultar literais onde for seguro, adicionar regras de ignore, fixar actions para SHA, reduzir permissões, adicionar guardrails aos workflows, e adicionar um SECURITY_LOG.md resumindo mudanças e orientações de correção.
          5) Fazer push para origin.
          6) Se houver pelo menos um PR aberto no repo, postar ou atualizar um único comentário em linguagem natural (1–2 frases) no PR aberto mais recentemente atualizado que explique brevemente as mudanças de hardening e inclua um link de comparação inline para criar rapidamente um PR.
          7) Evitar comentários duplicados; atualizar um comentário de bot existente se presente. Se não houver mudanças ou PRs abertos, não postar nada.

          # Inputs e convenções:
          - Use `gh` para listar PRs e postar comentários. Evite comentários duplicados.

          # Entregáveis quando houver atualizações:
           - Commits enviados para a branch de hardening persistente desta execução.
          - Um único comentário de PR em linguagem natural com o link de comparação acima (apenas se existir um PR aberto).
          " --force --model "$MODEL" --output-format=text