GitHub: a push is blocked by push protection
Push protection is a secret scanning feature that blocks a push containing a supported secret before it reaches the repository. It covers pushes from the command line, commits made in the GitHub UI, file uploads and requests to the REST API (GitHub's push protection, checked October 27, 2026). The branch of a pull request is pushed like any other, so a secret in any commit of the push stops the whole push, and the message lists every commit and path where the secret is.
git push blocked: commit and path of each secret, and a URL PUT /repos/OWNER/REPO/contents/PATH 409 POST /repos/OWNER/REPO/git/blobs 409 POST /repos/OWNER/REPO/secret-scanning/push-protection-bypasses
Where the block comes from
- Push protection for repositories: it requires GitHub Secret Protection, is disabled by default, and can be enabled by a repository administrator, an organization owner, a security manager or an enterprise owner. It blocks pushes containing secrets to the repositories it protects, and a bypass creates an alert in the Security and quality tab.
- Push protection for users: only on GitHub.com, enabled by default for your account, it stops you from pushing secrets to public repositories. Bypassing it needs no reason and creates no alert, unless push protection is also enabled for the repository.
- On the web: creating, editing or uploading files on GitHub is blocked the same way, one detected secret at a time. A secret that already has an alert in the repository is not blocked (GitHub's push protection in the GitHub UI).
- The REST API: "Create a blob" and "Create or update file contents" include push protection, and answer 409 when the content of the request includes a supported secret (GitHub's push protection from the REST API).
What to do
- Remove the secret from every commit: if your latest commit added it, remove it, run
git commit --amend --alland push. If earlier commits have it, find the earliest commit the message lists, startgit rebase -i COMMIT-ID~1, changepicktoeditfor that commit, remove the secret, thengit add .,git commit --amend,git rebase --continueand push (GitHub's push protection from the command line). - Bypass it: by default, anyone with write access to the repository can bypass push protection by giving a reason. Open the URL from the blocked push as the same user who pushed (anyone else gets 404), choose It's used in tests, It's a false positive or I'll fix it later, click Allow me to push this secret, and push again within three hours.
- The alert it leaves: used in tests and false positive create a closed alert; I'll fix it later creates an open alert. For a ruleset that requires secret scanning alerts to be resolved, see secret scanning alerts.
- No option to bypass: the repository uses delegated bypass. Request bypass privileges from the same URL with a comment; reviewers approve or deny it, and the answer comes by email. Requests expire after 7 days. Once approved, you can push those commits and later commits with the same secret.
- From the REST API: remove the secret, or call
POST /repos/OWNER/REPO/secret-scanning/push-protection-bypasseswith areason(false_positive,used_in_testsorwill_fix_later) and theplaceholder_idthat push protected routes return. The user must be the original author of the committed secret; it answers 403 without enough permissions, and 404 when the placeholder is not found or push protection is disabled (GitHub's create a push protection bypass). - Another kind of block: a push refused for file paths, extensions or sizes is a push ruleset; see push rules.
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. It does not push commits or write files, so push protection does not stop it; pushing a branch from the IDE is a Git push, and GitHub's message for a blocked push lists the commits, the paths and the URL to bypass. 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 merge blocked by secret scanning alerts · 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 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 · 日本語