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

# Severity & fail thresholds

> Control which findings block a commit, a check, or a merge.

Every finding has a **severity**. A threshold decides which severities cause a run
to fail (exit non-zero) and which are reported but don't block. This page covers
the controls you use to tune blocking behavior.

## Severity levels

Findings are reported at these severities, most to least serious:

| Severity     | Meaning                                                                                  |
| ------------ | ---------------------------------------------------------------------------------------- |
| **Critical** | A serious issue that should be fixed before merge.                                       |
| **High**     | An important issue.                                                                      |
| **Medium**   | A moderate issue.                                                                        |
| **Low**      | A minor issue. Hidden from text output by default; show it with `--show-low-confidence`. |
| **Warning**  | A non-blocking advisory.                                                                 |
| **Info**     | Informational only.                                                                      |

## Fail on warnings

By default, warnings are reported but don't fail a `check`. To treat warnings as
errors:

```bash theme={null}
mergeguide check src/ --fail-on-warning
```

Or set it for the whole project in config:

```yaml .mergeguide/config.yaml theme={null}
fail_on_warning: true
```

## Set the minimum reported severity

Use the `severity` config key to set the lowest severity MergeGuide reports:

```yaml .mergeguide/config.yaml theme={null}
severity: warning   # one of: error, warning, info
```

## Fail thresholds for scanners

The vulnerability and IaC scanners take an explicit `--fail-on` threshold. The run
exits `1` when a finding at that severity *or above* is present; otherwise it exits
`0`:

```bash theme={null}
# Fail only on critical vulnerabilities
mergeguide scan vuln --path ./my-project --fail-on critical

# Fail on high or critical IaC misconfigurations
mergeguide scan iac --path ./infra --fail-on high
```

`--fail-on` accepts `none` (default — never fail), `high`, or `critical`.

## Advisory mode

To report findings without ever blocking — useful when you're rolling MergeGuide
out and don't want to break builds yet — run in advisory mode. It always exits `0`:

```bash theme={null}
mergeguide check src/ --advisory
```

<Tip>
  A common adoption path: start with `--advisory` so findings surface without
  blocking, then remove `--advisory` and add `--fail-on-warning` once your team has
  cleared the backlog.
</Tip>

## How blocking maps to your workflow

The same thresholds apply wherever a check runs — locally, in a git hook, or in the
PR gate. The `fail_mode` config key (`closed` by default) controls whether a failed
check blocks. See [Enforcement layers](/operation/enforcement-layers) for where
each check sits in your workflow.

## Next steps

<CardGroup cols={2}>
  <Card title="Running scans" icon="play" href="/operation/running-scans">
    Run checks and scanners with these thresholds.
  </Card>

  <Card title="Configuration keys" icon="sliders" href="/reference/config-keys">
    The full list of config keys.
  </Card>
</CardGroup>
