Risk OS Red Try Stoa

Stoa rules

Each rule has a stable short ID (used in suppressions, stoa.toml, and gating) and, for AI rules, a canonical name (used in reports and SARIF).

Suppress any rule inline by short ID:

value = "..."  # stoa: ignore[AI002] reviewed: dispatched through a static allowlist

Core rules

IDTitleSeverityGates?
SEC001Possible hardcoded API credentialcriticalyes (high conf.)
SEC002Possible hardcoded passwordhigh→criticalyes (high conf.)
SEC003Interpolated SQL statementhighno
REL001Swallowed exceptionlowno
NET001Insecure non-local HTTP endpointlowno
NET002Request timeout not observedmediumno
CTRL001–003Auth / validation / rate-limit not observedinfonever
CTRL005Rate limiting not observed on a high-impact-capability looplownever
CTRL006Sandboxing not observed on an exec pathlownever
CTRL007No kill-switch signal on the agent's entry pathinfonever

AI agent security rules (OWASP LLM Top 10, v0.2)

IDCanonicalPage
AI001STOA-LLM01-PROMPT-EXPOSUREAI001.md
AI002STOA-LLM02-OUTPUT-EXECAI002.md
AI003STOA-LLM08-UNOBSERVED-APPROVALAI003.md
AI004STOA-LLM06-SENSITIVE-INTERPOLATIONAI004.md
AI005STOA-LLM05-UNPINNED-MODELAI005.md
AI006STOA-EXFIL-NETWORKAI006.md
AI007STOA-SAMPLING-CONFIGAI007.md
CTRL004STOA-CTRL-OBSERVABILITYCTRL004.md

All AI rules report line-level evidence. The three data-flow rules (AI001/AI002/AI004/AI006) carry a redacted flow array (source → propagation → sink) and are intra-file only: flows through other files are not visible.

Contradiction detector (Assurance layer)

Cross-checks declared facts against what the scan observed — the one thing a self-attested questionnaire can't do. Every DECL* finding carries both a code-evidence path/line and a declared_ref (the exact stoa-declared.toml key it contradicts).

IDTitleSeverityGates?
DECL001Declared autonomy contradicts inferred autonomycriticalyes
DECL002Declared economic authority has no enforcement observedhighyes
DECL003Money/contract permission with no declared economic authorityhighyes
DECL004Scanned data class not present in declared data classeshighyes
DECL005Production agent has no observability observedmediumyes
DECL006Scanned agent has no declaration entrymediumno
DECL007Declaration references an agent id no longer scannedlowno

Runtime contradiction detector (Runtime trace overlay)

Cross-checks declared facts and scanned reach against what traces observed (docs/runtime.md). Emitted only by stoa runtime merge, never by stoa scan. Every finding carries both a trace_ref (file + line + span id) and, where a declaration is involved, a declared_ref. All report-only in v1 (shadow mode) — the only runtime gate is the opt-in stoa runtime drift --fail-on-drift. Trace-anchored findings suppress via stoa.toml [runtime].suppress.

IDTitleSeverityGates?
RT001Declared human oversight not observed at runtimecriticalno
RT002Observed monetary action exceeds declared economic authorityhighno
RT003Observed capability absent from both registry and declarationshighno
RT004Monitoring declared for a production agent, but no traces observedmediumno
RT005Approval gate observed firing on all high-impact actionsinfonever