.github/dependabot.yml.
This page is for maintainers: how PRs are grouped, which ones to merge,
and how to clear Rust advisories that Dependabot cannot fix on its own.
Goals
Version updates were accumulating faster than anyone reviewed them. Our solution is to fix grouping and slow the schedule, not turn updates off. Security updates stay individual. Each advisory needs its own review (false positives are common, so we need to know which CVE actually matters). GitHub also does not applyopen-pull-requests-limit to security PRs.
What gets opened
Four ecosystems: Cargo, npm (Yarn), Python (uv), GitHub Actions.
open-pull-requests-limit is 2 for Cargo / npm / Python (one slot for minor/patch, one for major) and 1 for Actions. That limit applies only to version updates. Security PRs are unlimited.
Cooldown is 7 days for ordinary version bumps (a short supply-chain window) and 30 days for majors (semver-major-days). Security updates skip cooldown.
Dependabot PRs are exempt from the linked-issue requirement.
Reviewing a PR
- Read the title / group name and put it in the table above;
- CI must be green. Dependency PRs do not need new tests, but
format,cargo deny, and the existing suites still run; - npm: if CI fails with
YN0028/yarn install --immutable, Dependabot updatedpackage.jsonand leftyarn.lockstale. Check out the branch, run Yarn so the lockfile matches, and push; - Close older individual version PRs that a newer grouped PR already covers. Dependabot often does this itself when it opens a replacement.
Security PRs
Land these first. Confirm the advisory actually affects this repo: Dependabot matches on version, not on whether we call the vulnerable API. If the bump is a major, or CI fails, do not force the Dependabot PR through. Open a normal PR with whatever code or lockfile changes are required. If we cannot bump yet, say so in the PR and follow the Rust ignore path below whencargo-deny is the failing check.
Minor / patch grouped PRs
Low risk. Merge when CI is green. If one crate in the group breaks the build, do not merge the bundle, we should split or skip that crate.Major grouped PRs
Majors often need code changes. The grouped PR exists so we are not flooded with one PR per package. It is not meant to be merged as-is. Pick the package we actually want, open a dedicated PR, and leave the rest.GitHub Actions
Actions are pinned by SHA. Dependabot security alerts are not generated for SHA-pinned actions but Dependabot still opens the quarterly grouped version PR and bumps those SHAs to the latest release. So there is no immediate security PR for a vulnerable action. That is an accepted trade-off: SHA pins stop tag-rewrite supply-chain attacks, at the cost of losing action alerts.Rust advisories (cargo-deny)
CI runs cargo deny check on pushes and on PRs that touch Cargo.lock, Cargo.toml, or .deny.toml. Failures often look like Dependabot work but are not something Dependabot can finish, especially when the crate sits behind a git dependency.
Worked example: RUSTSEC-2026-0258 needed a reqwest bump inside the ankitects/linkcheck fork, not a one-line change in this repo.
- Open the
RUSTSEC-…advisory and note the crate and patched versions. - See whether Dependabot already opened a security PR that bumps a crate we depend on directly. If CI is green, merge it.
- If the crate is transitive through a git dep (
linkcheck,percent-encoding-iri, …):- Land the bump in the fork.
- Point
Cargo.tomlat the newrev. - Run
cargo update -p <crate>(and any other crates the advisory names) soCargo.lockmoves.
- Run
cargo deny checklocally before pushing. - Only if a bump is not feasible, add the id to
.deny.toml[advisories] ignorewith a comment stating why and what the alternative is. Existing ignores follow that pattern. Do not silence an advisory without a comment.
rev pins. Those bumps are always manual.
Changing the config
- Do not group security updates;
- Do not put majors in the minor/patch group;
open-pull-requests-limitcannot cap security PRs;- Cooldown keys are
default-daysandsemver-major-days.