Skip to content

[Bug]: PR panel shows an active merge button when GitHub reports the merge as BLOCKED #25583

Open

Description

@herkulano

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. On a GitHub repository, add a ruleset on the default branch with "Require conversation resolution before merging" (required_review_thread_resolution: true) and no required approvals.
  2. Open a pull request and let a review bot (CodeRabbit here) leave one inline comment.
  3. Let every required check pass.
  4. Open the pull request in the T3 Code PR panel.

Expected behavior

The panel shows that the merge is blocked and why, as github.com does: "Merging is blocked. A conversation must be resolved before this pull request can be merged." The merge button is disabled or names the blocker.

Actual behavior

The panel shows an active "Squash and merge" button and no sign of the block. github.com shows "All checks have passed" and "Merging is blocked" for the same pull request.

GitHub already reports the state:

$ gh pr view 98 --json mergeStateStatus,mergeable,reviewDecision
{"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","reviewDecision":""}

reviewDecision is empty because no review is required, so a hint keyed on it says nothing here. mergeStateStatus: BLOCKED with green checks and no required review points at another rule, such as unresolved conversations.

Related, not duplicates:

Impact

Minor bug or occasional failure

Version or commit

Server 0.1.2

Environment

Linux arm64, GitHub repository with a branch ruleset that requires conversation resolution, gh 2.103.2

Workaround

Check the pull request on github.com before merging.

Activity

  1. fsioni commented on Oct 29, 2026

    @fsioni
    Contributor

    Another trigger for the same root cause, on nightly 0.1.4-nightly.20261028.3824 (macOS arm64, desktop app, local server, GitHub App credential):

    A branch protection rule on the base branch requires 6 status checks, and none of them had reported on the head commit. The panel showed an active "Merge" button. Clicking it failed with: Pull request operation runAction failed: GitHub returned an error: 6 of 6 required status checks are expected. (reproduced twice).

    From the source: resolvePullRequestPrimaryControl (apps/web/src/components/pullRequest/[pullRequestDetail.logic.ts](https://github.com/Users/fares/.t3/scratch/2026-10-29-read-triage-playbook-md-users-3824f1c3/apps/web/src/components/pullRequest/pullRequestDetail.logic.ts)) offers "Enable auto-merge" only when checksState is non-null and not "passing". checksState is rolled up from the reported contexts only, so required checks that are missing do not count. With no contexts the value is null, and with only non-required checks green it is "passing". Either way the panel falls through to "Merge". mergeStateStatus: BLOCKED is only used for canMergeNow, which controls whether auto-merge is offered, not for disabling Merge. The code is unchanged on main.

    Expected: when mergeStateStatus is BLOCKED, show the blocker (e.g. "Waiting for N required checks") and offer auto-merge when the repo allows it, instead of an active Merge button.

    Investigated with Claude Code (Claude Opus 5.5) via T3 Code triage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions