@@ -140,6 +140,8 @@ export const PROverview = memo(function PROverview() {
140140
141141 // Viewer permissions from GraphQL (more reliable than REST)
142142 const [ viewerPermission , setViewerPermission ] = useState < string | null > ( null ) ;
143+ // Whether the viewer can bypass branch protections (from GraphQL pullRequest.viewerCanMergeAsAdmin)
144+ const [ viewerCanMergeAsAdmin , setViewerCanMergeAsAdmin ] = useState ( false ) ;
143145
144146 // Repo permissions - use GraphQL viewerPermission as primary source
145147 const isArchived = pr . base ?. repo ?. archived ?? false ;
@@ -272,6 +274,7 @@ export const PROverview = memo(function PROverview() {
272274 github . getReviewThreads ( owner , repo , pr . number ) . catch ( ( ) => ( {
273275 threads : [ ] as ReviewThread [ ] ,
274276 viewerPermission : null ,
277+ viewerCanMergeAsAdmin : false ,
275278 } ) ) ,
276279 ] ) ;
277280
@@ -294,6 +297,7 @@ export const PROverview = memo(function PROverview() {
294297 setTimeline ( timelineData ) ;
295298 setReviewThreads ( reviewThreadsResult . threads ) ;
296299 setViewerPermission ( reviewThreadsResult . viewerPermission ) ;
300+ setViewerCanMergeAsAdmin ( reviewThreadsResult . viewerCanMergeAsAdmin ) ;
297301
298302 // Check if branch was already deleted (and not restored) from timeline
299303 // Branch is deleted if there are more delete events than restore events
@@ -1107,7 +1111,7 @@ export const PROverview = memo(function PROverview() {
11071111 }
11081112 approvingWorkflows = { approvingWorkflows }
11091113 onApproveWorkflows = { handleApproveWorkflows }
1110- canBypassBranchProtections = { viewerPermission === "ADMIN" }
1114+ canBypassBranchProtections = { viewerCanMergeAsAdmin }
11111115 />
11121116 { /* Still in progress - only show if NOT a draft and user can merge */ }
11131117 { canMergeRepo && ! pr . draft && (
@@ -3046,8 +3050,10 @@ function MergeSection({
30463050 < p className = "text-sm text-destructive" > { mergeError } </ p >
30473051 ) }
30483052
3049- { /* Bypass rules checkbox - only show for users who can bypass branch protections */ }
3050- { canBypassBranchProtections && (
3053+ { /* Bypass rules checkbox - only show when:
3054+ 1. User can bypass branch protections (viewerCanMergeAsAdmin)
3055+ 2. AND there are actually unmet requirements (something to bypass) */ }
3056+ { canBypassBranchProtections && overallStatus !== "success" && (
30513057 < label className = "flex items-start gap-2 cursor-pointer group" >
30523058 < Checkbox
30533059 checked = { bypassRules }
0 commit comments