GitHub Actionsやその他のCI/CDシステムでCursor CLIを使って、開発タスクを自動化しよう。

GitHub Actions 連携

基本的なセットアップ:
- name: Cursor CLI のインストール
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

- name: Cursor Agent の実行
  env:
    CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
  run: |
    cursor-agent -p "Your prompt here" --model gpt-5

クックブックの例

実用的なワークフローはクックブックの例をチェックしてね:ドキュメントの自動更新CI の問題の修正

その他のCIシステム

Cursor CLIは以下の要件を満たすあらゆるCI/CDシステムで使用できます:
  • シェルスクリプト実行(bash、zshなど)
  • 環境変数によるAPIキー設定
  • インターネット接続でCursorのAPIにアクセス

自律性レベル

エージェントの自律性レベルを選ぼう:

フル自律アプローチ

エージェントに git 操作、API 呼び出し、外部連携のすべてを任せる。セットアップは簡単だけど、その分信頼が必要。 例: Auto Update Documentation クックブックでは、最初のワークフローでエージェントが次を行える:
  • PR の変更を分析
  • git ブランチの作成と管理
  • 変更のコミットとプッシュ
  • プルリクエストへのコメント投稿
  • あらゆるエラーシナリオの処理
- name: Update docs (full autonomy)
  run: |
    cursor-agent -p "You have full access to git, GitHub CLI, and PR operations. 
    Handle the entire docs update workflow including commits, pushes, and PR comments."

制限付き自律アプローチ

本番の CI ワークフローでは、権限ベースの制限と組み合わせてこのアプローチを使うのをおすすめ。いいとこ取りができるよ: エージェントは複雑な分析やファイル変更を賢くこなしつつ、重要な操作は決定的で監査可能なままにできる。
重要なステップは別のワークフローステップで処理しつつ、エージェントの操作を制限する。コントロールしやすく、予測可能性も高い。 例: 同じクックブックの 2 つ目のワークフローでは、エージェントをファイル変更のみに制限している:
- name: Generate docs updates (restricted)
  run: |
    cursor-agent -p "IMPORTANT: Do NOT create branches, commit, push, or post PR comments. 
    Only modify files in the working directory. A later workflow step handles publishing."

- name: Publish docs branch (deterministic)
  run: |
    # CI による決定的な git 操作
    git checkout -B "docs/${{ github.head_ref }}"
    git add -A
    git commit -m "docs: update for PR"
    git push origin "docs/${{ github.head_ref }}"

- name: Post PR comment (deterministic)  
  run: |
    # CI による決定的な PR コメント投稿
    gh pr comment ${{ github.event.pull_request.number }} --body "Docs updated"

権限ベースの制限

permission configurations を使って CLI レベルで制限を適用しよう:
{
  "permissions": {
    "allow": [
      "Read(**/*.md)",
      "Write(docs/**/*)",
      "Shell(grep)",
      "Shell(find)"
    ],
    "deny": [
      "Shell(git)",
      "Shell(gh)", 
      "Write(.env*)",
      "Write(package.json)"
    ]
  }
}

認証

CURSOR_API_KEY 環境変数を設定してね:
env:
  CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
API キーは Cursor の設定 から取得できるよ。