Risk OS Red Try Stoa

Configuration

stoa.toml in the repository root. All values shown are defaults.

fail_on = "none"          # gate on all findings at/above this severity
fail_on_new = "critical"  # gate on newly introduced findings (with --base)
max_file_bytes = 1000000
follow_symlinks = false
respect_gitignore = true

ignore_paths = ["tests/snapshots/**"]

[severity]                # per-rule severity overrides
NET001 = "info"

[rules]                   # per-rule enable/disable
CTRL003 = false

[gate]                    # opt extra rules into the gate (beyond AI002 exec)
additional_rules = ["AI001"]

[rules.AI006]             # org-approved network egress destinations
allowed_hosts = ["api.internal.corp", "hooks.slack.com"]

[rules.AI004]             # extra PII identifiers to match
pii_terms = ["employee_id", "account_number"]

[dimensions]              # replace the default dimension taxonomy
taxonomy = ".stoa/dimensions.toml"

Suppression

Inline, rule-scoped, with a reason:

query = f"SELECT * FROM {table}"  # stoa: ignore[SEC003] trusted enum

Also # stoa: ignore-file[CTRL001], .stoaignore path patterns, and per-rule toggles above. Suppressed findings are always counted and shown — never hidden.

.stoaignore

Gitignore-style path exclusions. Tests and fixtures are not ignored by default (secret scanning is still useful there) but are downweighted for agent detection.