Skip to main content
A finding is a discrete security issue that Trident has detected and wants your attention on. Findings flow in from every detection surface — adversarial red-team campaigns, the runtime firewall, static analysis of your agent code, threshold-based monitors, your agent’s own self-reports, and cloud security scans. Every finding is scored with an OWASP Agentic Top-10 category and an AIVSS severity so you always know what you’re looking at and how urgent it is.

Finding sources

SourceDescription
REDTEAMProduced by a red-team campaign. Includes the full attack transcript and the specific skill that triggered the finding.
FIREWALLA prompt or output was blocked by the runtime firewall. Includes the scanner verdict and matched rule.
SASTStatic analysis of your agent’s source code — hardcoded secrets, insecure tool configurations, vulnerable dependency patterns.
MONITORA metric or signal threshold was breached — for example, an unusual spike in refusals, token usage, or tool error rates.
SELF_REPORTYour agent proactively reported an anomaly using trident.selfReport().
CSPMCloud Security Posture Management scan — misconfigured IAM roles, public storage buckets, and other cloud resource misconfigurations.
KSPMKubernetes Security Posture Management scan — insecure pod specs, overly permissive RBAC, and cluster-level risks.
IACInfrastructure-as-code scan — security issues found in Terraform, CloudFormation, or similar IaC files before deployment.
SECRETSecret detection scan — API keys, credentials, or tokens found in source code, environment configs, or deployment artifacts.
VULNDependency vulnerability scan — known CVEs in packages your agent depends on.
RUNTIMERuntime security event — anomalous process or network behaviour detected in your agent’s execution environment.
MCPMCPSafetyScanner audit of a Model Context Protocol server’s tool descriptions and permissions.

Severity scoring

Each finding carries two severity signals: OWASP Agentic Top-10 category — maps the finding to the relevant risk in the OWASP Top 10 for LLM Applications and Agentic AI. The category tells you what class of risk the finding represents (e.g. LLM01: Prompt Injection, LLM06: Excessive Agency). AIVSS score — the AI Vulnerability Scoring System is an extension of CVSS adapted for AI-specific attack characteristics. It accounts for factors like exploitability in agentic contexts, blast radius across connected tools, and data sensitivity. The score (0.0–10.0) is mapped to a severity label:
LabelAIVSS range
LOW0.1–3.9
MEDIUM4.0–6.9
HIGH7.0–8.9
CRITICAL9.0–10.0

Finding lifecycle

Findings move through a defined set of states:
OPEN → ACKNOWLEDGED → IN_PROGRESS → RESOLVED
                                  ↘ WONT_FIX
                                  ↘ DUPLICATE
  • Open — new finding, not yet reviewed
  • Acknowledged — you have seen it and it is on the radar
  • In progress — actively being remediated
  • Resolved — fixed; the finding auto-resolves after N consecutive passing replays against your live agent
  • Won’t fix — accepted risk; the finding is dismissed without remediation
  • Duplicate — grouped with an existing incident

Finding replay

Every finding stores the original attack payload or triggering input. The Replay button re-runs that exact input against your current agent endpoint. Trident uses the same 3-judge ensemble as the red-team engine to evaluate the result. If the replay passes (the agent handles it safely) N consecutive times, Trident automatically marks the finding as Resolved. This gives you an objective, automated signal that your fix actually worked — not just that you think it did. To replay a finding manually, open it in the Findings inbox and click Replay. To configure the auto-resolve threshold (default: 3 consecutive passes), go to Project Settings → Findings.

Agent self-reporting

Your agent has more context about what just went wrong than any external monitor can have. The trident.selfReport() method lets your agent proactively ship an observation to Trident as a first-class SELF_REPORT finding, with full access to the same downstream routing — Slack alerts, GitHub issues, Jira tickets, webhooks.
import { trident } from "@vouch-ai/sdk";

// Report an unexpected external tool call your agent detected at runtime.
await trident.selfReport({
  agentId: "prod-rag-bot",
  kind: "data-exfil-suspected",
  message: "Unexpected tool call to external URL detected in agent response",
  severity: "HIGH",
  metadata: {
    url: "https://attacker.example.com/collect",
    tool: "web_search",
    input: "the original user message that triggered this",
    output: "the agent response that contained the suspicious URL",
  },
});
The kind field is a kebab-case slug that becomes the finding’s category. Trident’s Sentinel triage agent recognises these standard kinds and surfaces richer evidence panels for them:
KindMeaning
tool-call-failureA tool returned an error or timed out
silent-tool-failureA tool returned empty/nil and the agent continued anyway
refusal-spikeThe agent refused a request it normally handles
hallucinated-policyThe agent cited a policy or fact that doesn’t exist
context-lossThe agent forgot something from earlier in the conversation
infinite-loopThe agent repeated the same action N times
data-exfil-suspectedOutbound traffic to an unexpected destination
prompt-injectionYour own guardrail caught a prompt injection pattern
By default, selfReport() is fire-and-forget — it does not block your agent’s request path. Pass await: true if you need the promise to resolve before continuing.

Filtering and querying findings

The Findings inbox in the dashboard supports filters across every dimension:
  • SourceREDTEAM, FIREWALL, SAST, MONITOR, SELF_REPORT, CSPM, KSPM, IAC, SECRET, VULN, RUNTIME, MCP
  • SeverityLOW, MEDIUM, HIGH, CRITICAL
  • OWASP category — filter to a specific Agentic Top-10 code
  • Status — open, acknowledged, in progress, resolved
  • Agent — scope to a specific agent ID
  • Date range — last 7, 30, 90, or 180 days

Bulk actions

Select multiple findings in the inbox to apply actions in one step:
  • Confirm — mark all selected findings as confirmed true positives; each one generates a firewall deny rule within 5 minutes
  • Dismiss — mark as WONT_FIX or DUPLICATE
  • Replay — re-run all selected findings against your current agent

Retrieve findings via API

You can query your findings programmatically using the REST API.
curl "https://app.tryvouch.ai/api/public/trident/findings?source=REDTEAM&severity=HIGH&sinceDays=7" \
  -H "Authorization: Basic $(echo -n 'pk-...:sk-...' | base64)"
Response shape:
{
  "count": 2,
  "findings": [
    {
      "id": "find_01HX...",
      "agentId": "prod-rag-bot",
      "severity": "HIGH",
      "source": "REDTEAM",
      "category": "indirect_prompt_injection",
      "status": "OPEN",
      "title": "Indirect prompt injection via retrieved document",
      "traceId": "01HXZQ...",
      "redteamRunId": "a1b2c3d4-...",
      "certificateId": null,
      "createdAt": "2025-05-27T10:32:00.000Z",
      "riskScore": 8.4,
      "owaspCode": "LLM01"
    }
  ]
}
Query parameters:
ParameterTypeDefaultDescription
sourcestring or arrayFilter by source (e.g. REDTEAM, FIREWALL)
severitystring or arrayFilter by severity level
statusstring or arrayFilter by lifecycle status
agentIdstringScope to a specific agent
redteamRunIdstringScope to a specific campaign run
sinceDaysinteger30Lookback window, 1–180 days
limitinteger50Max results, 1–200

Incidents

Trident automatically groups related findings into incidents — similar to how Sentry groups error events by stack trace. When multiple findings share the same attack pattern, OWASP category, and affected agent, they are consolidated into a single incident so you triage one issue instead of dozens. The incident view shows the full timeline, the number of occurrences, and the affected findings in one place.