Skip to content

PR の承認の仕組みと、AI が作る PR ​

ブランチ保護(ルールセット)で main を守る では、PR の承認の必要人数を 0 人に設定しました。このページでは、その背景にある「承認」の仕組みを詳しく説明します。あわせて、AI が作る PR に対して GitHub が設けている仕組みと、AI と一緒に作業を進める中で起きたことをまとめます。

レビューの種類 ​

GitHub の PR(プルリクエスト:変更の提案)には、内容を確認した人が付けられる「レビュー」という機能があります。レビューには 3 つの種類があります。

種類意味
Comment(コメント)意見や質問を書き込むだけ。賛成も反対もしない
Approve(承認)「この変更をマージしてよい」と正式に賛成する
Request changes(修正依頼)「直してからでないとマージしないでほしい」と求める

ブランチ保護の「承認の必要人数」は、マージする前に Approve が何人分必要かを決める設定です。

承認 0 人の意味 ​

承認の必要人数を 0 人にすると、Approve がなくてもマージできます。ただし、ほかのルール(PR が必須、チェックの合格が必須)は引き続き守らせます。

0 人は「確認しなくてよい」という意味ではありません。正式な承認の記録を、マージの条件にしないという意味です。

自分の PR は承認できない ​

PR を作った本人も、変更内容を読んだり、コメントを書き込んだりはできます。しかし、自分の PR に Approve を付けることは、GitHub の仕組みとして禁止されています。

作った本人ができること作った本人ができないこと
変更内容(Files changed タブ)を読んで確認する自分の PR に Approve を付ける
気になる行にコメントを書き込む
Comment のレビューを付ける
確認が終わったら、自分でマージする

そのため、1 人で運用しているリポジトリで承認を 1 人以上にすると、誰もマージできなくなります。

AI があなたのアカウントで作る PR も同じ ​

Claude Code のような AI エージェントが、あなたの GitHub アカウントの権限で PR を作った場合、GitHub から見た PR の作者はあなたです。そのため、あなたはその PR にも Approve を付けられません。

このサイトでは、AI が変更内容と影響を説明し、人がそれを確認してからマージを指示する、という運用をしています。これは実質的に人によるレビューですが、GitHub 上に Approve の記録は残りません。確認した記録を残したい場合は、マージの前に「確認しました」とコメントを書く運用にもできます。

2 つ目のアカウントで承認するのは不可 ​

自分で承認するために、2 つ目の GitHub アカウントを作る方法は使えません。GitHub の利用規約では、無料のアカウントは 1 人 1 つまでと定められています。

業務で承認者がいなくなった場合 ​

業務で承認を 1 人にしていて、承認するメンバーが退職などでいなくなった場合を考えます。

必要人数は途中で変更できる ​

承認の必要人数は、リポジトリの管理者(admin 権限を持つ人)であれば、いつでも変更でき、すぐに反映されます。組織(Organization:会社やチームで GitHub を共有するための単位)でルールを設定している場合は、組織の管理者が変更します。

退職した人が唯一の管理者だった場合は、誰も変更できなくなります。管理者は複数人にしておくのが基本です。

退職者の承認は数に入らなくなる ​

マージの条件として数えられるのは、そのリポジトリへの書き込み権限を持つ人の承認だけです。退職して組織から外れると書き込み権限がなくなるので、その人が退職前に付けた承認は、数に入らなくなると考えておく必要があります。承認済みだと思っていた PR が、急にマージできなくなることがあります。

0 人に下げる前に検討すること ​

承認を 0 人に下げると、誰の確認もないまま本番に変更を入れられる状態になります。品質や不正防止のための仕組みを外すことになるので、次の順に検討します。

順番対応内容
1別のメンバーをレビュアーにする書き込み権限を持つほかのメンバーが承認できるようにする。本来はこれが対応の中心
2CODEOWNERS を更新するCODEOWNERS は「このファイルは、この人の承認が必要」と指定するファイル。退職者の名前が残っていると、その部分の PR がマージできなくなるので、後任に書き換える
3期限を決めて、一時的に 0 人にする後任が決まるまでの間だけ下げる。理由と、元に戻す予定日を記録しておく

会社によっては、「本番に入る変更には、必ずほかの人の承認が必要」と社内規程で定めていることがあります。その場合、0 人に下げること自体が規程違反になる可能性があるので、変更する前に責任者に確認します。

AI が作る PR と、追加の承認 ​

ルールセットを適用したところ、こちらが書いていない次の設定を、GitHub が自動で追加していました。

json
"require_extra_approval_for_unattributed_changes": true

GitHub の公式ドキュメントでは、この設定は「Additional approval for unattributed Copilot pull requests」(人に結び付いていない Copilot の PR に、追加の承認を求める)として説明されています。2026 年に追加された機能で、まだ試験提供(public preview)の段階です。新しいルールセットにも既存のルールセットにも、最初から有効になっています。

なぜこの設定があるのか ​

「承認を 1 人必要にする」というルールは、本来「変更を書いた人」と「承認した人」の 2 人の人間が関わることを前提にしています。

ところが、GitHub の AI(Copilot)が、特定の人の依頼ではなく AI 自身の名義で PR を作ると、「変更を書いた人」にあたる人間がいなくなり、この前提が崩れます。そこで、そうした PR には、設定した人数より 1 人多い承認を求めます。

