日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

Microsoft developer platform更新解説:Dependabotレビューをworkflow_runへ移行する変更点

Microsoft developer platform関連の今回のdocumentation updateで最も重要なのは、Dependabot PRの自動レビュー用ワークフローがpull_request_target起点からworkflow_run起点へ移行し、PR Validation完了後の最終CI結果を使ってレビューするようになった点です。これにより、CIがまだpendingin_progressの段階でレビューコメントが投稿され、古い状態のCI結果を引用してしまう問題を避けやすくなります。2026年5月5日に公開されたPR #612では、aw-dependabot-pr-reviewというagentic workflowのトリガー、CI結果の取得方法、レビュー判定ルール、関連ドキュメントとlockファイルが更新されています。(GitHub)

この変更を確認すべきなのは、Microsoft developer platform関連リポジトリでGitHub Actions、Dependabot、agentic workflow、gh-aw生成ワークフローを運用している管理者やDevOps担当者です。一般のアプリ利用者がすぐ設定変更する話ではありませんが、同様のDependabotレビュー自動化を自社リポジトリへ流用している場合は、トリガー条件、権限、PR番号の解決、CI失敗時のコメント内容を見直す必要があります。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

何が変わったのか:DependabotレビューをCI完了後に動かす構成へ

従来のaw-dependabot-pr-reviewpull_request_targetで起動していました。この方式では、PR上の活動をきっかけに早い段階でワークフローが動くため、resolverステップがPR Validationの状態を取得した時点で、CIがまだ完了していないことがあります。PR #612の説明では、過去の例として、レビュー自体は妥当だったものの、CIバナーにin_progress系の古い結論が表示されるケースが挙げられています。(GitHub)

今回の更新では、レビュー用ワークフローがPR Validationcompletedを待ってから起動します。GitHub Actionsのworkflow_runは、別のワークフローの実行または完了を契機にワークフローを動かすイベントであり、完了後の結果はgithub.event.workflow_run.conclusionで参照できます。(GitHub Docs)

変更後の考え方は、次のように整理できます。

観点変更前変更後確認すべきポイント
起動条件pull_request_targetでDependabot PRに反応workflow_runPR Validation完了後に起動workflows: ["PR Validation"]の名称が実際のCI名と一致しているか
CI結果取得タイミングによってpendingin_progressになり得るworkflow_run.conclusionから最終結果を取得レビュー判定が最終結果前提になっているか
対象ブランチPRイベント側の条件に依存branches: ["dependabot/**"]でDependabot更新を対象化mainなど誤ったブランチ指定にしていないか
失敗チェックの取得agentがAPIをたどる可能性があったresolverがPR_VALIDATION_FAILING_CHECKSを環境変数として渡すchecks: read権限があるか
PR本文agent側の取得に依存しやすいresolverがPR_BODYとしてサーバー側でhydrateMCP経由のフィルタ済み情報だけに依存していないか
コメント投稿先triggeringに依存する設定があった${{ env.PR_NUMBER }}を明示workflow_runでもPR番号が解決できるか

なぜpull_request_targetからworkflow_runへ移すのか

pull_request_targetは、ベースリポジトリのデフォルトブランチのコンテキストで動くため、PRへのラベル付けやコメント投稿のような用途では便利です。一方で、PRのコードをビルドしたり実行したりする用途には注意が必要です。GitHub Docsでも、pull_request_targetで信頼できないコードを実行すると、キャッシュ汚染や意図しない権限・シークレットへのアクセスにつながる可能性があると警告されています。(GitHub Docs)

workflow_runも万能ではありません。GitHub Docsでは、workflow_runで起動したワークフローは、前段のワークフローが権限を持っていない場合でも、シークレットや書き込みトークンへアクセスできる場合があると説明されています。そのため、workflow_run側で未信頼のコードや成果物を不用意に実行しないことが重要です。(GitHub Docs)

今回の更新の実務的な意義は、単に「トリガーを変えた」ことではありません。Dependabot PRのレビューを、CIが終わったあとの確定情報に基づいて行うようにし、レビューコメントをメンテナーの判断材料として信頼しやすくした点にあります。

影響を受けるチームと受けにくいチーム

このdocumentation updateは、Microsoft developer platform全体の一般ユーザー向け機能変更というより、GitHub上のMicrosoft公開リポジトリで使われているCI/CD・agentic workflow運用の変更として捉えるのが正確です。

立場影響度取るべき対応
microsoft/physical-ai-toolchainを保守しているチームPR #612の変更内容、次回Dependabot PRでの動作、レビュー投稿先を確認
aw-dependabot-pr-reviewや類似のagentic workflowを流用しているチームトリガー、環境変数、権限、safe-outputsの設定を比較
Dependabot PRに対して独自レビューbotを運用しているチームCI完了前にコメントしていないか確認
通常のGitHub ActionsでCIだけを回しているチーム直接対応は不要。ただしpull_request_targetの使い方は点検推奨
Microsoft developer platform関連ドキュメントを読むだけの開発者設定変更は不要。運用設計の参考情報として把握

