GitHub: secret scanning alerts block the merge
"Require secret scanning alerts are resolved" is a rule for rulesets that target branches. It blocks a pull request from merging when a secret scanning scan has not completed for the pull request's head commit, or when a commit in the pull request introduced an open secret scanning alert that matches a secret type selected in the ruleset. The rule is in public preview and subject to change (GitHub's blocking pull request merges that contain secrets, checked October 26, 2026).
PATCH /repos/OWNER/REPO/secret-scanning/alerts/ALERT_NUMBER
{ "state": "resolved", "resolution": "revoked" }
What the rule checks
- The scan of the head commit: until a secret scanning scan completes for the pull request's head commit, the rule blocks the merge, even when no alert is open.
- Alerts the pull request introduced: an open alert introduced by a commit in the pull request blocks it when its secret type is one the ruleset selects: provider patterns, custom patterns or generic patterns. AI-detected secrets are not supported (GitHub's available rules for rulesets).
- What the repository needs: GitHub Secret Protection or GitHub Advanced Security enabled, and secret scanning enabled.
- Where it is set: in a branch ruleset of the repository, or in a ruleset of the organization for the repositories it targets, under "Branch protections".
Why the merge still waits after a fix
- Removing the secret does not close the alert: secret scanning does not automatically close alerts when the token has been removed from the repository; they have to be closed by hand in the alert list (GitHub's resolving alerts from secret scanning).
- A new head commit: after all blocking alerts are closed, the rule can still block the merge until a secret scanning scan completes for the pull request's head commit.
- Treat the secret as compromised: GitHub recommends treating a secret committed to a repository as compromised: review and update the services that use it, and for a GitHub personal access token, delete it and create a new one.
What to do
- Close each blocking alert: in the repository's "Security and quality" tab, under "Vulnerability alerts", open "Secret scanning", open the alert, choose a reason in "Close as", optionally add a comment, and click "Close alert". Every open alert that matches the secret types the ruleset selects has to be closed.
- Through the REST API: "Update a secret scanning alert" sets
statetoresolvedwith aresolutionoffalse_positive,wont_fix,revokedorused_in_tests; the authenticated user must be an administrator for the repository or for the organization that owns it (GitHub's REST API endpoints for secret scanning). - No alert, still blocked: wait for the scan of the head commit to complete.
- Find the rule: anyone with read access to a repository can view its active rulesets (GitHub's about rulesets); the secret types the rule selects decide which alerts count.
GitHub pull requests in IntelliJ IDEA
Pull Request Inbox for GitHub, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, shows a pull request's reviews, checks and conversations next to the diff, and merges it with the methods the target branch allows. When a pull request is blocked, its merge checks say that the rules of the target branch are not met yet, and name the rules they can read from the branch's rulesets. GitHub's REST API documentation for rules gives no type for this rule yet, so the plugin does not name it. The review inbox, diffs and conversations are free; approving, commenting, resolving and merging are Pro (US$1.50 a month, with a 30-day trial).
GitHub is a trademark of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by GitHub, Inc. or JetBrains.
More: GitHub merge refused (405, 409) · GitHub review refused (422) · GitHub search 422 "Validation Failed" · "Resource not accessible by personal access token" · 401 "Bad credentials" · "Resource protected by organization SAML enforcement" · "API rate limit exceeded" · GitHub diff 406 "too_large", 3,000 files · GitHub line comment 422 "must be part of the diff" · GitHub branch update refused (422) · GitHub pull request not created (422, 403) · GitHub auto-merge refused · GitHub draft, ready for review or close refused · GitHub conversation not resolved · GitHub checks not shown (check runs 403) · GitHub file contents not read · GitHub compare refused (404, 422) · GitHub comment or reply refused (403 locked, archived) · GitHub merge method not allowed (405) · GitHub branch not found (404, 301) · GitHub Enterprise Server not reached · GitHub review request not shown · GitHub pull request list incomplete · GitHub 404 Not Found, renamed repositories (301, 307) · GitHub line comment outdated or not on the diff · GitHub pull requests not updating, notifications late · GitHub suggested change cannot be applied · GitHub required check stuck at "Expected" · GitHub code owner review required · GitHub merge blocked by unresolved conversations · GitHub merge blocked by unsigned commits · GitHub branch that merges through a merge queue · GitHub merge waiting for an approval of the most recent push · GitHub merge waiting for code scanning results · GitHub merge waiting for code quality results · GitHub merge blocked by a code coverage threshold · GitHub merge blocked by license compliance results · GitHub branch locked or its updates restricted · GitHub branch not deleted after merging · GitHub merge waiting for a team's approval (Required reviewers) · GitHub stacked pull request not merging · GitHub push blocked by push rules · GitHub merge blocked by commit metadata rules · GitHub force push blocked · GitHub issue not closed by a merged pull request · GitHub pull request not checked out locally · GitHub pull request has merge conflicts · GitHub changes requested and dismissing a review · GitHub co-author not credited for a commit · GitHub dependency review check failed · GitHub Dependabot not rebasing its pull request · GitHub fork not syncing with upstream · GitHub pull request base branch not changing · GitHub pull request not reverting · GitHub pull request template not showing · GitHub pull request labels or assignees not added · GitHub pull request not closing or reopening · GitHub push blocked by push protection · GitHub pull request comment hidden · GitHub pull request blocked until deployments succeed · GitHub team review request replaced by members · GitHub pull request file no longer marked Viewed · GitHub pull request marked merged without being merged · GitHub Copilot review does not count as an approval · GitHub checks not running on a pull request a workflow created · GitHub Update branch button not shown on a pull request · GitHub checks failing on a Dependabot pull request · GitHub checks failing on a pull request from a fork · GitHub checks skipped by [skip ci] in a commit message · GitHub checks gone after the retention period · GitHub code review limits in a public repository · GitHub pull requests turned off or limited in a repository · GitHub checks run on every pull request in a stack · GitHub pull request showing commits already squash merged · GitHub pull request not showing a file diff · GitHub push to a pull request branch from a fork refused · GitHub check cancelled on a pull request · GitHub Rebase and merge not available · GitHub merge commit message not what you expected · GitHub pull request shows every line changed · GitHub API request timed out · GitHub pull request image or document diff not shown · GitHub review request refused (422) · GitHub pull request from Copilot: checks not running, approval not counted · GitHub push refused: GH006 and GH013 on a protected branch · GitHub "At least 1 approving review is required", approvals that do not count · GitHub pull request plugins for IntelliJ IDEA, compared · 日本語