Reference
The--dupes-* flags apply to combined mode, fall back to the config value when unset, and mirror the standalone fallow dupes flag of the same name.
Path scope
fallow and the file commands take an optional positional path as their first
argument: bare fallow, check, dupes,
health, audit, security,
fix, list and similar-code.
fix plans and applies only the fixes
that touch scoped files.
Repository-root paths in CI formats
CI platforms resolve file paths against the repository root: GitHub annotations, CodeClimate reports in GitLab, and inline review comments all reject or misplace paths relative to anything else. When--root points at a subdirectory of a git repository (a monorepo package like packages/app/), the CI-facing formats (github-annotations, github-summary, codeclimate, review-github, review-gitlab) therefore emit repository-root-relative paths: fallow detects the offset between --root and the git toplevel and prepends it automatically. --report-path-prefix overrides the detected offset for containerized or vendored checkouts where the git toplevel does not match the CI workspace; an empty string (--report-path-prefix '') disables rebasing entirely and restores --root-relative paths.
Supplied diffs (--diff-file, --diff-stdin, FALLOW_DIFF_FILE) get the same treatment in reverse: fallow detects whether the diff’s paths are repository-root-relative or --root-relative and filters findings accordingly. A diff that parses but touches no analyzable files (deletion-only, binary-only, or empty) filters the report to zero findings; only a diff whose paths cannot be placed at all falls back to the full-scope report, with a warning saying so.
Loaded config disclosure
When fallow loads a config file (either auto-discovered or via--config), it prints a single line to stderr:
.fallowrc.json is in effect in monorepos where multiple configs exist. The line is suppressed when:
--quietis set--formatis anything other thanhuman(json,sarif,compact,markdown,codeclimate,gitlab-codequality,pr-comment-github,pr-comment-gitlab,review-github,review-gitlab,badge)
extends merged), use the dedicated fallow config subcommand.
Examples
Per-analysis production mode
Bare combined runs (fallow with no subcommand) and fallow audit accept three per-analysis production flags so you can enable production mode for one analysis without forcing it on the others:
FALLOW_PRODUCTION_DEAD_CODE, FALLOW_PRODUCTION_HEALTH, and FALLOW_PRODUCTION_DUPES accept the same set of values as FALLOW_PRODUCTION (true, false, 1, 0, yes, no, on, off). The production config field also accepts a per-analysis object:
--production, --production-{dead-code,health,dupes}), per-analysis env var (FALLOW_PRODUCTION_HEALTH, etc.), global env var (FALLOW_PRODUCTION), config (production: { ... } or production: true). The legacy boolean form (--production, production: true, FALLOW_PRODUCTION=true) is unchanged and still applies to every analysis.
The per-analysis CLI flags are rejected when used with a subcommand other than audit (e.g. fallow dead-code --production-health errors). Use the bare command or the per-analysis env vars in that case.
Grouped output
The--group-by flag partitions all issues into labeled groups. This works with every output format and every subcommand.
With
--format json, the output shape changes to a grouped envelope:
--group-by section, each group also carries an owners array with the section’s default owners:
owner collapses all sections that share a lead reviewer into a single bucket, while section preserves the [Section] headers as stable group keys across reviewer rotation.
Incremental caching
Fallow caches parsed file data between runs to skip unchanged files. On the second run, only modified files are re-parsed. The rest are loaded from cache. How it works:- Each file is hashed with xxh3 (extremely fast, non-cryptographic)
- If the hash matches the cached version, parsing is skipped entirely
- The module graph is rebuilt from cached + freshly-parsed data
--no-cache to force a full re-parse. This is useful after major refactors or when debugging unexpected results.
cache.dir in the project config or FALLOW_CACHE_DIR in the environment to move the persistent cache out of .fallow/cache.bin. The env var wins when both are present.
See also
Environment variables
Set defaults for format and quiet mode via environment variables.
Configuration
Full config file reference for project-level settings.