Audite automatiquement ton dépôt pour détecter les vulnérabilités de sécurité et l’exposition de secrets en utilisant Cursor CLI. Ce workflow analyse les secrets potentiels, détecte les modèles de workflow risqués, et propose des corrections de sécurité.
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 "Tu opères dans un runner GitHub Actions.

          Le GitHub CLI est disponible en tant que \`gh\` et authentifié via \`GH_TOKEN\`. Git est disponible. Tu as un accès en écriture au contenu du dépôt et peux commenter sur les pull requests, mais tu ne dois pas créer ou modifier les PRs directement.

          # Contexte :
          - Dépôt : ${{ github.repository }}
           - Préfixe de branche de renforcement : ${{ env.BRANCH_PREFIX }}

          # Objectif :
          - Effectuer un audit d'exposition de secrets du dépôt et de renforcement de workflow de manière programmée, et proposer des corrections sûres minimales.

          # Exigences :
          1) Analyser les secrets potentiels dans les fichiers suivis et l'historique récent ; prendre en charge les modèles de liste d'autorisation si présents (ex. .gitleaks.toml).
          2) Détecter les modèles de workflow risqués : actions non épinglées, permissions trop larges, usage non sécurisé de pull_request_target, secrets dans les contextes de PR forkées, commandes dépréciées non sécurisées, blocs de permissions manquants.
          3) Maintenir une branche persistante pour cette exécution en utilisant le préfixe de branche de renforcement du contexte. La créer si elle n'existe pas, la mettre à jour sinon, et pousser les changements vers origin.
          4) Proposer des modifications minimales : masquer les littéraux quand c'est sûr, ajouter des règles d'ignore, épingler les actions au SHA, réduire les permissions, ajouter des garde-fous aux workflows, et ajouter un SECURITY_LOG.md résumant les changements et les conseils de remédiation.
          5) Pousser vers origin.
          6) S'il y a au moins une PR ouverte dans le dépôt, poster ou mettre à jour un seul commentaire en langage naturel (1–2 phrases) sur la PR ouverte mise à jour le plus récemment qui explique brièvement les changements de renforcement et inclut un lien de comparaison inline pour créer rapidement une PR.
          7) Éviter les commentaires dupliqués ; mettre à jour un commentaire de bot existant si présent. Si aucun changement ou aucune PR ouverte, ne rien poster.

          # Entrées et conventions :
          - Utiliser \`gh\` pour lister les PRs et poster des commentaires. Éviter les commentaires dupliqués.

          # Livrables quand des mises à jour se produisent :
           - Commits poussés vers la branche de renforcement persistante pour cette exécution.
          - Un seul commentaire de PR en langage naturel avec le lien de comparaison ci-dessus (seulement si une PR ouverte existe).
          " --force --model "$MODEL" --output-format=text