Bug-fix release — no new rules, commands, or flags. Focused on cutting false positives in existing rules and hardening the scanner against crashes on edge-case input.
Fixed
- Python AI005 —
subprocess.run/eval/exec/os.systemsinks no longer flag on ordinary code just because a nearby variable was namedresult/output/etc. Now requires the file to import a known LLM SDK and traces a real assignment link from an LLM call before reporting atcritical; a name-only match without a confirmed link now reports at a lowerhigh/heuristic tier instead. - Python AI002 — sensitive prompt/response logging now also requires the file to import a known LLM SDK.
- Windows glob exclusion —
node_modules,dist,build, and policyskipPathsare now actually excluded from TS/JS scans on Windows (glob patterns were silently broken by backslash paths). - Crash safety — ts-morph symbol resolution is now wrapped so a single malformed/edge-case file can no longer abort an entire scan run.
- AI012 — dropped a bare-name fallback that flagged
JSON.parse(result)regardless of whether the value actually came from an LLM call. - AI007 (RAG context injection) — generic names like
context/resultsnow only count as RAG content when the enclosing function shows an actual retrieval call. - AI010 (indirect prompt injection) — fetch-derived variable detection now checks real call/property-access nodes instead of substring-matching, so values like
{ fetch: true }no longer false-positive. - VEC001 / VEC004 —
supabase/opensearchclients now require an explicit vector/embedding signal before flagging ordinary DB reads/writes. - AI-BOM — model-identifier matching (
o1/o3/o4) is now scoped to string literals, so plain variable names no longer show up as "OpenAI model referenced." - DEP002 — added the missing catalog entry (findings no longer render blank OWASP/fix tags).
- Report snippets — the source-line cache no longer folds path case on case-sensitive filesystems.
- Dependency guard — a registry-unreachable network failure now prints a warning instead of silently no-opping DEP001.
Note for CI users
Some previously-critical AI005 findings now report at a lower tier, and some previously-flagged AI007/VEC001/VEC004/AI010/AI012 cases no longer fire at all. If you pin --fail-on critical, expect your finding count to drop on upgrade — that's the intended effect of removing false positives, not a regression.