v3.32.40

ruvnet/ruflov3.32.40Jul 30, 2026by ruvnet

AI Summary

Fixes critical security vulnerability in `security scan` flags to fail-closed on invalid inputs and deprecates `--depth full`.

Key Highlights

  • Security scan now validates `--depth`, `--type`, and `--target` to prevent silent data loss.
  • Deprecation of `--depth full` (normalizes to `--depth deep` with a warning).
  • Hard rejection of `--type container` which was previously silently reporting clean.

Breaking Changes

  • `security scan --type container` now hard-rejects instead of silently reporting clean.

New Features

  • Input validation with exhaustive type predicates.
  • 246 new regression tests for depth-budget boundaries and path-traversal attempts.

Full Release Notes

## Fixed

**Security** (reported privately via SECURITY.md, external reproduction + patch): `ruflo security scan` validated none of its `--depth`, `--type`, or `--target` flags. An unrecognised value did not error — it silently reduced or eliminated the scan while still printing "No security issues found!" and exiting 0. On a fixture whose only HIGH finding sat below the shallow-traversal budget, `--depth full` → `--depth full` (the CLI's own emitted value) silently flipped the critical/high exit-code gate from 1 to 0, and a typo'd `--target` produced a **persisted CLEAN report** that downstream status checks trusted as genuine.

All three flags now fail closed before anything is scanned or written:
- `--depth`/`--type` validated against exhaustive `Record<ScanDepth, number>` maps with real type predicates (no unsafe casts that could silently re-disable the recursion limiter)
- `--depth full` (never a real value, but emitted by the CLI's own statusline/announcements/generated CLAUDE.md/shipped agents) is deprecated-but-accepted → `deep`, with a warning, rather than breaking every caller told to use it
- `--type container` (advertised but never implemented) now hard-rejects instead of silently reporting clean — **breaking** for any pipeline passing it, previously exited 0
- `--target` validated for existence and directory-ness

246 lines of new tests cover depth-budget boundaries by nesting level, case sensitivity, a path-traversal-via-`--type` attempt, stdout/stderr separation, and no-persisted-report-on-rejection.

PR: https://github.com/ruvnet/ruflo/pull/2866

## Packages

\`@claude-flow/cli\`, \`claude-flow\`, and \`ruflo\` are all at **3.32.40**; \`latest\`, \`alpha\`, and \`v3alpha\` dist-tags all point to it.