Skip to main content
Understand how Flint AI Scan finds issues — what runs, how AI reasoning works, and why you get real problems, not false alarms.

3-layer scanning pipeline

Flint AI Scan uses a 3-layer pipeline to find security and quality issues in your agent code:
1

Parallel scans test your agent code

Both run simultaneously:
  • Static analysis — Industry-standard tools (Bandit, OpenGrep, detect-secrets, pip-audit) scan for patterns
  • AI reasoning — LLM analyzes agent code, follows data flows, identifies risky patterns
2

Triage combines results

AI evaluates findings from both approaches, filters false positives, and dismisses expected behavior.
3

Real findings reported

Only genuine issues make it to your scan results, with severity scores, evidence, and fix recommendations.
Static tools flag every tool invocation. AI flags only those accepting untrusted input.
Configure model choice and iteration limits via Environment variables.

What it finds

All findings are mapped to the OWASP Top 10 for Agentic Applications:
CodeCategory
ASI01Agent Goal Hijack (prompt injection, RAG poisoning)
ASI02Tool Misuse and Exploitation (excessive permissions, unvalidated input)
ASI03Identity and Privilege Abuse (hardcoded credentials, missing auth)
ASI04Agentic Supply Chain (unpinned deps, known CVEs, untrusted tools)
ASI05Unexpected Code Execution (eval, shell=True, unsafe deserialization)
ASI06Memory and Context Poisoning (persistent memory without sanitization)
ASI07Insecure Inter-Agent Communication (unencrypted channels, no auth)
ASI08Cascading Failures (unbounded loops, missing circuit breakers)
ASI09Human-Agent Trust Exploitation (no confirmation gates, no human-in-the-loop)
ASI10Rogue Agents (unchecked delegation, missing monitoring, no kill switch)
Findings outside this framework are reported under beyond_asi with a descriptive subcategory.

Triage audit trail

The triage layer decides what’s a real issue vs expected behavior. You get full transparency: pre_triage_findings - Raw output from static tools and AI reasoning before filtering triage_dismissed - Findings dismissed as expected behavior for your agent’s purpose, with explanations:
{
  "finding_id": "asi05_001",
  "reason": "Agent executes user-provided code by design (code sandbox agent)"
}
triage_downgraded - Findings with disproportionate severity that were adjusted:
{
  "finding_id": "asi01_003",
  "original_severity": "Critical",
  "new_severity": "Medium",
  "reason": "User input validated before use"
}
Review the audit trail in your scan output to verify nothing was incorrectly filtered. See Scan results for how to read and act on findings.