
A finding is not a risk until something reaches it
Scanners report findings about a library or a pattern, not about your system. A high-severity issue in a dependency you call twice in a build script is a different risk from one on your request path. Both findings are still marked as high.
Triage means determining whether the vulnerable code is called, whether untrusted input can reach it, and whether an existing control blocks the path. That work is reading. Nobody can afford that reading when four hundred findings arrive at once.
The cost of getting it wrong runs both ways. If every finding is treated as the highest importance, then none of them is. The finding that actually matters can also be dismissed because of the severity label.
The agent states its reachability argument with evidence and suggests a course of action. It does not close or suppress any findings, because an incorrectly closed finding becomes invisible afterward. The security owner decides.
How the agent is built in Agent Studio
Prompt skills hold your severity policy: your definitions, and the controls already in place that decide whether a path is exploitable.
A second skill holds the risks you previously accepted, with the reasons, so the agent does not re-propose a decision your team has already made on purpose.
The system prompt requires each disposition to argue reachability along the call path, or to state that reachability could not be established. Stating that reachability was not established is itself a finding, not a failure.
It forbids suggesting dismissal based only on the severity label. It also bans any language that implies a finding has been resolved.
A Webhook trigger takes in the scanner's output. The Filter node discards findings that have already been dispositioned. The Agent Chat node then receives the remaining findings, with the relevant source read through a GitHub node.
Jira gets one item for each finding that needs to be addressed, including the argued path. Google Sheets records every disposition with the audit reason your customers will eventually request.
The agent does not close, suppress, or accept any finding. A Human in the Loop node sends each disposition to the security owner.
What this agent is built from
- Prompt skills: your severity definitions, not the scanner's, and the controls already in place.
- Prompt skills: previously accepted risks with their reasons.
- System prompt: reachability argued with a call path, or stated as not established.
- System prompt: no dismissal on a severity label. No language implying resolution.
- Webhook (Triggers) with Filter (Data): scanner output, minus what is already dispositioned.
- GitHub (Integration): the source the reachability argument is built from.
- When an ActionFlow is enough: If you only need findings routed to owning teams by component, build the workflow. That routing gets the queue moving before triage is built.
Frequently asked questions
Start building AI workflows
Create a free account, open a template or a blank canvas, and run your first ActionFlow.
Newsletter
Get product updates
New nodes, agents, and product notes. We send mail only when we have something worth opening.