Skip to main content
The app.security.check_run audit event stores a summary of an app security scan. When the event includes a run_id, use it to retrieve the sanitized, ownership-scoped findings for that run. See Event Types for the event and its metadata fields.

The audit event

This event contains scored dependency and static-code findings, plus unscored RLS, hardcoded-secret, and backend-function findings. ClickHouse stores every metadata value as a string, including counts:
Dependency and static-code findings can have a scanner-provided severity. RLS recommendations, hardcoded-secret findings, and backend-function issues are unscored. highest_scored_severity considers only scored findings and is none when no finding has a recognized severity. Never infer a severity for an unscored category. static_code_findings_count can be absent when the static scanner did not run. An absent key does not mean that the scanner completed with zero findings.

Retrieving findings

Send the event’s run_id to Get security scan findings, scoped to the workspace in the URL:
The request needs a workspace API key with the AUDIT_LOGS_READ (audit_logs:read) scope. The lookup is scoped to the workspace in the URL, so a run owned by another workspace is not found. The list endpoint never hydrates events with findings and has no include_security_findings option. Its cursor, page limit, and truncation behavior are unchanged. Events without a run_id, and events whose referenced run is no longer available, remain summary-only.

What the response contains

Get security scan findings documents the full response schema. Each section uses a strict field allowlist. Responses exclude source snippets, evidence, full RLS expressions, secret values or secret-matching text, input hashes, scanner prompts and models, internal user identifiers, and internal-only URLs.

Interpreting coverage

The coverage object reports the outcome for all five scan sections. Treat a section’s empty findings array as a clean result only when its coverage is completed: When the event metadata contains coverage_incomplete with the string value "true", treat findings_total as a floor. Fetch the run and inspect coverage to identify the incomplete sections. Coverage is evaluated independently for rls, hardcoded_secrets, backend_functions, dependency_vulnerabilities, and static_code. For example: