> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fallow.tools/llms.txt
> Use this file to discover all available pages before exploring further.

# fallow impact

> CLI reference for fallow impact. A local-only value report: what fallow is surfacing, the trend, commits contained at the gate, and findings resolved over time.

Show what fallow has done for you in this project: how many issues it is surfacing, the trend since the last recorded run, how many commits the pre-commit or agent gate contained (blocked, then cleared after a fix), and how many findings were genuinely resolved over time.

Impact is **opt-in and local-only**. History is stored in your private user config dir (`~/Library/Application Support/fallow/` on macOS, `$XDG_CONFIG_HOME/fallow/` on Linux, `%APPDATA%\fallow\` on Windows), one file per project: **nothing is ever written into the repo** (no `.fallow/` directory, no `.gitignore` change), nothing is uploaded, and recording never affects exit codes or analysis output. The store is keyed by repository, so running `fallow impact` from any subdirectory or any git worktree of a repo shows that repo's history. Recording is also skipped in CI.

```bash theme={null}
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
```

Enable Impact once for every project with `fallow impact default on`. A per-project `fallow impact enable` or `disable` always wins over the global default, so you can opt one repo out without disabling everywhere.

## Status bars

`fallow impact statusline` prints exactly one path-free plain-text line for shell and editor status bars. It reads the local Impact store only, starts no analysis, never enables recording, and keeps stderr empty on success.

The command intentionally ignores `--format`. Do not parse its output as JSON. Trend output uses only comparable whole-project scans. Older changed-file history is labeled and shown without a trend.

## Across all your repos

`fallow impact --all` aggregates the per-project histories in your config dir into one ranked table plus grand totals, so you can see what fallow has done for you across every project at once. It reads only the stored histories (no analysis), so it works from anywhere, including outside a repo.

```bash theme={null}
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)
```

Sort with `--sort {recent,resolved,contained,name}` (default `recent`). Projects with no recorded history yet are summarized, not listed. Repos are labeled by their folder name; histories recorded before this release show a short key until their next recorded run. The `--format json` output is a separate `impact-cross-repo` shape (each entry embeds the same per-project report as `fallow impact`, plus a stable `project_key`); like the single-project report, it never includes any filesystem path. As with all of Impact, this reflects local-developer work and 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 disappeared because code was removed or refactored. Findings silenced with a `fallow-ignore` comment are counted separately as suppressed, never as wins |

History accrues from `fallow audit` runs invoked with a gate marker: the Git pre-commit hook from [`fallow init --hooks`](/cli/init) and the Claude Code agent gate from [`fallow hooks install --target agent`](/integrations/claude-hooks) both pass one. Whole-project surfacing and trend advance on local bare `fallow` runs.

## The weekly digest

When tracking is enabled and has non-zero results, fallow surfaces the headline numbers at most once a week: JSON output carries an `impact-report` entry in the [`next_steps[]` array](/integrations/mcp) (also on otherwise clean runs), and bare `fallow` prints a one-line `Impact:` summary alongside the failure summary. The cadence stamp lives in the impact store, so the digest stays weekly across agents, sessions, and surfaces. Zero results never surface, and CI never sees the digest.

## Storage and cleanup

Each project keeps one small history file in your user config dir, keyed by repository so every worktree of a repo shares the same history. Concurrent recordings (for example, a pre-commit gate firing in two worktrees at once) are serialized with an advisory lock so neither run loses the other's data.

Stores for repos you delete from disk stay until you reclaim them. Set [`FALLOW_IMPACT_STORE_MAX_AGE_DAYS`](/configuration/environment#fallow_impact_store_max_age_days) to a number of days and a recorded run prunes any store untouched for longer than that. Unset (the default) keeps every store forever. You can also wipe history explicitly 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` emit the report shape from the published [output schema](https://github.com/fallow-rs/fallow/blob/main/docs/output-schema.json):

```json theme={null}
{
  "kind": "impact",
  "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 exist for agents that manage opt-ins conversationally:

* `enabled_source`: why tracking is on or off: `project` (an explicit per-repo enable/disable), `user` (the global default), or `default` (off).
* `explicit_decision`: set only by an explicit `impact enable` or `impact disable`, so an agent can distinguish "asked and declined" (`enabled: false`, `explicit_decision: true`) from "never asked" (`enabled: false`, `explicit_decision: false`) and offer the opt-in exactly once.
* `onboarding_declined`: set by [`fallow init --decline`](/cli/init); suppresses fallow's first-contact setup pointer for this project.