特に注意したいのは、Dependabot PRを「信頼できるbotのPR」と見なして過剰な権限を与えているケースです。GitHubのワークフロー構文では、Dependabot pull requestによってトリガーされるワークフローはフォーク由来のPRのように扱われ、読み取り専用のGITHUB_TOKENになり、シークレットへアクセスできないと説明されています。(GitHub Docs)

移行や設定確認で見るべきポイント

workflow_runの対象ワークフロー名を正確に合わせる

今回の更新では、レビュー用ワークフローはPR Validationの完了を待つ設計です。実際の設定では、次のような構成が中心になります。

on:
  workflow_run:
    workflows: ["PR Validation"]
    types: [completed]
    branches: ["dependabot/**"]

ここで最もよくあるミスは、workflowsに書いた名前が実際のワークフロー名と一致していないことです。ファイル名ではなく、対象ワークフロー内のname:と照合する必要があります。

もう一つの注意点はbranchesです。PR #612では、workflow_runbranchesフィルターはトリガー元runのhead_branchに対して働くため、Dependabot PRを対象にするにはdependabot/**が必要だと説明されています。mainにしてしまうと、Dependabotブランチの完了イベントを拾えない可能性があります。(GitHub)

pendingin_progress前提の判定を残さない

workflow_runtypes: [completed]で起動する場合、レビュー側が扱うべき中心は最終的なconclusionです。PR #612では、successfailurecancelledtimed_outneutralskippedaction_requiredなどの終端状態を明示的に扱うようにrubricが書き換えられています。(GitHub)

実務では、次のように判定を分けるとレビューコメントの品質が安定します。

CI結論推奨される扱いコメントで示す内容
successAPPROVE候補静的な懸念がなく、失敗チェックが空であること
failure / cancelled / timed_out / action_requiredCOMMENT失敗したcheck run名、URL、影響する依存関係面
neutral / skipped / unknownCOMMENTCI信号が判断材料として不十分であること
PR解決失敗COMMENT自動レビューは参考扱いであり、メンテナー確認が必要なこと

ポイントは、CIが失敗したときに「失敗しました」だけで終わらせないことです。 grouped Dependabot PRでは複数パッケージがまとめて更新されるため、どのsurfaceのcheck runが落ちたのかを明示しないと、メンテナーの調査コストが上がります。

PR_VALIDATION_FAILING_CHECKSを前提にレビュー文を作る

今回の更新では、失敗したcheck runの一覧がPR_VALIDATION_FAILING_CHECKSとしてresolverから渡されます。中身はnamehtml_urlconclusionを持つJSON配列として説明されています。(GitHub)

これにより、agent側が毎回checks.listForRefcommits/{sha}/check-runsを呼び出して判断する必要がなくなります。レビュー生成側は、環境変数として渡された確定済みの情報を読み、コメント本文へ反映するだけでよくなります。

設定確認では、次の3点を見てください。

確認項目見る場所不備がある場合の症状
checks: readがあるかworkflowのpermissionscheck run一覧を取得できない
PR_VALIDATION_FAILING_CHECKSがexportされているかresolverステップCI失敗時に具体的な失敗名が出ない
agentがAPI再取得をしていないかpersona / agent markdown権限不足や情報の重複取得が起きる

GitHub Actionsでは、permissionsキーでGITHUB_TOKENに付与する権限をreadwritenoneとして定義できます。checks: readを追加する場合も、ほかの権限が意図せず広がっていないかを同時に確認してください。(GitHub Docs)

PR番号とコメント投稿先を明示する

workflow_runはPRイベントそのものではなく、別ワークフローの実行結果を起点に動きます。そのため、pull_requestpull_request_targetのときと同じコンテキストが常に揃っているとは限りません。

PR #612では、safe-outputsの投稿先が${{ env.PR_NUMBER }}へ変更されています。triggeringのような文脈依存の指定は、workflow_runでは未定義になり得るためです。(GitHub)

自社リポジトリで同じ移行を行う場合は、次の流れを確認します。

手順確認内容
PR解決workflow_run.pull_requests[0]を優先し、必要ならhead_shaから検索する
PR再取得pulls.getなどでbodydraftを信頼できる形で取得する
スキップ判定Dependabot以外、draft、PR解決失敗を明確に分ける
投稿先review、comment、review commentのtargetがPR番号へ向いているか確認する

特にNot in pull request contextのようなスキップが出る場合は、ワークフローが動いているのにPR番号が解決できていない可能性があります。

PR本文の扱いはプロンプトインジェクション対策として見る

今回のPRでは、PR_BODYをresolver側でhydrateし、agentがフィルタ済みのMCP PR本文だけに依存しないようにする意図も説明されています。tools.githubmin-integrity: approvedは維持され、unapprovedへ下げる案はプロンプトインジェクション上の理由で退けられたとされています。(GitHub)

