fallow impact
See what fallow has done for you in a project. Fallow impact is a local-only report of current findings, the trend, commits stopped at the gate, and findings resolved over time.
See what fallow has done for you in this project. fallow impact reports:
- how many issues fallow reports now
- the trend since the last recorded run
- how many commits the pre-commit or agent gate contained (blocked, then cleared after a fix)
- how many findings were truly resolved over time
Impact is opt-in and local-only. The history is in your user config dir (see Storage and cleanup):
- fallow never writes anything into the repo: no
.fallow/directory, and no.gitignorechange. - Fallow uploads nothing.
- Recording never changes exit codes or analysis output.
- Fallow does not record in CI.
fallow impact enable # track this project (overrides the global default)
fallow impact # render the value report (also prints the store path)
fallow impact status # tracking state and history size
fallow impact statusline # print one stable line for a status bar
fallow impact disable # stop tracking this project (history is retained)
fallow impact default on # track every project by default (one global opt-in)
fallow impact reset # delete this project's history (--all wipes every project)
fallow impact --all # roll up every project: impact across all your repos
To turn on Impact for every project at once, run fallow impact default on. A per-project fallow impact enable or disable always wins over the global default. You can thus opt one repo out and keep Impact on everywhere else.
Status bars
fallow impact statusline prints exactly one plain-text line for shell and editor status bars. The line contains no paths. The command reads only the local Impact store. It starts no analysis, never turns on recording, and writes nothing to stderr on success.
The command ignores --format on purpose. Do not parse its output as JSON. The trend uses only whole-project scans that fallow can compare. Fallow labels older changed-file history and shows it without a trend.
Across all your repos
To see what fallow has done for you in all your projects at once, run fallow impact --all. It combines the per-project histories in your config dir into one ranked table, plus grand totals. It reads only the stored histories and runs no analysis, so it works from any directory, also outside a repo.
fallow impact --all # ranked table + grand totals (sorted by most recent)
fallow impact --all --sort resolved # rank by lifetime findings resolved
fallow impact --all --limit 10 # cap printed rows (totals still cover every project)
To sort, use --sort {recent,resolved,contained,name} (default recent). Fallow summarizes projects with no recorded history yet, and does not list them. Each repo has its folder name as its label. A history from an older fallow version shows a short key until its next recorded run.
The --format json output has a separate impact-cross-repo shape. Each entry contains the same per-project report as fallow impact, plus a stable project_key. Like the single-project report, it never includes a filesystem path. As with all of Impact, the report shows local developer work, and it is empty in CI.
What it tracks
| Signal | Meaning |
|---|---|
| Surfacing | Issue counts from the most recent recorded run |
| Trend | Delta versus the previous recorded run |
| Containment | A gate-marked fallow audit that failed, followed by a later run that cleared it: an issue stopped before it landed |
| Resolved | Findings that went away because someone removed or refactored the code. Fallow counts findings silenced with a fallow-ignore comment separately, as suppressed, and never as wins |
Fallow adds to the history when fallow audit runs with a gate marker. Two gates pass that marker: the Git pre-commit hook from fallow init --hooks, and the Claude Code agent gate from fallow hooks install --target agent. Local bare fallow runs update the whole-project Surfacing and Trend signals.
The weekly digest
When tracking is on and the results are not zero, fallow shows the headline numbers at most once a week:
- The JSON output has an
impact-reportentry in thenext_steps[]array, also on runs that are otherwise clean. - Bare
fallowprints a one-lineImpact:summary next to the failure summary.
Fallow stores the time of the last digest in the impact store. The digest thus stays weekly across agents, sessions, and surfaces. Fallow never shows a digest with zero results, and CI never gets the digest.
Storage and cleanup
Each project keeps one small history file in your user config dir:
~/Library/Application Support/fallow/on macOS$XDG_CONFIG_HOME/fallow/on Linux%APPDATA%\fallow\on Windows
Fallow keys each file by repository. When you run fallow impact from any subdirectory or git worktree of a repo, you see the history of that repo. An advisory lock puts concurrent recordings in sequence, for example a pre-commit gate that runs in two worktrees at once. Neither run thus loses the data of the other.
When you delete a repo from disk, its store stays until you remove it. Set FALLOW_IMPACT_STORE_MAX_AGE_DAYS to a number of days. A recorded run then removes each store that nobody touched for longer than that. When the variable is unset (the default), fallow keeps every store forever. You can also delete history with fallow impact reset (this project) or fallow impact reset --all (every project).
JSON output
fallow impact --format json and fallow impact status --format json print the report shape from the published output schema:
{
"kind": "impact",
"schema_version": "2",
"enabled": true,
"enabled_source": "project",
"record_count": 14,
"containment_count": 3,
"recent_containment": ["..."],
"resolved_total": 12,
"suppressed_total": 2,
"recent_resolved": ["..."],
"attribution_active": true,
"onboarding_declined": false,
"explicit_decision": true
}
Three fields help an agent that asks the user about the opt-in in a conversation:
enabled_sourcesays why tracking is on or off. The values areproject(an explicit per-repo enable or disable),user(the global default), ordefault(off).explicit_decisionis set only by an explicitimpact enableorimpact disable. An agent can thus tell "asked and declined" (enabled: false,explicit_decision: true) from "never asked" (enabled: false,explicit_decision: false), and offer the opt-in exactly once.onboarding_declinedis set byfallow init --decline. It stops the first-contact setup pointer of fallow for this project.