Skip to content
ReviewRouter
Security model

Code and secrets stay under your control.

Direct mode uses explicitly configured GitHub Actions or self-hosted runner credentials. Gateway mode uses server-managed enrollment and sends submitted review context through its relay to the selected provider.

Direct-mode credential boundary

Seed secrets directly to GitHub. ReviewRouter does not receive these workflow credentials.

For direct workflow credentials, 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 directly from the authorized CI job

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 one server-issued versioned namespace directly to GitHub Actions secrets.

Security boundary signals

Review execution

Review execution runs in the authorized CI job.

Submitted review context is sent to the selected model provider, through Account Gateway relay in Gateway mode. ReviewRouter stores review metadata and normalized findings, which may include source excerpts.

Provider secrets

Credentials use protected mode-specific custody.

Direct workflow credentials are installed in GitHub Actions. Account Gateway credentials use the supported server ingress and protected server custody; they are not exposed through account readback or copied into the review job. Enrollment handles plaintext transiently; stored credentials are encrypted at rest.

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
Authorized review job
Customer CI runtimeRepository checkout, review context, prompts, model output, scoped review grantCustomer
Provider credentials
GitHub Actions or protected Account Gateway custodyDirect workflow credentials; Gateway credentials and transient enrollment dataMode-specific
ReviewRouter SaaS
ReviewRouter control planeSetup metadata, policy, audit, health, and protected Account Gateway custodyReviewRouter

Review context submitted for a review is sent to the selected model provider. Code running in the authorized CI job can use its scoped review grant. Tool environment filtering reduces exposure; it does not isolate the grant from that job's code.

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: writeWrite

Dispatch exact-revision review runs and read their metadata for durable request tracking.

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.

Narrow claim, explicit boundary.

Submitted review context is sent to the selected provider. Stored review metadata and normalized findings may include source excerpts.