これは、AIエージェントをCI/CDに組み込むうえで重要な観点です。PR本文や差分は、レビュー対象であると同時に、agentに対する入力でもあります。権限のあるワークフロー内で未信頼の入力をそのまま命令として扱うと、意図しないコメント、誤った承認、情報漏えいにつながる恐れがあります。

実務では、次のように分けて考えると安全です。

入力扱い方
CIの最終結果workflow_run.conclusionなど、GitHubが提供する確定情報を使う
失敗check runresolverで取得し、環境変数としてagentへ渡す
PR本文サーバー側で取得し、必要最小限の情報として渡す
PR内の指示文agentへの命令ではなく、レビュー対象のテキストとして扱う

失敗しやすいポイント

今回のMicrosoft developer platform documentation updateを自社ワークフローへ反映する場合、単純な置換では不具合が出やすいです。特に以下の点は、移行後の初回Dependabot PRで必ず確認してください。

失敗例原因対策
レビューが起動しないbranchesmainを指定しているDependabot更新ならdependabot/**を指定する
CI完了前のようなコメントが残るpersona内にpendingin_progress前提の文言が残っているcompleted後の終端状態に合わせてrubricを書き換える
失敗したジョブ名が出ないPR_VALIDATION_FAILING_CHECKSが空、または未設定resolverのcheck run取得とchecks: readを確認
コメント投稿がスキップされるworkflow_runでPRコンテキストを前提にしているPR_NUMBERを解決し、投稿先に明示する
PR本文の内容にagentが過剰反応する未信頼入力を命令として扱っているPR本文はデータとして渡し、system/persona側の指示を優先する
変更したワークフローがすぐ試せないworkflow_runはデフォルトブランチ上のworkflow fileが必要マージ後、次のDependabot PRや検証用PRで確認する

GitHub Docsでも、workflow_runイベントは対象のworkflow fileがデフォルトブランチに存在する場合にのみトリガーされると説明されています。移行作業中のブランチで「設定は正しいのに動かない」と見える場合は、この仕様を疑うべきです。(GitHub Docs)

移行時の実務チェックリスト

同様のDependabotレビュー自動化を運用している場合は、次の順で確認すると手戻りを減らせます。

優先度確認項目判断基準
pull_request_targetでPRコードを実行していないか未信頼コードを実行しているなら設計見直しが必要
workflow_runの対象が正しいかPR Validation完了後だけ起動する
workflow_run.event == 'pull_request'で絞っているかPR以外のrunで誤作動しない
actorがdependabot[bot]に限定されているか想定外のユーザーPRで動かない
PR_NUMBERが解決できるかreview/commentのtargetに使える
checks: readが最小権限で付いているか失敗check runを列挙できる
success以外の結論を明示的に扱っているかfailurecancelledtimed_outaction_requiredをCOMMENTにできる
lockファイルを手編集していないかgh-aw compilerの生成結果と一致している
初回ライブPRで投稿内容を確認したかCIバナーが最終結果と一致している
grouped Dependabot PRで複数runが出た場合を確認したか最新の完了runを見ているか検証する

PR #612でも、次のDependabot PRで実際の挙動を確認し、CIバナーが最終結論と失敗チェック一覧に一致するかを見ることがフォローアップとして挙げられています。(GitHub)

今回の更新から得られる設計上の教訓

この変更は、Microsoft developer platform関連の特定リポジトリにおけるワークフロー修正ですが、CI/CDにAIエージェントを組み込むチーム全般に応用できます。

重要なのは、agentに「判断させる」前に、判断材料を確定させることです。CIがまだ走っている途中でレビューを生成すると、コメントは早く出ますが、メンテナーにとっては信頼しにくい情報になります。逆に、PR Validation完了後にレビューを出せば、投稿は少し遅くなるものの、承認可否や失敗箇所の説明が実務で使いやすくなります。

また、権限のあるワークフローでは、PR本文、差分、artifact、外部入力をすべて「未信頼データ」として扱うべきです。GitHub Security Labも、pull_request_targetと未信頼PRの明示的checkoutを組み合わせると、リポジトリ権限やシークレットを奪われる危険があると説明しています。(GitHub Security Lab)

次に取るべき行動

Microsoft developer platformの今回のdocumentation updateを受けて、まず確認すべきことは3つです。

自分のリポジトリでpull_request_targetを使ってDependabot PRレビューやコメント投稿をしているか確認してください。次に、そのワークフローがCI完了前の状態を拾っていないか、pendingin_progressを前提にした判定が残っていないかを見直します。最後に、workflow_runへ移行する場合は、PR Validationの完了イベント、PR_NUMBERの解決、PR_VALIDATION_FAILING_CHECKSchecks: read、safe-outputsの投稿先まで一体で確認してください。

今回の変更は、レビュー自動化を速くするための更新ではなく、CIの最終結果に基づいて安全かつ実用的なレビューを返すための更新です。Dependabot PRの自動レビューを運用しているチームは、次回の依存関係更新PRを待つだけでなく、現在のワークフロー定義とagentのrubricを照合し、古いトリガー前提の設定を早めに洗い出すことが重要です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次