Skip to content
ReviewRouter
Security model

Code and secrets stay under your control.

ReviewRouter installs, configures, and monitors AI review without becoming the default path for source code, PR diffs, prompts, model responses, or provider credentials.

Credential boundary

Seed secrets directly to GitHub. ReviewRouter never receives them.

The helper validates provider auth locally and writes required secrets through gh. Dashboard state only tracks safe setup metadata.

ReviewRouter control plane

Policy, setup, audit

GitHub Actions secrets

Customer-owned custody

Selected model provider

Called from your runtime

Secret seed command
# Copy the full repo-scoped Codex command from the ReviewRouter dashboard.
# It uses https://reviewrouter.site/install/codex with a short-lived setup nonce and writes REVIEWROUTER_CODEX_AUTH_JSON directly to GitHub Actions secrets.

Security boundary signals

Code storage

Review execution runs inside customer GitHub Actions.

ReviewRouter manages metadata, workflow setup, model settings, health, and audit. Repository checkout, diff analysis, prompts, and model responses stay out of ReviewRouter cloud by default.

Provider secrets

OAuth tokens and API keys stay in your boundary.

Codex rotating OAuth, Claude Code OAuth, and OpenRouter keys are stored directly in GitHub Actions secrets. ReviewRouter cloud never receives plaintext provider credentials.

Fork safety

Secret-backed review is skipped for fork PRs by default.

The generated workflow avoids automatically exposing secrets to untrusted fork code. Trusted rerun flows should be explicit maintainer actions.

Runtime config

OIDC avoids long-lived ReviewRouter API tokens in repos.

GitHub Actions requests short-lived runtime config through OIDC. Production Codex OAuth rotating runs fail closed if the control plane cannot validate the run.

Privacy boundary

The SaaS configures review. Your runtime performs review.

LayerOwned byData handledCustody
ReviewRunner
Customer repository runtimeRepository checkout, PR diff, prompts, model output, provider callsCustomer
Provider credentials
GitHub Actions secrets or trusted runnerCodex rotating auth.json, Claude Code OAuth token, OpenRouter keyCustomer
ReviewRouter SaaS
ReviewRouter control planeInstallation metadata, setup PR state, policy config, audit events, health summariesReviewRouter

GitHub App permissions

Permissions support setup and maintenance, not hosted code execution.

Least-privilege map

PermissionClassWhy it exists
metadata: readRead

Discover repository identity and default branch.

actions: readRead

Read workflow run metadata for live setup and health state.

checks: writeWrite

Publish ReviewRouter-owned check runs when direct GitHub check integration is enabled.

contents: writeWrite

Create workflow setup branches and commits.

workflows: writeWrite

Open PRs that add or update the ReviewRouter workflow.

pull_requests: writeWrite

Create setup PRs and read setup PR state.

secrets: writeWrite

Verify required GitHub Actions secret metadata and write encrypted rotating Codex OAuth payloads after OIDC/writeback checks. GitHub does not expose decrypted secret values.

organization_secrets: readMetadata

Verify org-level selected-repository secret metadata for organization-owned repos. ReviewRouter checks whether the current repository is allowed to use the secret.

organization_plan: readRead

Detect whether organization-level Actions secrets can be used for private repositories, so setup can recommend repository secrets when needed.

statuses: writeWrite

Publish ReviewRouter-owned commit statuses when direct GitHub status integration is enabled.

issues: writeWrite

Support setup/help comments and issue-style PR conversations. Review execution still runs from customer runtime.

GitHub repository and organization secret endpoints return metadata only. ReviewRouter uses those checks for setup verification, not decrypted secret access.

GitHub App webhooks

Hosted beta needs lifecycle events to keep installations current.

EventWhy it exists
installationCreate, suspend, unsuspend, and uninstall lifecycle events for workspace and installation state.
installation_repositoriesRepository added/removed events so selected-repository installs stay in sync without manual refresh.
pull_requestDetect when setup PRs are merged and advance repository setup state automatically.
repositoryRefresh repository metadata such as rename, archived state, visibility, and default branch.
workflow_jobTrack job-level Actions state for runner and review diagnostics.
workflow_runTrack workflow completion metadata for live health/status updates.
check_runReceive ReviewRouter-owned check run lifecycle events and rerun requests.
issue_commentSupport future slash-command workflows such as rerun or enable review.
statusTrack commit status updates when direct status integration is enabled.

Strong claim, narrow boundary.

ReviewRouter should not claim code goes nowhere. It should claim code skips ReviewRouter cloud by default.