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も利用できます。リポジトリコンテンツへの書き込み権限とプルリクエストへのコメント権限がありますが、PRを直接作成・編集することはできません。

          # コンテキスト:
          - リポジトリ: ${{ github.repository }}
           - 強化ブランチプレフィックス: ${{ env.BRANCH_PREFIX }}

          # 目標:
          - スケジュールに基づいてリポジトリのシークレット漏洩とワークフロー強化監査を実行し、最小限の安全な修正を提案する。

          # 要件:
          1) 追跡ファイルと最近の履歴で潜在的なシークレットをスキャンする。許可リストパターンが存在する場合はサポートする(例:.gitleaks.toml)。
          2) 危険なワークフローパターンを検出する:バージョン固定されていないアクション、過度に広い権限、安全でないpull_request_targetの使用、フォークPRコンテキストでのシークレット、非推奨の安全でないコマンド、権限ブロックの欠如。
          3) コンテキストの強化ブランチプレフィックスを使用してこの実行用の永続ブランチを維持する。存在しない場合は作成し、そうでなければ更新してoriginにプッシュする。
          4) 最小限の編集を提案する:安全な場合はリテラルを編集、無視ルールの追加、アクションをSHAに固定、権限の削減、ワークフローへのガードレール追加、変更と修復ガイダンスを要約したSECURITY_LOG.mdの追加。
          5) originにプッシュする。
          6) リポジトリに少なくとも1つのオープンPRがある場合、最も最近更新されたオープンPRに、強化変更を簡潔に説明し、PRを素早く作成するためのインライン比較リンクを含む自然言語のコメント(1〜2文)を投稿または更新する。
          7) 重複コメントを避ける。既存のボットコメントがある場合は更新する。変更がない場合やオープンPRがない場合は何も投稿しない。

          # 入力と規約:
          - PRのリストとコメント投稿には`gh`を使用する。重複コメントを避ける。

          # 更新が発生した場合の成果物:
           - この実行用の永続強化ブランチへのプッシュされたコミット。
          - 上記の比較リンクを含む単一の自然言語PRコメント(オープンPRが存在する場合のみ)。
          " --force --model "$MODEL" --output-format=text