Connecting GitHub

What it grants, what is stored, and how to check rather than trust.


You do not need to connect anything

Public repositories work with no account. Connecting is only useful for two things: counting private repositories, and spending your own GitHub rate limit instead of the shared one.

What is requested

This deployment asks for exactly what /api/meta reports under oauth_scopes, and the sign-in section on the front page states it before you click. GitHub shows the same list on its own consent screen — that screen, not anything written here, is the authority.

read:userYour login name and avatar, so the page can say who is connected. Nothing else.
no scopeGitHub App mode. Permissions come from the app (contents: read), and you choose which repositories it may see when you install it.
repoOnly if a deployment explicitly opts in. This is GitHub's read and write scope for private repositories — classic OAuth Apps have no read-only equivalent. If you see this requested, it is worth asking why.

What is stored

Your access tokenIn Cloudflare KV, under a random 256-bit session id. It expires after 7 days. It is never sent to your browser.
Your browserOne cookie holding only that session id — HttpOnly, Secure, SameSite=Lax. JavaScript on the page cannot read it.
Your codeNever stored. Files are decoded, counted, and discarded as they stream past. Only totals are kept.
Private resultsCached under the commit sha like any other, but a cached private result is never served without re-checking that the caller can still see the repository.

What never happens

How to check

The whole thing is open source, so none of the above has to be taken on faith.

Revoking

“Disconnect” on the front page deletes the stored token immediately. To revoke from GitHub's side — which is the one that does not depend on trusting this site — use GitHub → Settings → Applications. Doing that is always the stronger move, and it works whether or not anything here is true.