7月27日、Giovanni Galloroが「Automated pull request reviews with Gemini Managed Agents」と題した記事を公開した。GeminiマネージドエージェントをGitHub Actionsと組み合わせてPRの自動コードレビューを実装する方法について、設計の核心から実装詳細まで詳しく紹介されている。
PRが開くたびにエージェントがレビューし、一発適用できる修正を投稿する
記事で紹介されているのは、**github-pr-reviewerと名付けられたOSSの実装だ。GitHubリポジトリにPRが作成・更新されるたびにGitHub Actionsが起動し、Gemini Managed Agentがコードをレビュー。結果をPRの差分の該当行に直接コメントとして投稿する。修正内容が該当行に収まる場合は、GitHubの「Suggested Change」として提案されるため、開発者はワンクリックでそのままコミット**できる。
ソースコードはgithub.com/ggalloro/github-pr-reviewerで公開されており、任意のリポジトリにコピーして使える。
Gemini Managed Agentsとは何か
Gemini Managed Agentsは、Gemini APIの機能の一つだ。Interactions APIへの1回の呼び出しで、Gemini 2.5 FlashとGoogleのAntigravityハーネスで動くエージェントが、隔離されたLinuxサンドボックス上で起動する。このサンドボックスはBashやPythonの実行、ファイル操作、許可したネットワークへのアクセスが可能だ。エージェントループを自分で書く必要はなく、タスク・環境・指示を記述するだけでエージェントが自律的に実行し結果を返す。
今回使われているのはAntigravityエージェントで、開発者がローカルでコード生成に使うものと同じ仕組みをホステッドサービスとして提供したものだ。Agent Skillsも利用でき、ローカル開発向けに書いた指示をそのまま自動化パイプラインに転用できる。
認証情報をサンドボックスに渡さない設計
このシステムの核心の一つが認証情報の扱い方だ。
GitHubトークンにはActions実行時に自動生成されるエフェメラルなGITHUB_TOKENを使用する。このトークンはサンドボックス内には一切入らない。代わりに、エグレスプロキシ(サンドボックスの外側)がgithub.comやapi.github.comへのアウトバウンドリクエストにAuthorizationヘッダーを付与する、ネットワークレイヤーでの認証インジェクションを採用している。
エージェントはサンドボックス内に/workspace/bin/ghとしてマウントされたGitHub CLIシムも使える。シム内ではダミートークンでCLIのローカル認証チェックを通過し、実際のトークンはプロキシが差し替える仕組みだ。エージェントに「認証情報を表示せよ」と指示しても、表示するものが何もない状態になっている。
Gemini APIキーも同様に、Actions secretsに格納されランナーがインタラクション作成に使うだけで、サンドボックスには届かない。
レビューの「記憶」を持たせる仕組み
各サマリーコメントの末尾に、HTMLの非表示マーカーとしてインタラクションIDと環境IDが埋め込まれる。次回の実行時にスクリプトがこのマーカーを検出し、previous_interaction_idを渡して会話を再開する。フォローアップレビューでは「前回の指摘が修正されたか否か」を把握した上で、新しい差分についてのみ新規指摘を行う。
プライベートリポジトリの場合、前回のサンドボックスに残った期限切れトークンを避けるため、会話履歴を引き継ぎつつ新しいサンドボックスを起動する。
for event in client.interactions.create(
agent="antigravity-preview-05-2026",
system_instruction=base_instruction + skill_text,
input=prompt, # PR context + unified diff + the JSON findings schema
environment=environment,
stream=True,
):
delta = getattr(event, "delta", None)
if delta is not None and getattr(delta, "text", None):
chunks.append(delta.text)
if getattr(event, "interaction", None) is not None:
final = event.interaction
result = json.loads("".join(chunks)) # summary + findings
state = (final.id, final.environment_id) # saved for the next round
レビューには数分かかるため、同期接続が中間ゲートウェイに切断されるリスクを避けるため**stream=Trueでストリーミング**している点も実用上重要だ。
レビュー基準は差し替え可能なスキルファイル
レビュー基準はSKILL.mdという1ファイルで定義され、REVIEW_SKILL変数で実行ごとに切り替えられる。デフォルトではsecurity-reviewとcode-quality-reviewが同梱されている。
実際の検証では、Pythonフロントエンド・Javaレジャー・Python各種サービスからなるマルチサービスのバンキングアプリのPRに対してレビューを実行。time-of-check/time-of-useの競合状態や未処理例外など4件の指摘が投稿され、そのうち例外処理についてはワンクリック適用できるSuggested Changeも生成された。
今後の発展方向
記事では今後の拡張として複数の方向性が挙げられているが、特に実用上の優先度が高いと思われる点を紹介する。
まず**/fixコメントコマンドによるエージェント実装**だ。指摘をそのままブランチに実装してPRを開く仕組みで、レビューから修正までの一連の流れを完全自動化する。現状の「指摘の投稿」から「修正の実施」まで踏み込む、最も大きなステップアップにあたる。
次に認証基盤の強化がある。現在はAPIキー認証だが、Google Cloud Agent PlatformのGA後はWorkload Identity FederationでOIDCトークンを使う構成が推奨されている。本番利用を見据えるなら、この移行を早期に計画しておく意義は大きい。
またPRラベルやパスに応じたルーブリックの自動ルーティング(auth/配下はセキュリティレビュー、など)も挙げられており、大規模なモノレポ運用での適用可能性を広げる方向性として注目される。
詳細はAutomated pull request reviews with Gemini Managed Agentsを参照していただきたい。