Skip to content

v2.7.0

Choose a tag to compare

@tstromberg tstromberg released this 14 Aug 01:19
· 22 commits to main since this release

Better verdicts

  • Every embedded file now gets graded — the old 100-member cap silently skipped deep archive entries, so a hostile file at index 347 never elevated its parent. It does now.
  • Registry findings (e.g. security-withdrawn packages) are applied to fetched dependencies before grading, so a pulled npm package flagged by the registry shows that finding in its own report — not just the parent's.
  • Duplicate dependency fetches reduced: a versionless purl is skipped when a lockfile-pinned version of the same package is present.

Encrypted archives

  • New repeatable --zip-password flag, plumbed through CLI, server, and workers. Passwords are redacted from logs and recorded command lines.

LLM interpretation (--interpret)

  • Any non-benign verdict now reaches the LLM — previously a container elevated to hostile by a member could ship uninterpreted if its raw probability was low.
  • Prompts capped at the 2 riskiest dependency subjects, worst-first. Fixes 1.2 MB prompts (Kibana: 257 subjects) being rejected outright with a 400.
  • 4xx error bodies are preserved, so a bad model name or over-budget prompt is diagnosable instead of a bare "400 Bad Request".

Terminal output

  • Containers with multiple notable packages render per-package cards, ranked worst-first, with an "N hostile · N suspicious · N clean inside" summary. Cards show the top 6 members plus anything referenced by a finding; the rest collapse to "+N quieter files".
  • Dependency-tree rows show which manifest declared them (archive-relative path, e.g. demo.zip/…/package.json).
  • Single-file scans get a spinner with elapsed time and the member currently being analyzed.

Under the hood

  • GitHub Actions workflows now tracked as CI dependencies.
  • jemalloc allocator and its config unified in one place (config shared from cleave).