A solo maintainer cannot give themselves a real second review, so the practical answer is to find one trusted reviewer for the changes that matter most: release workflows, dependency bumps, and anything touching authentication or publishing. Require that approval with branch protection, and keep a written fallback for the rest.
Why two-person review matters for a one-person project
Most project compromises do not start with a clever exploit. They start with one account, one stolen token, or one rushed merge. A second approval turns each of those into a two-step problem for an attacker. That is the whole value, and it applies even when the second person only reads a small slice of the project.
Find the second reviewer
You do not need a co-maintainer with full rights. You need someone who will read a diff and say yes or no. Good candidates:
- A frequent contributor who already knows the code.
- A maintainer of a neighbouring project who will swap reviews with you.
- A colleague at a company that depends on your library.
Give that person the Write role on the repository, not Admin. GitHub's role table says Write users can approve reviews and merge pull requests but cannot manage branch protection rules, while Admin can manage security settings and rulesets. Keep the settings out of the reviewer's hands.
Turn the review into a rule
Branch protection can require a set number of approving reviews before merge. It also has an option to require approval of the most recent reviewable push by someone other than the person who pushed it. Turn that on, so a late change cannot slip in after approval. GitHub notes that dismissing stale approvals is the safer choice if you worry about unapproved content being added to an approved pull request, so consider using that setting instead, or as well.
One catch: by default these restrictions do not apply to repository admins. There is a separate option to stop admins bypassing them. As the only admin, you will probably want to enable it, so the rule binds you on a tired Friday.
Scope the rule to what is risky
Requiring a reviewer for every typo fix will stall a volunteer project fast. Use code owners to route only sensitive paths to the second person:
- The
.github/workflowsdirectory - Release and packaging scripts
- Dependency manifests and lockfiles
- Authentication and crypto code
Everything else can follow your normal pace. See CODEOWNERS protects workflow files for the setup.
A fallback when your reviewer is away
Write down what happens if the reviewer is unreachable for two weeks. Options that keep the control honest:
- Hold risky changes until they return.
- Ship only low-risk changes in the meantime and say so in the changelog.
- Add a second named reviewer so you have a bench.
Avoid the quiet option of switching the rule off "just this once". Disabled rules tend to stay disabled.
Try it yourself
Open the demo and watch how a pull request is blocked or allowed by a gate. Look at which checks decide the outcome, then think about which of them your project could run on every change.
Click through it at your own pace, or open it full screen.
Safeguard policies and gates can also block a merge when a dependency change breaks a rule you set, which helps when your second reviewer is not a dependency expert.
Quick check
Can I approve my own pull request?
Not in a way that counts. With the most recent push option on, the latest push needs approval from someone other than the person who pushed it.
Does my reviewer need Admin rights?
No. Write is enough to approve and merge, and it keeps branch protection and security settings in your hands.
Sources
Last reviewed: 19 October 2026.