Security & Privacy

GitHub App permissions

What permissions Zapat requests from GitHub and why each one is needed.

Updated March 3, 2026

Zapat uses a GitHub App (not OAuth) for repository access. GitHub Apps use fine-grained permissions — you can see exactly what Zapat can and cannot do. Here is a breakdown of every permission Zapat requests.

Repository permissions

  • Contents (read/write) — Required to clone the repository and push code changes. Zapat reads files to understand the codebase and writes commits with the implemented changes.
  • Issues (read/write) — Required to read issue titles and bodies, add labels (e.g., "agent" after triage), and post comments (triage summary, progress updates).
  • Pull requests (read/write) — Required to open pull requests, add review comments, request reviews, and update PR descriptions.
  • Checks (read) — Required to read CI check results. Used by the ci-fix trigger to understand what tests failed.
  • Metadata (read) — Required by all GitHub Apps. Provides basic repository information (name, visibility, default branch).

Event subscriptions

Zapat subscribes to these webhook events to trigger the pipeline:

  • issues — Listens for "labeled" events to detect when you add a trigger label.
  • pull_request — Listens for "labeled" events on PRs.
  • issue_comment — Listens for new comments to detect @zapat mentions.
  • pull_request_review — Listens for review submissions to detect "changes requested".
  • check_suite — Listens for CI completions to detect failures and trigger ci-fix.
  • installation — Listens for installation events to keep the GitHub App token up to date.

What Zapat cannot do

  • Zapat cannot access repositories you have not explicitly selected during installation.
  • Zapat cannot merge PRs without your explicit enablement of auto-merge.
  • Zapat cannot access GitHub secrets, Actions workflows, or repository settings.
  • Zapat cannot access GitHub organization membership or billing information.

Tip

You can review and revoke Zapat's access at any time from GitHub.com > Settings > Installed GitHub Apps. Revoking access stops all future webhook processing for that installation.

Was this article helpful?