Skip to content

Safety controls

Every automated action can be overridden by a human. These controls apply to the API, the webhook, the daemon, and the command line.

Read-only code guarantee

The review lane never edits, commits, pushes, approves, or merges the code it inspects. Intake shells out only to a fixed allowlist of read commands. The one write action is a verdict comment and label on a pull request, and it happens only in execute mode.

Dry-run by default

Reviews are dry-run unless you opt into execute mode. In dry-run the report is stored and written to disk, but nothing is posted to the pull request. Opt in per call with execute, or for the webhook and daemon by setting dry_run to false in the config.

Kill-switch

Force dry-run everywhere, even where execute was requested:

  • Set the environment variable SECURITY_REVIEW_PAUSED=1, or
  • Create the file ~/.agentic_suite/security-review.pause.

From the command line:

Terminal window
uv run python -m app.cli.security_review pause
uv run python -m app.cli.security_review resume

Per-item hold

Add a repository or a repo#pr key to holds in the config. Held items are skipped and never reviewed until you remove the hold.

Scope denylist

Add glob patterns to scope.deny in the config. Matching repositories are always excluded, regardless of any other setting.

Daily quota

Each organization can run a limited number of reviews per rolling 24-hour window. The default is 50. Change it with SECURITY_REVIEW_DAILY_LIMIT. Set it to 0 to disable the cap.

Signature verification

The webhook verifies every call with an HMAC-SHA256 signature using GITHUB_APP_WEBHOOK_SECRET. Without a secret, verification fails closed and calls are rejected.