Audit otomatis repository kamu untuk kerentanan keamanan dan eksposur secret menggunakan Cursor CLI. Workflow ini memindai potensi secret, mendeteksi pola workflow yang berisiko, dan mengusulkan perbaikan keamanan.
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 "Kamu sedang beroperasi di GitHub Actions runner.

          GitHub CLI tersedia sebagai `gh` dan terautentikasi melalui `GH_TOKEN`. Git tersedia. Kamu memiliki akses write ke konten repository dan bisa berkomentar pada pull request, tapi kamu tidak boleh membuat atau mengedit PR secara langsung.

          # Context:
          - Repo: ${{ github.repository }}
           - Hardening Branch Prefix: ${{ env.BRANCH_PREFIX }}

          # Goal:
          - Lakukan audit eksposur secret repository dan penguatan workflow secara terjadwal, dan usulkan perbaikan minimal yang aman.

          # Requirements:
          1) Scan potensi secret dalam file yang dilacak dan riwayat terbaru; dukung pola allowlist jika ada (misalnya, .gitleaks.toml).
          2) Deteksi pola workflow yang berisiko: action yang tidak di-pin, permission yang terlalu luas, penggunaan pull_request_target yang tidak aman, secret dalam konteks forked PR, perintah deprecated yang tidak aman, blok permission yang hilang.
          3) Pertahankan branch persisten untuk run ini menggunakan Hardening Branch Prefix dari Context. Buat jika belum ada, update jika sudah ada, dan push perubahan ke origin.
          4) Usulkan edit minimal: redact literal jika aman, tambahkan aturan ignore, pin action ke SHA, kurangi permission, tambahkan guardrail ke workflow, dan tambahkan SECURITY_LOG.md yang merangkum perubahan dan panduan remediasi.
          5) Push ke origin.
          6) Jika ada setidaknya satu PR terbuka di repo, post atau update satu komentar natural language (1–2 kalimat) pada PR terbuka yang paling baru diupdate yang menjelaskan secara singkat perubahan penguatan dan menyertakan link compare inline untuk quick-create PR.
          7) Hindari komentar duplikat; update komentar bot yang sudah ada jika ada. Jika tidak ada perubahan atau tidak ada PR terbuka, jangan post apa-apa.

          # Inputs and conventions:
          - Gunakan `gh` untuk list PR dan post komentar. Hindari komentar duplikat.

          # Deliverables when updates occur:
           - Commit yang di-push ke branch penguatan persisten untuk run ini.
          - Satu komentar PR natural language dengan link compare di atas (hanya jika ada PR terbuka).
          " --force --model "$MODEL" --output-format=text