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:
uv run python -m app.cli.security_review pauseuv run python -m app.cli.security_review resumePer-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.