GitHub Copilot AgentでIssueをPRに変える手順


「このIssue、誰かやっといて」をCopilotに言えるようになった。

GitHub Copilot coding agentを使うと、IssueにCopilotをアサインするだけで、コード変更からPR作成まで自動でやってくれる。ちょっとしたバグ修正や定型的な機能追加なら、自分で手を動かす前にPRのドラフトが上がってくる世界だ。

この記事では、実際にIssueからPRを自動生成する手順と、使う上で知っておくべき注意点をまとめた。


何ができるのか

Copilot coding agentは、GitHub上のIssueを読み取って、必要なコード変更を行い、ブランチを切ってPRを作成するところまで自動で実行してくれる。

人間がやることは「IssueにCopilotをアサインする」だけ。あとはCopilotがリポジトリを解析して、変更内容を考えて、実装して、PRとして提出してくる。

対応しているプランは Copilot Pro / Pro+ / Business / Enterprise で、リポジトリ側で明示的に無効化されていなければ使える。ただし、managed user accountsが所有するリポジトリでは使えないという制限がある。導入前に自分の組織・リポジトリの設定を確認しておくといい。


IssueからPRを作る手順

1. IssueにCopilotをアサインする

普通にチームメンバーをアサインするのと同じ要領で、Issueの「Assignees」からCopilotを選択する。

このとき「Optional prompt」という入力欄が出てくる。ここが重要で、制約や要件を伝える場所になっている。

書くべき内容の例:

  • テストを必ず書くこと
  • 特定のコーディング規約に従うこと
  • 触っていいディレクトリ、触ってはいけないディレクトリ
  • 既存の実装パターンに合わせること

このプロンプトの書き方で成果物の質が変わるので、雑に空欄で出すより、最低限の制約は入れておきたい。

2. Copilotが作業を開始する

アサインすると、Copilotがリポジトリを分析して作業を始める。進捗はIssue上で確認できる。

3. PRがドラフトとして作成される

作業が完了すると、Copilotがブランチを作成してPRを開いてくれる。あとは人間がレビューして、問題なければマージするだけ。


CLI経由でも実行できる

GitHub CLIを使えば、ターミナルからも同じことができる。

gh agent-task create "ログイン画面にパスワードリセットリンクを追加" --repo owner/repo --base main --follow

主なオプション:

  • --base: ベースブランチを指定
  • --repo: 対象リポジトリを指定
  • --follow: ログをリアルタイムで追従

この機能を使うには GitHub CLI v2.80.0以降 が必要。gh --versionで確認しておこう。

ただし、gh agent-taskコマンドは現時点でpublic previewという位置づけで、将来的にコマンド体系が変わる可能性がある。CIに組み込む場合は、その点を織り込んでおく必要がある。


要件を追加・変更したいとき

ここでひとつ注意点がある。

IssueにCopilotをアサインした後、そのIssueにコメントを追加しても、Copilotはそれを見てくれない。

「あ、やっぱりこの要件も追加で」と思ってIssueにコメントしても、Copilotはすでに最初の情報だけで作業を進めている。

要件を追加したい場合は、CopilotがPRのレビューコメントとして伝える必要がある。PRができてから「ここも直して」とコメントすれば、Copilotが対応してくれる。

運用としては、最初のアサイン時になるべく要件を固めておくか、PRが上がってきてからフィードバックするフローにしておくとスムーズだ。


どこから依頼できるか

IssueへのアサインだけでなくPRを作らせる入口は複数ある。

  • GitHub Issues — 今回紹介した方法
  • Agents panel / tab — GitHub上の専用UI
  • Copilot Chat — チャットから依頼
  • GitHub CLI — ターミナルから実行
  • MCP対応ツール — 外部ツールとの連携

チームの作業スタイルに合わせて、どの入口を使うか統一しておくと混乱しない。


GraphQL APIでの自動化

さらに自動化を進めたい場合、GraphQL APIを使ってプログラムからCopilotをアサインすることも可能だ。

公式ドキュメントには、API経由で操作する際のヘッダ指定(機能フラグ)やトークン権限の条件が記載されている。Issueが特定のラベル付きで作成されたら自動でCopilotをアサインする、といったワークフローを組む場合は参考になる。


実際どういう場面で使えるか

正直なところ、複雑な設計判断が必要なタスクや、ドメイン知識が深く求められる機能開発には向いていない。

一方で、以下のようなタスクには相性がいい:

  • 「このボタンのテキストを変更して」レベルの軽微な修正
  • 既存パターンの横展開(同じ形式のAPIエンドポイントを追加するなど)
  • テストの追加
  • ドキュメントの更新

「これ自分でやると5分で終わるけど、コンテキストスイッチのコストが高い」みたいなタスクを、Copilotに投げておいてあとでレビューだけする、という使い方ができる。


まとめ

  • IssueにCopilotをアサインするだけで、コード変更とPR作成まで自動化できる
  • アサイン時の「Optional prompt」で制約を伝えると品質が上がる
  • アサイン後のIssueコメントは読まれない。追加要件はPRにコメントする
  • GitHub CLI v2.80.0以降ならgh agent-task createでも実行可能(ただしpreview)
  • 対応プランはCopilot Pro / Pro+ / Business / Enterprise

定型的なタスクをどんどん投げて、自分は設計やレビューに集中する。そういう働き方のひとつの選択肢として試してみる価値はある。


参考リンク