GITHUB PLUGIN

A tap before
you merge.

A GitHub App that asks you to confirm your own pull request from your phone before it merges. One install, one required check.

How it works

  1. 1

    Install it on your repositories

    Pick which repos it runs on. GitHub calls it a GitHub App; it shows up in your TeamSigner account straight away.

  2. 2

    Make the check required

    Add teamsigner/approval as a required status check on the branch you protect. That is what turns the plugin from advice into a gate.

  3. 3

    Approve from your phone

    A pull request opens, the signer's phone buzzes, they tap approve. The check goes green and the merge button unlocks.

Worth knowing

Tied to the commit

The approval is signed over the exact commit. Push another one and it has to be approved again.

It doesn't read your code

No Contents permission, so it can't clone your repository or open a file. It reads a pull request's metadata and writes a check.

Your rules, per repo

Gate every author or only those who opt in, choose the branch, and decide what happens to bot pull requests.

Free

Part of TeamSigner, which is free while we're getting started. No seat count, no repo count.

Questions

Do I need the mobile app?

To approve, yes. The signing key is generated on the phone and never leaves it, which is what makes an approval attributable to a person rather than to a session cookie. Everything else — settings, history — works on the web.

What happens to people without a TeamSigner account?

Your choice per repository: block their merge, or let it through with a note on the check.

Can an author approve their own pull request?

Yes, and that is the point of the personal setting: someone who wants a second confirmation on their own merges turns it on for themselves. For review by another person, use GitHub's own reviewer rules alongside this.

What can it actually see?

Two permissions: pull requests, read, and checks, write. With them it reads a pull request's metadata — number, title, author, branches, head commit — and writes one status check. It has no Contents permission, so it can't clone the repository or read a file at any commit.

Being straight about the limit of that: the pull-request scope does cover GitHub's changed-files endpoint, which returns patches, so this is a promise about what we call, not something GitHub stops us from doing. The integration makes exactly the two calls above, and the code that talks to GitHub asks for JSON rather than a diff media type so a change here can't pass review unnoticed.

What if nobody signs?

The request expires after 24 hours and the check fails, so a pull request never sits pending forever. Pushing a new commit asks again.

Does it work with Dependabot and other bots?

A bot has no phone, so you pick: skip them, treat them as a normal author, or have a human sign in their place.

Put it on a repository

Install it, then set the policy from your dashboard.

Install on GitHub

Already installed? Open your repositories.