Skip to content

v0.3.1 — False-positive & crash-safety fixes

Choose a tag to compare

@akanthed akanthed released this 19 Jul 17:54
· 64 commits to main since this release

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 AI005subprocess.run/eval/exec/os.system sinks no longer flag on ordinary code just because a nearby variable was named result/output/etc. Now requires the file to import a known LLM SDK and traces a real assignment link from an LLM call before reporting at critical; a name-only match without a confirmed link now reports at a lower high/heuristic tier instead.
  • Python AI002 — sensitive prompt/response logging now also requires the file to import a known LLM SDK.
  • Windows glob exclusionnode_modules, dist, build, and policy skipPaths are 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/results now 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 / VEC004supabase/opensearch clients 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.