# Retries and failures

cronpad handles failure at three levels. A failed **attempt** is retried with backoff when the failure looks temporary. A **run** fails when it runs out of attempts or hits a failure that won't fix itself. A **job** whose runs fail too many times in a row is automatically disabled so it stops hammering a broken endpoint, and you are told about it.

| Level | Controlled by | Page |
|---|---|---|
| Attempt → retry | `retry` policy on the job | [Retries](retries.md) |
| Run → failed | `max_attempts`, sink outcome | [Retries](retries.md) |
| Job → disabled | `auto_disable_threshold` | [Auto-disable](auto-disable.md) |
| Telling you | Alert rules | [Alerts](../alerts/index.md) |