{"id":97770,"date":"2026-07-29T09:00:00","date_gmt":"2026-07-29T16:00:00","guid":{"rendered":"https:\/\/github.blog\/?p=97770"},"modified":"2026-07-28T13:45:31","modified_gmt":"2026-07-28T20:45:31","slug":"tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast","status":"publish","type":"post","link":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/","title":{"rendered":"Tame Dependabot: Group your updates, slow the cadence, keep security fast"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p class=\"wp-block-paragraph\">If you maintain an active repository, you know the feeling. You open your notifications on a Monday morning and there they are: five, 10, sometimes a dozen Dependabot pull requests, each bumping a single dependency by a single patch version. Individually, every one of them is helpful. Collectively, they&rsquo;re noise. And noise is how important updates get ignored.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We looked at <a href=\"https:\/\/github.com\/microsoft\/gctoolkit\">Microsoft&rsquo;s GCToolkit<\/a>, an open source Java library for analyzing garbage collection logs. As of July 2026, a <code>git log<\/code> of the repository showed that <strong>92 of its 578 commits, roughly one in six, were Dependabot version bumps<\/strong>, with 61 in the previous 12 months alone, sometimes several in a single day. That&rsquo;s a lot of review, merge, and CI cycles spent on routine maintenance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The good news: Dependabot already ships with the features to fix this. In <a href=\"https:\/\/github.com\/microsoft\/gctoolkit\/pull\/572\">a recent pull request<\/a>, the project changed its <code>dependabot.yml<\/code> in three small but meaningful ways, turning a daily drip of single-dependency pull requests into a predictable, grouped, monthly batch per ecosystem. Here&rsquo;s what changed, why it works, and how to apply the same pattern to your own repositories, following the GCToolkit example.<\/p>\n\n\n\n<h2 id=\"h-the-problem-good-defaults-wrong-cadence\" class=\"wp-block-heading\">The problem: Good defaults, wrong cadence<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here&rsquo;s what GCToolkit&rsquo;s configuration looked like before:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>version: 2\nupdates:\n- package-ecosystem: github-actions\n  directory: \"\/\"\n  schedule:\n    interval: daily\n  open-pull-requests-limit: 10<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='version: 2\nupdates:\n- package-ecosystem: github-actions\n  directory: \"\/\"\n  schedule:\n    interval: daily\n  open-pull-requests-limit: 10' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">This is a common starting point, but the <code>daily<\/code> interval here was a deliberate choice, not a default: <code>schedule.interval<\/code> is required, and GitHub&rsquo;s <a href=\"https:\/\/docs.github.com\/en\/code-security\/dependabot\/dependabot-version-updates\/configuring-dependabot-version-updates\">suggested starter template<\/a> uses <code>weekly<\/code>. Two things make this configuration noisy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>interval: daily<\/code><\/strong> tells Dependabot to check for updates every weekday (Monday through Friday). For a repository that references a handful of GitHub Actions, that can mean new pull requests landing on any weekday.<\/li>\n\n\n\n<li><strong>No grouping<\/strong> means every dependency gets its own pull request. Ten available updates equals 10 pull requests, 10 CI runs, and 10 review notifications.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>open-pull-requests-limit: 10<\/code> line is a symptom, not a cure: it caps the flood at 10 open pull requests, but it doesn&rsquo;t stop the flood.<\/p>\n\n\n\n<h2 id=\"h-the-fix-three-changes-that-compound\" class=\"wp-block-heading\">The fix: Three changes that compound<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here&rsquo;s the configuration after the change:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"\/\"\n    schedule:\n      interval: \"monthly\"\n    groups:\n      monthly-batch:\n        patterns:\n          - \"*\"\n\n  - package-ecosystem: \"maven\"\n    directory: \"\/\"\n    schedule:\n      interval: \"monthly\"\n    groups:\n      monthly-batch:\n        patterns:\n          - \"*\"<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"\/\"\n    schedule:\n      interval: \"monthly\"\n    groups:\n      monthly-batch:\n        patterns:\n          - \"*\"\n\n  - package-ecosystem: \"maven\"\n    directory: \"\/\"\n    schedule:\n      interval: \"monthly\"\n    groups:\n      monthly-batch:\n        patterns:\n          - \"*\"' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">Three things are happening here, and they build on each other.<\/p>\n\n\n\n<h3 id=\"h-1-group-everything-into-a-single-pull-request\" class=\"wp-block-heading\">1. Group everything into a single pull request<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>groups<\/code> block is the heart of this change:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>groups:\n  monthly-batch:\n    patterns:\n      - \"*\"<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='groups:\n  monthly-batch:\n    patterns:\n      - \"*\"' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">A <a href=\"https:\/\/docs.github.com\/en\/code-security\/dependabot\/working-with-dependabot\/optimizing-pr-creation-version-updates\">Dependabot group<\/a> bundles multiple dependency updates into one pull request. The name (<code>monthly-batch<\/code>) is yours to choose. It shows up in the pull request title and branch name. The <code>patterns<\/code> list decides which dependencies belong to the group, and <code>\"*\"<\/code> is a wildcard that matches all of them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So instead of 10 pull requests, you get one pull request titled something like <em>&ldquo;Bump the monthly-batch group with 10 updates.&rdquo;<\/em> One branch. One CI run. One review. If the whole batch is green, you merge once and you&rsquo;re done. If something breaks, it&rsquo;s contained in a single, reviewable place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For larger projects, you don&rsquo;t have to lump everything together. You can define multiple named groups with more specific patterns. For example, you could keep all your testing libraries in one group and your production dependencies in another, so related updates travel together and unrelated ones stay separate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Grouping keeps getting more capable, too. In a <a href=\"https:\/\/github.blog\/changelog\/2026-02-24-dependabot-can-group-updates-by-dependency-name-across-multiple-directories\/\">February 2026 update<\/a>, Dependabot gained the ability to group updates for the <em>same<\/em> dependency <strong>across multiple directories<\/strong> into a single pull request. That&rsquo;s aimed squarely at monorepos: if one library is pinned in a dozen services, a single bump used to open a dozen near-identical pull requests, one per directory. Now you can point the <code>directories<\/code> key (note the plural) at a list of paths, or a glob like <code>\/apps\/*<\/code>, and let your group collapse all of them into one:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>- package-ecosystem: \"npm\"\n  directories:\n    - \"\/apps\/*\"\n  schedule:\n    interval: \"monthly\"\n  groups:\n    monthly-batch:\n      group-by: dependency-name\n      patterns:Expand comment\n        - \"*\"<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='- package-ecosystem: \"npm\"\n  directories:\n    - \"\/apps\/*\"\n  schedule:\n    interval: \"monthly\"\n  groups:\n    monthly-batch:\n      group-by: dependency-name\n      patterns:Expand comment\n        - \"*\"' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">That&rsquo;s the same <code>monthly-batch<\/code> group as before, now spanning every service in the repository instead of a single directory. For the full set of options, see the <a href=\"https:\/\/docs.github.com\/en\/code-security\/reference\/supply-chain-security\/dependabot-options-reference\">Dependabot options reference<\/a>.<\/p>\n\n\n\n<h3 id=\"h-2-slow-the-cadence-from-daily-to-monthly\" class=\"wp-block-heading\">2. Slow the cadence from daily to monthly<\/h3>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>schedule:\n  interval: \"monthly\"<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='schedule:\n  interval: \"monthly\"' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">Switching from <code>daily<\/code> to <code>monthly<\/code> changes the rhythm from &ldquo;whenever anything changes&rdquo; to &ldquo;once, on a schedule you can plan around.&rdquo; Combined with grouping, this is the real noise reduction: Dependabot now opens <strong>one<\/strong> batched pull request per ecosystem, per month, instead of a steady trickle all month long.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Monthly is the right call for a mature library where dependencies are stable and updates are rarely urgent. If you want something in between, <code>weekly<\/code> is also available, and you can pin the exact day and time with <code>schedule.day<\/code> and <code>schedule.time<\/code>.<\/p>\n\n\n\n<h3 id=\"h-3-cover-every-ecosystem-you-actually-use\" class=\"wp-block-heading\">3. Cover every ecosystem you actually use<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The original config only requested version updates for <code>github-actions<\/code>. But GCToolkit is a Java project built with Maven, so its application dependencies weren&rsquo;t receiving Dependabot version updates. The updated config adds a second <code>updates<\/code> entry:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>- package-ecosystem: \"maven\"\n  directory: \"\/\"<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='- package-ecosystem: \"maven\"\n  directory: \"\/\"' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">This is an easy one to miss. Reducing noise is only half the win; the other half is making sure Dependabot is watching the dependencies that matter most. Each ecosystem gets its own schedule and its own group, so your Actions updates and your Maven updates arrive as two clean, separate batches.<\/p>\n\n\n\n<h2 id=\"h-but-what-about-security-updates\" class=\"wp-block-heading\">But what about security updates?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the question every maintainer should ask before slowing anything down, and it&rsquo;s where the design really shines: <strong>by default, the groups and schedule you set here shape your version updates, not your security fixes.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.github.com\/code-security\/dependabot\/dependabot-security-updates\/about-dependabot-security-updates\">Dependabot security updates<\/a> are raised as soon as a vulnerability with a fix is disclosed, independent of your <code>schedule<\/code> and separate from your version-update groups. So a monthly batch cadence for routine bumps doesn&rsquo;t delay a critical patch. (You <em>can<\/em> batch security fixes on purpose with a group scoped to <code>applies-to: security-updates<\/code>, but even then they&rsquo;re triggered by disclosures, not by your version-update schedule.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One caveat: this safety net only exists if Dependabot security updates are actually turned on for the repository, which also requires the dependency graph and Dependabot alerts to be enabled. Confirm those are on before you rely on a slower version-update cadence. Do that, and you get the best of both worlds: quiet, predictable maintenance for the routine stuff, and immediate action when a real vulnerability lands.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That separation is what makes &ldquo;slow down Dependabot&rdquo; a safe recommendation rather than a risky one.<\/p>\n\n\n\n<h2 id=\"h-a-new-safety-net-default-package-cooldown\" class=\"wp-block-heading\">A new safety net: default package cooldown<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There&rsquo;s one more piece of noise reduction that landed recently, and it happens automatically. <a href=\"https:\/\/github.blog\/security\/supply-chain-security\/the-case-for-a-cooldown-why-dependabot-now-waits-before-issuing-version-updates\/\">Dependabot now waits<\/a> until a new release has been on its registry for at least <strong>three days<\/strong> before opening a version-update pull request. This <em>cooldown<\/em> is the default and requires no configuration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Why wait? A brand-new release is one of the most common entry points for a supply chain attack. A compromised or simply broken version can reach your dependency updates before maintainers and the wider community have caught the problem. A short delay gives that signal time to surface, so you&rsquo;re far less likely to merge a bad release the moment it ships.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two things worth knowing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>It only applies to version updates.<\/strong> Security updates still open immediately, so critical fixes are never held back by the cooldown.<\/li>\n\n\n\n<li><strong>You stay in control.<\/strong> Use the <a href=\"https:\/\/docs.github.com\/code-security\/reference\/supply-chain-security\/dependabot-options-reference#cooldown-\"><code>cooldown<\/code><\/a> option in your <code>.github\/dependabot.yml<\/code> to widen or shorten the window, tune it per semantic-versioning level, or opt out entirely:<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>- package-ecosystem: \"maven\"\n  directory: \"\/\"\n  schedule:\n    interval: \"monthly\"\n  cooldown:\n    default-days: 7\n  groups:\n    monthly-batch:\n      patterns:\n        - \"*\"<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='- package-ecosystem: \"maven\"\n  directory: \"\/\"\n  schedule:\n    interval: \"monthly\"\n  cooldown:\n    default-days: 7\n  groups:\n    monthly-batch:\n      patterns:\n        - \"*\"' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">Pair cooldown with grouping and a monthly cadence and the effect compounds: fewer pull requests, and the ones you do get have had a few days to prove they&rsquo;re safe to merge.<\/p>\n\n\n\n<h2 id=\"h-how-to-apply-this-to-your-own-repositories\" class=\"wp-block-heading\">How to apply this to your own repositories<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can adopt this pattern in a few minutes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open (or create) <code>.github\/dependabot.yml<\/code> in the default branch of your repository.<\/li>\n\n\n\n<li>For each <code>package-ecosystem<\/code> you depend on, set <code>schedule.interval<\/code> to <code>weekly<\/code> or <code>monthly<\/code>.<\/li>\n\n\n\n<li>Add a <code>groups<\/code> block with a single wildcard group (<code>patterns: [\"*\"]<\/code>) to batch updates into one pull request per ecosystem.<\/li>\n\n\n\n<li>Make sure every ecosystem you actually ship with is listed: not just <code>github-actions<\/code>, but <code>maven<\/code>, <code>npm<\/code>, <code>pip<\/code>, <code>gomod<\/code>, <code>docker<\/code>, and so on.<\/li>\n\n\n\n<li>Commit, and let the next scheduled run produce a single, grouped pull request.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">A few tips as you tune it:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Start broad, then split.<\/strong> A single wildcard group is the simplest starting point. If you later find you want, say, patch-level and major-version updates handled differently, break the wildcard into more targeted named groups.<\/li>\n\n\n\n<li><strong>Don&rsquo;t fold security fixes into this cadence.<\/strong> Dependabot security updates are triggered by vulnerability disclosures, not your version-update schedule, so a monthly cadence never delays them. You can even group them with <code>applies-to: security-updates<\/code> without slowing them down.<\/li>\n\n\n\n<li><strong>Lean on cooldown.<\/strong> The three-day default already shields you from brand-new bad releases; bump <code>cooldown.default-days<\/code> higher if you want an even wider safety margin on version updates.<\/li>\n\n\n\n<li><strong>Right-size the interval.<\/strong> Fast-moving apps may prefer <code>weekly<\/code>; stable libraries do fine on <code>monthly<\/code>.<\/li>\n\n\n\n<li><strong>Consolidate monorepo directories.<\/strong> If the same dependency lives in many directories, list them under <code>directories<\/code> and set <code>group-by: dependency-name<\/code> in the group so a single bump produces one pull request instead of one per directory.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"h-the-takeaway\" class=\"wp-block-heading\">The takeaway<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dependency updates are one of those chores that&rsquo;s easy to automate and then easy to start ignoring, which defeats the purpose. The fix isn&rsquo;t to turn Dependabot off or to merge pull requests without looking. It&rsquo;s to shape its output so that the routine work is quiet and batched, and the urgent work still cuts through.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GCToolkit did it with about a dozen lines of YAML: group everything, slow the cadence to monthly, and make sure every ecosystem is covered. Add the new default cooldown on top, and even that monthly batch has had a few days to prove itself before it reaches you. The result is fewer pull requests, fewer CI runs, and, most importantly, a review queue where the updates that matter don&rsquo;t get lost in the ones that don&rsquo;t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Further reading: once the routine pull request noise is under control, the harder question is which security alerts to fix first. Our earlier post, <a href=\"https:\/\/github.blog\/security\/application-security\/cutting-through-the-noise-how-to-prioritize-dependabot-alerts\/\">Cutting through the noise: How to prioritize Dependabot alerts<\/a>, walks through using EPSS scores and repository properties to turn an overwhelming alert list into a clear, risk-ranked queue.<\/em><\/p>\n\n\n\n<div class=\"wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.github.com\/code-security\/dependabot\/dependabot-version-updates\/configuring-dependabot-version-updates\">Configure your own Dependabot updates &gt;<\/a><\/p>\n<\/div>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Dependabot keeps your dependencies current, but its defaults can flood your repository with pull requests. Here&#8217;s how grouping updates, slowing the cadence, and keeping security fixes fast cut the noise on a Microsoft open source project.<\/p>\n","protected":false},"author":2445,"featured_media":93180,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_gh_post_show_toc":"yes","_gh_post_is_no_robots":"","_gh_post_is_featured":"yes","_gh_post_is_excluded":"","_gh_post_is_unlisted":"","_gh_post_related_link_1":"","_gh_post_related_link_2":"","_gh_post_related_link_3":"","_gh_post_sq_img":"","_gh_post_sq_img_id":"","_gh_post_cta_title":"","_gh_post_cta_text":"","_gh_post_cta_link":"","_gh_post_cta_button":"","_gh_post_recirc_hide":"","_gh_post_recirc_col_1":"","_gh_post_recirc_col_2":"","_gh_post_recirc_col_3":"","_gh_post_recirc_col_4":"","_featured_video":"","_gh_post_additional_query_params":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[72,91,3335],"tags":[145,122,2739,1709],"coauthors":[3869],"class_list":["post-97770","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","category-security","category-supply-chain-security","tag-dependabot","tag-github-actions","tag-open-source","tag-supply-chain-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Tame Dependabot: Group your updates, slow the cadence, keep security fast - The GitHub Blog<\/title>\n<meta name=\"description\" content=\"Here&#039;s how grouping updates, slowing the cadence, and keeping security fixes fast cut the noise on a Microsoft open source project.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tame Dependabot: Group your updates, slow the cadence, keep security fast\" \/>\n<meta property=\"og:description\" content=\"Here&#039;s how grouping updates, slowing the cadence, and keeping security fixes fast cut the noise on a Microsoft open source project.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/\" \/>\n<meta property=\"og:site_name\" content=\"The GitHub Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-29T16:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-logo-github-blocks.png?fit=1920%2C1080\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bruno Borges\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bruno Borges\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/\"},\"author\":{\"name\":\"Bruno Borges\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/5b6467e30e44fd6cd44af84fb58b70d3\"},\"headline\":\"Tame Dependabot: Group your updates, slow the cadence, keep security fast\",\"datePublished\":\"2026-07-29T16:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/\"},\"wordCount\":1615,\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-security-logo-github-blocks.png?fit=1920%2C1080\",\"keywords\":[\"Dependabot\",\"GitHub Actions\",\"open source\",\"supply chain security\"],\"articleSection\":[\"Engineering\",\"Security\",\"Supply chain security\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/\",\"url\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/\",\"name\":\"Tame Dependabot: Group your updates, slow the cadence, keep security fast - The GitHub Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-security-logo-github-blocks.png?fit=1920%2C1080\",\"datePublished\":\"2026-07-29T16:00:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/5b6467e30e44fd6cd44af84fb58b70d3\"},\"description\":\"Here's how grouping updates, slowing the cadence, and keeping security fixes fast cut the noise on a Microsoft open source project.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/#primaryimage\",\"url\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-security-logo-github-blocks.png?fit=1920%2C1080\",\"contentUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-security-logo-github-blocks.png?fit=1920%2C1080\",\"width\":1920,\"height\":1080,\"caption\":\"Decorative image featuring geometric blocks with a shield icon displaying a check mark to represent security.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/github.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Security\",\"item\":\"https:\\\/\\\/github.blog\\\/security\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Supply chain security\",\"item\":\"https:\\\/\\\/github.blog\\\/security\\\/supply-chain-security\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Tame Dependabot: Group your updates, slow the cadence, keep security fast\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/github.blog\\\/#website\",\"url\":\"https:\\\/\\\/github.blog\\\/\",\"name\":\"The GitHub Blog\",\"description\":\"Updates, ideas, and inspiration from GitHub to help developers build and design software.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/github.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/5b6467e30e44fd6cd44af84fb58b70d3\",\"name\":\"Bruno Borges\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fdc809d8b33f56a827a4b4c3a34aafcf0274f9503770be40361071142c457015?s=96&d=mm&r=g6fd434ed04aaa15bae670215cbe8af38\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fdc809d8b33f56a827a4b4c3a34aafcf0274f9503770be40361071142c457015?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fdc809d8b33f56a827a4b4c3a34aafcf0274f9503770be40361071142c457015?s=96&d=mm&r=g\",\"caption\":\"Bruno Borges\"},\"description\":\"Principal Product Manager\",\"url\":\"https:\\\/\\\/github.blog\\\/author\\\/brunoborges\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tame Dependabot: Group your updates, slow the cadence, keep security fast - The GitHub Blog","description":"Here's how grouping updates, slowing the cadence, and keeping security fixes fast cut the noise on a Microsoft open source project.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/","og_locale":"en_US","og_type":"article","og_title":"Tame Dependabot: Group your updates, slow the cadence, keep security fast","og_description":"Here's how grouping updates, slowing the cadence, and keeping security fixes fast cut the noise on a Microsoft open source project.","og_url":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/","og_site_name":"The GitHub Blog","article_published_time":"2026-07-29T16:00:00+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-logo-github-blocks.png?fit=1920%2C1080","type":"image\/png"}],"author":"Bruno Borges","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bruno Borges","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/#article","isPartOf":{"@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/"},"author":{"name":"Bruno Borges","@id":"https:\/\/github.blog\/#\/schema\/person\/5b6467e30e44fd6cd44af84fb58b70d3"},"headline":"Tame Dependabot: Group your updates, slow the cadence, keep security fast","datePublished":"2026-07-29T16:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/"},"wordCount":1615,"image":{"@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-logo-github-blocks.png?fit=1920%2C1080","keywords":["Dependabot","GitHub Actions","open source","supply chain security"],"articleSection":["Engineering","Security","Supply chain security"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/","url":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/","name":"Tame Dependabot: Group your updates, slow the cadence, keep security fast - The GitHub Blog","isPartOf":{"@id":"https:\/\/github.blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/#primaryimage"},"image":{"@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-logo-github-blocks.png?fit=1920%2C1080","datePublished":"2026-07-29T16:00:00+00:00","author":{"@id":"https:\/\/github.blog\/#\/schema\/person\/5b6467e30e44fd6cd44af84fb58b70d3"},"description":"Here's how grouping updates, slowing the cadence, and keeping security fixes fast cut the noise on a Microsoft open source project.","breadcrumb":{"@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/#primaryimage","url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-logo-github-blocks.png?fit=1920%2C1080","contentUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-logo-github-blocks.png?fit=1920%2C1080","width":1920,"height":1080,"caption":"Decorative image featuring geometric blocks with a shield icon displaying a check mark to represent security."},{"@type":"BreadcrumbList","@id":"https:\/\/github.blog\/security\/supply-chain-security\/tame-dependabot-group-your-updates-slow-the-cadence-keep-security-fast\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/github.blog\/"},{"@type":"ListItem","position":2,"name":"Security","item":"https:\/\/github.blog\/security\/"},{"@type":"ListItem","position":3,"name":"Supply chain security","item":"https:\/\/github.blog\/security\/supply-chain-security\/"},{"@type":"ListItem","position":4,"name":"Tame Dependabot: Group your updates, slow the cadence, keep security fast"}]},{"@type":"WebSite","@id":"https:\/\/github.blog\/#website","url":"https:\/\/github.blog\/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/github.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/github.blog\/#\/schema\/person\/5b6467e30e44fd6cd44af84fb58b70d3","name":"Bruno Borges","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/fdc809d8b33f56a827a4b4c3a34aafcf0274f9503770be40361071142c457015?s=96&d=mm&r=g6fd434ed04aaa15bae670215cbe8af38","url":"https:\/\/secure.gravatar.com\/avatar\/fdc809d8b33f56a827a4b4c3a34aafcf0274f9503770be40361071142c457015?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fdc809d8b33f56a827a4b4c3a34aafcf0274f9503770be40361071142c457015?s=96&d=mm&r=g","caption":"Bruno Borges"},"description":"Principal Product Manager","url":"https:\/\/github.blog\/author\/brunoborges\/"}]}},"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/pamS32-pqW","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-logo-github-blocks.png?fit=1920%2C1080","_links":{"self":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/97770","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/users\/2445"}],"replies":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/comments?post=97770"}],"version-history":[{"count":2,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/97770\/revisions"}],"predecessor-version":[{"id":97795,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/97770\/revisions\/97795"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media\/93180"}],"wp:attachment":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media?parent=97770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/categories?post=97770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/tags?post=97770"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/coauthors?post=97770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}