GitHub:必須のチェックが「Expected — Waiting for status to be reported」のまま
ブランチの保護やルールセットは、マージの前に通るべきステータスチェックを必須にできます。プルリクの最新のコミットにまだ報告していない必須のチェックは、マージの欄に「Expected — Waiting for status to be reported」(予定・報告待ち)と出ます(GitHub のコミュニティの報告に引かれている文)。報告して合格するまで、プルリクはブロックされたままです。下の原因は GitHub の説明「必須のステータスチェックのトラブルシューティング」によります。API ではプルリクの mergeable_state が blocked、GraphQL の mergeStateStatus が BLOCKED です(2026年10月26日に確認)。
GET /repos/OWNER/REPO/branches/BRANCH → protection.required_status_checks.contexts GET /repos/OWNER/REPO/rules/branches/BRANCH → 規則 "required_status_checks" の required_status_checks[].context GET /repos/OWNER/REPO/commits/SHA/check-runs → check_runs[].name GET /repos/OWNER/REPO/commits/SHA/status → statuses[].context
報告が来ない理由
- ワークフローが飛ばされた:パスの絞り込み、ブランチの絞り込み、コミットのメッセージの飛ばす指示([skip ci])でワークフローが飛ばされると、そのチェックは保留のまま残り、マージを止めます。GitHub の例では、
scripts以下のファイルが変わった時だけ走るワークフローに対し、リポジトリの直下のファイルだけを変えたプルリクが「Waiting for status to be reported」でブロックされます。GitHub の勧めは、飛ばされうるワークフローを必須にしないことです。 - 数に入らないイベント:ワークフローのジョブのチェックがプルリクで数に入るのは、実行のきっかけが
push・pull_request・pull_request_review・pull_request_target・deployment・deployment_statusのときだけです。head のブランチでworkflow_dispatchから始めた実行は、head のコミットで合格しても必須を満たしません。外部の GitHub App のチェックには当てはまりません。 - マージの衝突:プルリクに衝突がある間は、
pull_requestのワークフローは走りません。先に衝突を解きます。pull_request_targetのワークフローは走ります(GitHub の説明「ワークフローを起動するイベント」)。 - マージキュー:GitHub Actions のチェックを必須にしたキューでは、ワークフローを別の
merge_groupイベントでも走らせる必要があります。無いとチェックが報告されず、マージは失敗します。 - 承認待ちのフォークの実行:フォークから出したプルリクのワークフローの実行は、書き込み権限のあるメンテナーの承認が要ることがあります(「Awaiting approval」→「Approve workflows to run」)。30日を超えて承認を待った実行は期限切れになり、失敗の扱いになります。
- 別の名前:必須は名前で決まります。ジョブの名前を変えたなどで別の名前で報告したチェックは、必須のチェックの代わりにならず、必須のほうは「Expected」のまま残ります。必須の名前と、head のコミットに報告された名前を比べます(上の4つの読み取り)。
- 別のアプリ:必須には、チェックを付けるべき GitHub App を指定できます(ブランチの保護では
app_id、ルールセットではintegration_id)。ほかの人や連携が付けた状態ではマージできず(GitHub の説明「保護されたブランチについて」)、GitHub は例えば「Required status check "build" was not set by the expected GitHub App.」(必須のチェック build が、決められた GitHub App から付けられていません)と言います。 - 前のコミット:必須のチェックは最新のコミットで合格する必要があり、前のコミットのチェックは数に入りません。push の後は、もう一度報告が要ります。
合格として数えられる物
- 結果:
success・skipped・neutralは必須を満たします。条件で飛ばされたジョブは「Success」と報告し、必須でもマージを止めません(GitHub の説明「ステータスチェック」)。cancelled(取り消し)やstaleになったチェックは満たさず、もう一度走るまで止めます(取り消されたチェック)。 - 失敗したジョブの後のジョブ:
needsの先が失敗したジョブは飛ばされ、マージを止めないことがあります。ほかのジョブに頼る必須のチェックには、needsと一緒にalways()を使うよう GitHub は勧めています。 - 同じ名前の2種類:チェックとコミットのステータスが同じ名前で、その名前が必須なら、両方が合格する必要があります。
- マージのコミットか head か:試しのマージのコミットにステータスがあれば、合格すべきはそちらです(「Showing checks for the merge commit」)。無ければ head のコミットです。
- 最新であること:規則がブランチを最新にするよう求めているなら、先に base のブランチをマージかリベースで取り込みます(ブランチの更新が断られる理由)。
直す所
- 飛ばされるワークフロー:絞り込みで飛ばされうるワークフローを必須にしません。条件で飛ばされたジョブは Success と報告するので、ワークフローの絞り込みでなくジョブの条件にすれば、チェックは報告され続けます。
- イベント:ワークフローを
pull_requestで起動します(マージキューならmerge_groupも)。 - 名前とアプリ:ブランチの保護の規則かルールセットで、必須の名前をチェックが報告する名前に、必須のアプリを実際に付けるアプリに合わせます。
- フォーク:変更(とくに
.github/workflows/以下)を見てから、ワークフローの実行を承認します。 - ブランチへ直接 push する:必須のチェックが合格する前に保護されたブランチへ push すると、
GH006: Protected branch update failedと「Required status check "NAME" is failing」(必須のチェック NAME が失敗しています)で断られます。 - 管理者:ブランチの保護の規則の制限は、既定では管理者の権限を持つ人と「bypass branch protections」の権限を持つ役割には掛かりません。マージできる人と待たされる人がいるのはそのためです。
IntelliJ IDEA の「All required checks have passed」「Checks in progress…」「Checks failed」
IntelliJ IDEA に入っている GitHub のプルリクの機能は、プルリクの状態にチェックの行を1つ出し、Details… のリンクでチェックの一覧を開いて、1つをブラウザで開けます。ソース(2026年10月30日に確認)では、この行はプルリクの最後のコミットにあるチェック(コミットのステータスと check runs の両方)から決まり、それぞれが必須かどうかは GitHub の isRequired(このプルリクをマージする前に通る必要があるか)で読みます:
- 「All required checks have passed」(必須のチェックは全部通った)は、必須のチェックが全部成功したときに出ます。必須でないチェックは数えないので、必須が1つも無いときも、ほかのチェックがどうなっていても、この文になります。
- そうでないときは、走っているチェックが1つ以上あり、失敗したチェックも1つ以上あれば「Checks in progress, and some already failed…」、走っているチェックがあり失敗が無ければ「Checks in progress…」、それ以外はすべて「Checks failed」です。
- 失敗として数える物:状態が error・failure・expected のコミットのステータスと、結果が
failure・cancelled・timed_out・stale・action_required・startup_failure・neutralの check run。結果がskippedの check run は、通ったとも失敗したとも数えず、スキップとして数えます。そのため、必須のチェックが neutral か skipped で終わると、走っているチェックが無いときは行が「Checks failed」のままになります。GitHub は、必須のチェックではどちらも通ったと数えます(GitHub の説明「About protected branches」)。 - コミットに何も無い必須のチェックは、この行が数えるチェックに入りません。そのため、GitHub がそのチェックを「Expected — Waiting for status to be reported」と出してマージを止めている間も、行は「All required checks have passed」になることがあります。最後のコミットにチェックが1つも無いときは、行は出ません。
ソース:GHPRMergeabilityStateBuilder.kt・CodeReviewDetailsStatusComponentFactory.kt・CollaborationToolsBundle.properties。下のプラグインは、結果が neutral か skipped の check run を失敗でなく「スキップ」と出し、まだ報告していない必須のチェックを1つずつ名前で出します。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。head のコミットのチェックを、コミットのステータスと check runs の両方とも、リンクつきで一覧にします。GitHub がプルリクを blocked と言うときは、マージの確認に「対象のブランチのルールをまだ満たしていない(必須のレビューか、必須のチェック)」と出します。head のコミットでまだ報告していない必須のチェックは、対象のブランチの保護とルールセットから名前を読み、そこに「必須のチェック「名前」が、このコミットでまだ報告されていません」と1つずつ出します(トークンにコミットのチェックが全部は見せてもらえない時は出しません)。Fine-grained のトークンには check runs が見せてもらえません(チェックが出ない理由)。受信箱・差分・会話は無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:GitHub のマージの断り(405・409) · GitHub のレビューの断り(422) · GitHub の検索の 422「Validation Failed」 · 「Resource not accessible by personal access token」 · 401「Bad credentials」 · 「Resource protected by organization SAML enforcement」 · 「API rate limit exceeded」 · GitHub の差分の 406「too_large」・3,000件 · GitHub の行のコメントの 422「must be part of the diff」 · GitHub のブランチの更新の断り(422) · GitHub のプルリクが作れない(422・403) · GitHub の自動マージの断り · GitHub の下書き・レビュー準備完了・閉じるの断り · GitHub の会話の解決の断り · GitHub のチェックが出ない(check runs の 403) · GitHub のファイルの中身が読めない · GitHub の比較の断り(404・422) · GitHub のコメント・返信の断り(ロック・アーカイブの 403) · GitHub のマージの方法の断り(405) · GitHub のブランチが見つからない(404・301) · GitHub Enterprise Server につながらない · GitHub のレビューの依頼が出ない · GitHub のプルリクの一覧が足りない · GitHub の 404・名前を変えたリポジトリ(301・307) · GitHub の行のコメントが outdated・差分に無い · GitHub のプルリクの更新・通知が遅い · GitHub の変更の提案が適用できない · GitHub でコードオーナーのレビューが要る · GitHub で未解決の会話がマージを止める · GitHub で署名の無いコミットがマージを止める · GitHub のマージキューでマージするブランチ · GitHub でマージが最後の push の承認を待っている · GitHub でマージがコードスキャンの結果を待っている · GitHub でマージがコード品質の結果を待っている · GitHub でコードのカバレッジの水準がマージを止める · GitHub でライセンスの適合の結果がマージを止める · GitHub でブランチのロックや更新の制限がマージを止める · GitHub でマージの後にブランチが消えない · GitHub でチームの承認(Required reviewers)がマージを止める · GitHub でシークレットスキャンのアラートがマージを止める · GitHub でスタックしたプルリクがマージできない · GitHub で push の規則が push を止める · GitHub でコミットのメタデータの規則がマージを止める · GitHub で強制 push が止められる · GitHub でプルリクをマージしても issue が閉じない · GitHub のプルリクを手元にチェックアウトできない · GitHub のプルリクがマージ先と衝突している · GitHub で変更を依頼された・レビューを取り消す · GitHub で共同作者がコミットに数えられない · GitHub で依存関係のレビューのチェックが失敗する · GitHub で Dependabot がプルリクをリベースしない · GitHub でフォークが同期できない · GitHub でプルリクのベースのブランチを変えられない · GitHub でプルリクを取り消せない · GitHub でプルリクのテンプレートが出ない · GitHub でプルリクにラベルや担当者が付かない · GitHub でプルリクを閉じられない・開き直せない · GitHub でプッシュ保護にプッシュを止められた · GitHub でプルリクのコメントが隠された · GitHub でデプロイが成功するまでプルリクをマージできない · GitHub でチームに頼んだレビューがメンバーに置き換わった · GitHub でプルリクのファイルの Viewed が外れた · GitHub でマージしていないプルリクがマージ済みになった · GitHub で Copilot のレビューが承認に数えられない · GitHub でワークフローが作ったプルリクのチェックが動かない · GitHub でプルリクに Update branch のボタンが出ない · GitHub で Dependabot のプルリクのチェックが失敗する · GitHub でフォークからのプルリクのチェックが失敗する · GitHub でコミットメッセージの [skip ci] でチェックが動かない · GitHub で保存期間を過ぎてチェックが消えた · GitHub の公開リポジトリのコードレビューの制限 · GitHub でリポジトリのプルリクがオフ・制限されている · GitHub でスタックのプルリクごとにチェックが走る · GitHub でスカッシュでマージ済みのコミットが次のプルリクに出る · GitHub のプルリクでファイルの差分が出ない · GitHub でフォークのプルリクのブランチに push できない · GitHub のプルリクのチェックが取り消された · GitHub で Rebase and merge が使えない · GitHub のマージのコミットメッセージが思った形にならない · GitHub のプルリクでファイルの全行が変わったと出る · GitHub の API がタイムアウトした · GitHub のプルリクで画像や文書の差分が見た目で出ない · GitHub のレビューの依頼が断られる(422) · GitHub で Copilot が作ったプルリクのチェックが動かない・承認が数えられない · GitHub の push が GH006・GH013 で断られる · GitHub で承認が足りずマージできない・数に入らない承認 · JetBrains の IDE で GitHub のプルリクを扱う · English