Risk OS Red Try Stoa

RT003 · Observed capability absent from both registry and declarations

Traces show the agent exercising a capability the static scan never found and no declaration covers — its real reach exceeds everything on paper.

a plausible alternative explanation, and the finding says so).

(scanned+declared vs. observed) — the runtime analogue of DECL004. Emitted by: stoa runtime merge.

Detection

Fires per observed capability that is (a) in the scanner's own capability vocabulary and (b) absent from the agent's static capabilities. Custom capability ids recorded by the SDK are reported in the analysis document but never fire RT003 — an id the scanner couldn't have found can't be meaningfully compared to static reach. Data-class signals are out of scope under redact-by-default tracing (content is never recorded).

Evidence: trace_ref — the first span exercising the capability.

Example

{"kind": "tool_call", "span_id": "d1", "agent_id": "b02789752d1c",
 "capability": "filesystem_write", "tool": "audit_log_writer"}

…for an agent whose registry record lists no filesystem_write.

Fix

Locate the code path — it often lives in an unscanned dependency, a separate service, or a dynamically-loaded tool — and bring it under scan (widen the scanned tree) or under declaration. If the capability is intentional, the next scan of the widened tree makes this finding disappear on its own.

Suppress: stoa.toml → [runtime] suppress = ["RT003:<agent_id>"].