How a decision is made

How the checks become a score, how the score becomes a verdict, and how your policy turns the verdict into allow, warn or block.

  1. A download starts from a gated GitHub URL. The extension recognises Download ZIP archives, codeload.github.com, release assets under /releases/download/, raw files, and downloads clicked from a repository page whose bytes come from a GitHub host. It holds the download while it decides.
  2. It sends owner/repo to the verdict service at api.repogates.com — plus, if you arrived from a known AI surface, that surface's hostname. Never a full URL, never page or repository contents. (Through the Claude Code plugin or the MCP preflight tool it is the command line instead, with URL credentials and NAME=value assignments redacted, parsed on the server and not stored.)
  3. The service runs the 22 checks against the repository's public GitHub metadata and file list, and returns a verdict — PASS, REVIEW or BLOCK — with the findings that fired. Verdicts are cached, so popular repositories answer in milliseconds.
  4. The extension applies policy. Each fired check maps to allow, warn or block; the strongest wins. A warn or block cancels the download, discards the partial file and opens the decision page. A warn lets you proceed; a block lets you override only if your policy permits it.
  5. The decision is recorded in the audit log on your device — including any proceed or override.

The whole decision is budgeted at about eight seconds, inside the fifteen-second ceiling Chrome gives a download listener. What happens when that ceiling is hit is described plainly in troubleshooting.

What it does not see. RepoGates gates downloads made through the browser. It does not see git clone, package managers or curl — outside Claude Code with the RepoGates plugin, whose hook refuses a clone or install that names a blocked repository on the command line, before it runs. The hook sees Bash tool calls in that one client and nothing else. VS Code and Docker Desktop extensions and agent skills are answered through the MCP server and the plugin, not in the browser.