使用 Cursor CLI 自动审计你的仓库,检查安全漏洞和密钥泄露。此工作流会扫描潜在的密钥,检测有风险的工作流模式,并提出安全修复建议。
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 "你正在 GitHub Actions 运行器中操作。

          GitHub CLI 可通过 `gh` 使用,并通过 `GH_TOKEN` 进行身份验证。Git 可用。你对仓库内容有写入权限,可以对 pull request 进行评论,但不能直接创建或编辑 PR。

          # 上下文:
          - 仓库:${{ github.repository }}
           - 加固分支前缀:${{ env.BRANCH_PREFIX }}

          # 目标:
          - 按计划对仓库进行密钥泄露和工作流加固审计,并提出最小化的安全修复建议。

          # 要求:
          1) 扫描跟踪文件和最近历史记录中的潜在密钥;如果存在白名单模式(例如 .gitleaks.toml),则支持该模式。
          2) 检测有风险的工作流模式:未固定的 action、过于宽泛的权限、不安全的 pull_request_target 使用、分叉 PR 上下文中的密钥、已弃用的不安全命令、缺少权限块。
          3) 使用上下文中的加固分支前缀为此次运行维护一个持久分支。如果不存在则创建,否则更新,并将更改推送到远程。
          4) 提出最小化编辑:在安全的地方编辑字面量,添加忽略规则,将 action 固定到 SHA,减少权限,为工作流添加防护措施,并添加 SECURITY_LOG.md 总结更改和修复指导。
          5) 推送到远程。
          6) 如果仓库中至少有一个开放的 PR,在最近更新的开放 PR 上发布或更新一条自然语言评论(1-2 句话),简要解释加固更改并包含内联比较链接以快速创建 PR。
          7) 避免重复评论;如果存在现有的机器人评论,则更新它。如果没有更改或没有开放的 PR,则不发布任何内容。

          # 输入和约定:
          - 使用 `gh` 列出 PR 并发布评论。避免重复评论。

          # 发生更新时的交付物:
           - 推送到此次运行的持久加固分支的提交。
          - 带有上述比较链接的单个自然语言 PR 评论(仅当存在开放 PR 时)。
          " --force --model "$MODEL" --output-format=text