人が PR を作った場合AI が自分の名義で PR を作った場合
変更に関わる人作成者 + 承認者 1 人AI + 承認者 2 人
承認 1 人のルールで必要な承認の数1 人2 人
結果として関わる人間2 人2 人

AI が作った PR でも、関わる人間を 2 人にそろえるための、理にかなった仕様といえます。

GitHub が数えるのは、書き込み権限を持つ人の承認が何人分あるかだけです。「AI に依頼した人」と「もう 1 人のレビュアー」という役割までは区別しません。誰と誰が承認するかは、チームの運用ルールとして決めておく必要があります。

なお、AI が「特定の人の依頼で作った」と記録されている PR は、その人が作成者として扱われるので、追加の承認は求められません。

承認 0 人なら効果はない ​

公式ドキュメントには、承認の必要人数が 0 人の場合、この設定は何の効果も持たないと明記されています。このサイトは 0 人なので、影響はありません。実際に、この設定が有効なままでも、チェックに合格した PR はマージできる状態になりました。

GitHub は AI の PR をどう見分けているか ​

GitHub は、PR の中身を読んで「AI が書いたかどうか」を判断しているわけではありません。判断の材料は、誰の名義で PR やコミットが作られたかです。

PR を作ったアカウントの種類 ​

種類意味このサイトでの例
User人間のアカウント作業用ブランチから作った PR の作者
Botアプリが動かすアカウントDependabot が作った PR の作者 dependabot[bot]

Copilot が自分の名義で PR を作ると、作者は Copilot のアプリのアカウントになります。そのうえで、その PR が特定の人の依頼として記録されているかどうかで、「人に結び付いているか」が決まります。

コミットの作者が GitHub アカウントに結び付いているか ​

コミット(変更の記録)には、作者の名前とメールアドレスが書かれています。GitHub は、そのメールアドレスが登録済みの GitHub アカウントのものかどうかを照合します。

このサイトで Claude Code が作ったコミットを確認すると、次のようになっていました。

項目内容GitHub アカウントとの紐付け
コミットの作者リポジトリの持ち主(GitHub 用のメールアドレス)紐付いている
コミットメッセージ末尾の共同作者の記載Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>このメールアドレスの GitHub アカウントは存在しない

Claude Code は、リポジトリの持ち主の GitHub アカウントの権限で動いています。そのため、GitHub から見ると PR の作者もコミットの作者も持ち主本人です。AI が関わったことを示すのは、AI が自分で書き加えている Co-Authored-By の 1 行だけです。

確かめられていないこと ​

ほかのリポジトリからは、「GitHub アカウントに紐付かない共同作者の記載があると、人に結び付いていない変更として扱われ、追加の承認を求められた」という報告があります。しかし、公式ドキュメントが説明しているのは Copilot の PR についてだけで、共同作者の記載がどう扱われるかは書かれていません。

このサイトは承認 0 人なので、この設定は効果を持たず、実際にどちらの扱いになるのかを確かめる手段がありません。業務で承認を 1 人以上にしていて、AI エージェントに PR を作らせる場合は、試験用のリポジトリで「共同作者の記載がある PR に、追加の承認が求められるか」を確かめてから導入するのが確実です。

AI と進める中で起きたことと、その対処 ​

この設定作業は Claude Code と一緒に進めました。その中で起きたことと、その対処をまとめます。

起きたこと対処
ルールセットを適用したとき、AI は「説明のない設定項目がある。意味は分からない」と伝え、判断の材料を出さずに止まった。調べる範囲を広げさせたところ、公式ドキュメントに説明が見つかった「分からない」と言われたら、どこまで調べたのかを確認する。公式ドキュメントや変更履歴など、調べる範囲を広げさせる
AI は「GitHub が自動で付けた設定は 2 つ」と説明したが、プログラムで比較すると 4 つだった設定や数値の比較は、目で見て数えさせずに、プログラムで比較させる

どちらも、AI の説明をそのまま判断の根拠にせず、「どう調べたのか」「どう確かめたのか」を確認することで防げるものです。

まとめ ​

  • PR のレビューには Comment、Approve、Request changes の 3 種類がある。ブランチ保護の「承認の必要人数」は Approve の数。
  • 自分の PR には Approve を付けられない。AI があなたのアカウントで作った PR も、あなたの PR として扱われる。
  • 承認 0 人は「確認しなくてよい」ではなく、「正式な承認の記録をマージの条件にしない」という意味。
  • 業務で承認者がいなくなったときは、0 人に下げる前に、別のレビュアーの指定や CODEOWNERS の更新を検討する。
  • 人に結び付いていない Copilot の PR には、GitHub が承認を 1 人追加する。承認 1 人なら、人間 2 人がそろうように設計されている。承認 0 人なら効果はない。
  • GitHub は、アカウントの種類と、コミットのメールアドレスとアカウントの紐付けで、PR が誰のものかを判断している。AI エージェントを業務で使う前に、追加の承認が求められるかを試しておく。
  • AI の説明は、「どう調べたのか」「どう確かめたのか」を確認してから判断に使う。

参考 ​