Dependabot options reference - GitHub Docs (original) (raw)

Detailed information for all the options you can use to customize how Dependabot maintains your repositories.

Who can use this feature?

This article provides reference information for the configuration options available in the dependabot.yml file. Use these options to customize how Dependabot monitors package ecosystems, schedules updates, and creates pull requests. For an overview of the dependabot.yml file and how it works, see About the dependabot.yml file.

All options marked with a icon also change how Dependabot creates pull requests for security updates, except where target-branch is used.

Required keys

Key Location Purpose
version Top level Dependabot configuration syntax to use. Always: 2.
updates Top level Section where you define each package-ecosystem to update.
package-ecosystem Under updates Define a package manager to update.
directories or directory Under each package-ecosystem entry Define the location of the manifest or other definition files to update.
schedule.interval Under each package-ecosystem entry Define whether to look for version updates: daily, weekly, monthly, quarterly, semiannually, yearly, or cron.

Optionally, you can also include a top-level registries key to define access details for private registries, see Top-level registries key.

YAML


# Basic `dependabot.yml` file with
# minimum configuration for two package managers

version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    # Look for `package.json` and `lock` files in the `root` directory
    directory: "/"
    # Check the npm registry for updates every day (weekdays)
    schedule:
      interval: "daily"

  # Enable version updates for Docker
  - package-ecosystem: "docker"
    # Look for a `Dockerfile` in the `root` directory
    directory: "/"
    # Check for updates once a week
    schedule:
      interval: "weekly"

For a real-world example of a dependabot.yml file, see Dependabot's own configuration file.

allow

Use to define exactly which dependencies to maintain for a package ecosystem. Often used with the ignore option. For examples, see Controlling which dependencies are updated by Dependabot.

Dependabot default behavior:

When allow is specified Dependabot uses the following process:

  1. Check for all explicitly allowed dependencies.
  2. Then filter out any ignored dependencies or versions.
    If a dependency is matched by an allow and an ignore statement, then it is ignored.
Parameters Purpose
dependency-name Allow updates for dependencies with matching names, optionally using * to match zero or more characters.
dependency-type Allow updates for dependencies of specific types.
update-types Allow updates to one or more semantic versioning levels. Supported values: version-update:semver-patch, version-update:semver-minor, and version-update:semver-major.

dependency-name (allow)

For most package managers, you should define a value that will match the dependency name specified in the lock or manifest file. A few systems have more complex requirements.

Package manager Format required Example
Gradle and Maven groupId:artifactId org.kohsuke:github-api
Docker for image tags The full name of the repository For an image tag of .dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc, use base/foo/bar/ruby.

dependency-type (allow)

Dependency types Supported by package managers Allow updates
direct All All explicitly defined dependencies.
indirect bundler, pip, composer, cargo, gomod, uv Dependencies of direct dependencies (also known as sub-dependencies, or transitive dependencies).
all All All explicitly defined dependencies. For bundler, pip, composer, cargo, gomod, uv, also the dependencies of direct dependencies.
production bundler, composer, mix, maven, npm, pip, uv (not all managers) Only to dependencies defined by the package manager as production dependencies.
development bundler, composer, mix, maven, npm, pip, uv (not all managers) Only to dependencies defined by the package manager as development dependencies.

update-types (allow)

update-types only affects version updates, not security updates.

Specify which semantic versions (SemVer) to allow.

SemVer is an accepted standard for defining versions of software packages, in the form x.y.z. Dependabot assumes that versions in this form are always major.minor.patch. The update-types value is a list of one or more strings.

When update-types is omitted from an allow rule, all update types are allowed for that rule.

You can combine update-types with dependency-name or dependency-type to further narrow allowed updates. For examples of how you can combine these options, see Controlling which dependencies are updated by Dependabot.

assignees

Specify individual assignees for all pull requests raised for a package ecosystem. For examples, see Customizing Dependabot pull requests to fit your processes.

Dependabot default behavior:

When assignees is defined:

Assignees must have write access to the repository. For organization-owned repositories, organization members with read access are also valid assignees.

commit-message

Define the format for commit messages. Since the titles of pull requests are written based on commit messages, this setting also impacts the titles of pull requests. For examples, see Customizing Dependabot pull requests to fit your processes.

Dependabot default behavior:

When commit-message is defined:

Parameters Purpose
prefix Defines a prefix for all commit messages and pull request titles.
prefix-development On supported systems, defines a different prefix to use for commits that update dependencies in the Development dependency group.
include Follow the commit message prefix with additional information.

Tip

When pull requests are raised for grouped updates, the branch name and pull request title are defined by the group IDENTIFIER, see groups.

prefix

prefix-development

Supported by: bundler, composer, mix, maven, npm, pip, and uv.

include

cooldown

Defines a cooldown period for dependency updates, allowing updates to be delayed for a configurable number of days. The cooldown option is only available for version updates, not security updates.

This feature enables users to customize how often Dependabot generates new version updates, offering greater control over update frequency. For examples, see Optimizing the creation of pull requests for Dependabot version updates.

Dependabot default behavior:

When cooldown is defined:

  1. Dependabot checks for updates according to the defined schedule.interval settings.
  2. Dependabot checks for any cooldown settings.
  3. If a dependency’s new release falls within its cooldown period, Dependabot skips updating the version for that dependency.
  4. Dependencies without a cooldown period, or those past their cooldown period, are updated to the latest version as per the configured versioning-strategy setting.
  5. After a cooldown ends for a dependency, Dependabot resumes updating the dependency following the standard update strategy defined in dependabot.yml.

Configuration of cooldown

You can specify the duration of the cooldown using the options below.

Parameter Description
default-days Default cooldown period for dependencies without specific rules (optional).
semver-major-days Cooldown period for major version updates (optional, applies only to package managers supporting SemVer).
semver-minor-days Cooldown period for minor version updates (optional, applies only to package managers supporting SemVer).
semver-patch-days Cooldown period for patch version updates (optional, applies only to package managers supporting SemVer).
include List of dependencies to apply cooldown (up to 150 items). Supports wildcards (*).
exclude List of dependencies excluded from cooldown (up to 150 items). Supports wildcards (*).

The table below shows the package managers that support cooldown. The default-days option is supported for all package managers listed, while semver-major-days, semver-minor-days, and semver-patch-days are supported only where indicated.

Package manager Default days supported SemVer-bump days supported
Bazel
Bundler
Bun
Cargo
Composer
Conda
Deno
Devcontainers
Docker
Docker Compose
Dotnet SDK
Elm
GitHub Actions
Gitsubmodule
Gomod (Go Modules)
Gradle
Helm
Hex (Hex)
Julia
Maven
Nix flakes
NPM and Yarn
NuGet
OpenTofu
Pip
pre-commit
Pub
Rust toolchain
sbt
Swift
Terraform
UV
vcpkg

Note

directories or directory

Required option. Use to define the location of the package manifests for each package manager (for example, the package.json or Gemfile). Without this information Dependabot cannot create pull requests for version updates. For examples, see Defining multiple locations for manifest files.

If you need to use more than one block in the configuration file to define updates for a single target branch of an ecosystem, you must ensure that all values are unique and there is no overlap in directories defined.

Note

The directories key supports globbing and the wildcard character *. These features are not supported by the directory key.

enable-beta-ecosystems

Not currently in use.

groups

Define rules to create one or more sets of dependencies managed by a package manager, to group updates into fewer, targeted pull requests. For examples, see Optimizing the creation of pull requests for Dependabot version updates.

Dependabot default behavior:

When groups is used to define rules:

Parameters Purpose
IDENTIFIER Define an identifier for the group to use in branch names and pull request titles. This must start and end with a letter, and can contain letters, pipes |, underscores _, or hyphens -.
applies-to Specify which type of update the group applies to. When undefined, defaults to version updates. Supported values: version-updates or security-updates.
dependency-type Limit the group to a type. Supported values: development or production.
exclude-patterns Define one or more patterns to exclude dependencies from the group.
group-by Group updates across multiple directories. Supported value: dependency-name.
patterns Define one or more patterns to include dependencies with matching names.
update-types Limit the group to one or more semantic versioning levels. Supported values: minor, patch, and major.

dependency-type (groups)

Supported by: bundler, composer, mix, maven, npm, and pip.

By default, a group will include all types of dependencies.

group-by (groups)

Use groups.<group-name>.group-by to specify how Dependabot should group updates across multiple directories in a monorepo.

When set to dependency-name, Dependabot will create a single pull request for each dependency update across all specified directories, rather than separate pull requests per directory.

Limitations of cross-directory grouping

When using group-by: dependency-name:

For examples showing the use of group-by, see Optimizing the creation of pull requests for Dependabot version updates.

patterns and exclude-patterns (groups)

Both options support using * as a wild card to define matches with dependency names. If a dependency matches both a pattern and an exclude-pattern, then it is excluded from the group.

update-types (groups)

By default, a group will include updates for all semantic versions (SemVer). SemVer is an accepted standard for defining versions of software packages, in the form x.y.z. Dependabot assumes that versions in this form are always major.minor.patch.

For examples, see Controlling which dependencies are updated by Dependabot.

ignore

Use with the allow option to define exactly which dependencies to maintain for a package ecosystem. Dependabot checks for all allowed dependencies and then filters out any ignored dependencies or versions. So a dependency that is matched by both an allow and an ignore will be ignored. For examples, see Controlling which dependencies are updated by Dependabot.

Dependabot default behavior:

When ignore is used Dependabot uses the following process:

  1. Check for all explicitly allowed dependencies.
  2. Then filter out any ignored dependencies or versions.
    If a dependency is matched by an allow and an ignore statement, then it is ignored.
Parameters Purpose
dependency-name Ignore updates for dependencies with matching names, optionally using * to match zero or more characters.
versions Ignore specific versions or ranges of versions.
update-types Ignore updates to one or more semantic versioning levels. Supported values: version-update:semver-patch, version-update:semver-minor, and version-update:semver-major.

dependency-name (ignore)

For most package managers, you should define a value that will match the dependency name specified in the lock or manifest file. A few systems have more complex requirements.

Package manager Format required Example
Gradle and Maven groupId:artifactId org.kohsuke:github-api
Docker for image tags The full name of the repository For an image tag of .dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc, use base/foo/bar/ruby.

versions (ignore)

Use to ignore specific versions or ranges of versions. If you want to define a range, use the standard pattern for the package manager. For example:

For examples, see Controlling which dependencies are updated by Dependabot.

update-types (ignore)

Specify which semantic versions (SemVer) to ignore. SemVer is an accepted standard for defining versions of software packages, in the form x.y.z. Dependabot assumes that versions in this form are always major.minor.patch.

insecure-external-code-execution

Supported by: bundler, mix, and pip.

Allow Dependabot to execute external code in the manifest during updates. For examples, see Allowing external code execution.

Dependabot default behavior:

When you allow insecure-external-code-execution:

Supported value: allow.

labels

Specify your own labels for all pull requests raised for a package manager. For examples, see Customizing Dependabot pull requests to fit your processes.

Dependabot default behavior:

When labels is defined:

Setting this option will also affect pull requests for security updates to the manifest files of this package manager, unless you use target-branch to check for version updates on a non-default branch.

milestone

Associate all pull requests raised for a package manager with a milestone. For examples, see Customizing Dependabot pull requests to fit your processes.

Dependabot default behavior:

When milestone is defined:

Supported value: the numeric identifier of a milestone.

Tip

If you view a milestone, the final part of the page URL, after milestone, is the identifier. For example: https://github.com/<org>/<repo>/milestone/3, see Viewing your milestone's progress.

multi-ecosystem-groups

Define groups that span multiple package ecosystems to get a single Dependabot pull request that updates all supported package ecosystems. This approach helps reduce the number of Dependabot pull requests you receive and streamlines your dependency update workflow.

Dependabot default behavior:

When multi-ecosystem-groups is used:

multi-ecosystem-group

Assign individual package ecosystems to a multi-ecosystem group using the multi-ecosystem-group parameter in your updates configuration.

Important

Multi-ecosystem updates require specific configuration patterns and have unique parameter merging behavior. For complete setup instructions, configuration examples, and detailed parameter reference, see Configuring multi-ecosystem updates for Dependabot.

YAML

# Basic `dependabot.yml` file defining a multi-ecosystem-group
version: 2

multi-ecosystem-groups:
  infrastructure:
    schedule:
      interval: "weekly"

updates:
  - package-ecosystem: "docker"
    directory: "/"
    patterns: ["nginx", "redis"]
    multi-ecosystem-group: "infrastructure"

  - package-ecosystem: "terraform"
    directory: "/"
    patterns: ["aws"]
    multi-ecosystem-group: "infrastructure"

open-pull-requests-limit

Change the limit on the maximum number of pull requests for version updates open at any time.

Dependabot default behavior:

When open-pull-requests-limit is defined:

package-ecosystem

Required option. Define one package-ecosystem element for each package manager that you want Dependabot to monitor for new versions. The repository must also contain a dependency manifest or lock file for each package manager, see Example dependabot.yml file.

Package manager YAML value Supported versions
Bazel bazel v7, v8, v9
Bun bun >=v1.2.5
Bundler bundler v2
Cargo cargo v1
Composer composer v2
Conda conda Not applicable
Deno deno >=v2
Dev containers devcontainers Not applicable
Docker docker v1
Docker Compose docker-compose v2, v3
.NET SDK dotnet-sdk >=.NET Core 3.1
Helm Charts helm v3
Hex mix v1
Julia julia >=v1.10
elm-package elm v0.19
git submodule gitsubmodule Not applicable
GitHub Actions github-actions Not applicable
Go modules gomod v1
Gradle gradle Not applicable
Maven maven Not applicable
Nix flakes nix Not applicable
npm npm v7, v8, v9, v10
NuGet nuget <=6.12.0
OpenTofu opentofu Not applicable
pip pip 24.2
pip-compile pip 7.5.3
pipenv pip <= 2024.4.1
pnpm npm v7, v8, v9, v10
poetry pip v2
pre-commit pre-commit Not applicable
pub pub v2
Rust toolchain rust-toolchain Not applicable
sbt sbt Not applicable
Swift swift v5
Terraform terraform >= 0.13, <= 1.10.x
uv uv v0
vcpkg vcpkg Not applicable
yarn npm v1, v2, v3, v4

pull-request-branch-name.separator

Specify a separator to use when generating branch names. For examples, see Customizing Dependabot pull requests to fit your processes.

Dependabot default behavior:

When pull-request-branch-name.separator is defined:

Supported values: "-", _, /

Tip

The hyphen symbol must be escaped so it is not interpreted as starting an empty YAML list.

rebase-strategy

Disable automatic rebasing of pull requests raised by Dependabot.

Dependabot default behavior is to rebase open pull requests when Dependabot detects any changes to a version or security update pull request. Dependabot checks for changes when:

When rebase-strategy is set to disabled, Dependabot stops rebasing pull requests.

Note

Pull requests that were open before you disable rebasing will continue to be rebased until 30 days after they were opened. This affects all pull requests that have conflicts with the target branch and all pull requests for version updates.

registries

Configure access to private package registries to allow Dependabot to update a wider range of dependencies, see Configuring access to private registries for Dependabot and Guidance for the configuration of private registries for Dependabot.

There are 2 locations in the dependabot.yml file where you can use the registries key:

  1. At the top level, where you define the private registries you want to use and their access information, see Configuring access to private registries for Dependabot.
  2. Within the updates blocks, where you can specify which private registries each package manager should use.

Dependabot default behavior is to raise pull requests only to update dependencies stored in publicly accessible registries.

When the Dependabot configuration file has a top-level registries section, defining access to one or more private registries, you can configure each package-ecosystem to use one or more of these private registries.

When registries is defined for a package manager:

Supported values: REGISTRY_NAME or "*"

schedule

Required option. Define how often to check for new versions for each package manager you configure using the interval parameter. Optionally, for daily and weekly intervals, you can customize when Dependabot checks for updates. For examples, see Optimizing the creation of pull requests for Dependabot version updates.

Parameters Purpose
interval Required. Defines the frequency for Dependabot.
day Specify the day to run for a weekly interval.
time Specify the time to run.
cronjob Defines the cron expression if the interval type is cron.
timezone Specify the timezone of the time value.

interval

Supported values: daily, weekly, monthly, quarterly, semiannually, yearly, or cron

Each package manager must define a schedule interval.

Note

The supported values quarterly, semiannually, and yearly are only available on GitHub Enterprise Server from version 3.19.

By default, Dependabot randomly assigns a time to apply all the updates in the configuration file. You can use the time and timezone parameters to set a specific runtime for all intervals. If you use a cron interval, you can define the update time with a cronjob expression.

day

Supported values: monday, tuesday, wednesday, thursday, friday, saturday, or sunday

Optionally, run weekly updates for a package manager on a specific day of the week.

time

Format: hh:mm

Optionally, run all updates for a package manager at a specific time of day. By default, times are interpreted as UTC.

cronjob

Supported values: Valid cron expression in cron syntax or natural expression.

Cron syntax has five fields separated by a space, and each field represents a unit of time.

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │
* * * * *

Examples : 0 9 * * *, every day at 5pm

0 9 * * * is equivalent to "every day at 9am". every day at 5pm is equivalent to 0 17 * * *.

Note

YAML


# Basic `dependabot.yml` file for cronjob

version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    # Look for `package.json` and `lock` files in the `root` directory
    directory: "/"
    # Check the npm registry for updates based on `cronjob` value
    schedule:
      interval: "cron"
      cronjob: "0 9 * * *"

timezone

Specify a time zone for the time value. The default time zone is UTC.

The time zone identifier must match a timezone in the database maintained by iana, see List of tz database time zones.

target-branch

Define a specific branch to check for version updates and to target pull requests for version updates against. For examples, see Customizing Dependabot pull requests to fit your processes.

Dependabot default behavior:

When target-branch is defined:

exclude-paths

Use to specify paths of directories and files that Dependabot should ignore when scanning for manifests and dependencies. This option is useful when you want to prevent updates for dependencies in certain locations, such as test assets, vendored code, or specific files.

Dependabot default behavior:

When exclude-paths is defined:

Parameter Purpose
exclude-paths A list of glob patterns for files or directories to ignore.

Glob patterns are supported, such as ** for recursive matching and * for single-segment wildcards. Patterns are relative to the directory specified for the update configuration. Each ecosystem can have its own exclude-paths settings.

Example

YAML

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    exclude-paths:
      - "src/test/assets"
      - "vendor/**"
      - "src/*.js"
      - "src/test/helper.js"

# Sample patterns that can be used-

# Pattern: docs/*.json
# Matches: docs/foo.json, docs/bar.json

# Pattern: *.lock
# Matches: Gemfile.lock, package.lock, foo.lock (in any directory)

# Pattern: test/**
# Matches: test/foo.rb, test/bar/baz.rb, test/any/depth/file.txt

# Pattern: config/settings.yml
# Matches: config/settings.yml

# Pattern: **/*.md
# Matches: README.md, docs/guide.md, any/depth/file.md

# Pattern: src/*
# Matches: src/main.rb, src/app.js
# Does NOT match: src/utils/helper.rb

# Pattern: hidden/.*
# Matches: hidden/.env, hidden/.secret

In this example, Dependabot will ignore the src/test/assets directory, all files under vendor/, all JavaScript files directly under src/, and the specific file src/test/helper.js when scanning for updates.

vendor

Supported by: bundler and gomod only.

Tell Dependabot to maintain your vendored dependencies as well as the dependencies defined by manifest files. A dependency is described as "vendored" or "cached" when you store the code within your repository, see bundle cache documentation and go mod vendor documentation.

For examples, see Controlling which dependencies are updated by Dependabot.

Dependabot default behavior:

When vendor is enabled:

Supported values: true or false

versioning-strategy

Supported by: bundler, cargo, composer, mix, npm, pip, pub, and uv

Define how Dependabot should edit manifest files. For examples, see Controlling which dependencies are updated by Dependabot.

Dependabot default behavior:

When versioning-strategy is defined, Dependabot uses the strategy specified.

Value Behavior
auto Default behavior.
increase Always increase the minimum version requirement to match the new version. If a range already exists, typically this only increases the lower bound.
increase-if-necessary Leave the version requirement unchanged if it already allows the new release (Dependabot still updates the resolved version). Otherwise widen the requirement.
lockfile-only Only create pull requests to update lockfiles. Ignore any new versions that would require package manifest changes.
widen Widen the allowed version requirements to include both the new and old versions, when possible. Typically, this only increases the maximum allowed version requirement.

For example, if the current version is 1.0.0 and the current constraint is ^1.0.0 the different strategies would raise the following updates:

New version 1.2.0

New version 2.0.0

Note

If the package manager you use does not yet support configuring the versioning-strategy parameter, or does not support a value you need, the strategy code is open source, so if you'd like a particular ecosystem to support a new strategy, you are always welcome to submit a pull request in https://github.com/dependabot/dependabot-core/.

Versioning tags

Dependabot recognizes a variety of versioning tags for pre-releases, stable versions, and custom tags across different ecosystems.

The dependabot.yml file doesn't control the versioning tags that you can use, but you can define in configuration options such as ignore the supported versioning tags you want to ignore updates for.

Supported versioning tags

Package Manager YAML value Supported Tags Examples
Maven maven alpha, a, beta, b, milestone, m, rc, cr, sp, ga, final, release, snapshot spring-security-web@5.6.0-SNAPSHOT, spring-core@5.2.0.RELEASE
npm npm alpha, beta, canary, dev, experimental, latest, legacy, next, nightly, rc, release, stable lodash@beta, react@latest, express@next
pnpm npm alpha, beta, canary, dev, experimental, latest, legacy, next, nightly, rc, release, stable lodash@1.2.0-alpha, react@alpha, vue@next
sbt sbt alpha, a, beta, b, milestone, m, rc, cr, sp, ga, final, release, snapshot akka-actor@2.7.0-RC1, play-json@3.0.0-M1
yarn npm alpha, beta, canary, dev, experimental, latest, legacy, next, nightly, rc, release, stable lodash@1.2.0-alpha, axios@latest, moment@nightly
Bundler bundler Any prerelease identifier (commonly alpha, beta, rc, pre) rails@1.0.0.alpha, rack@1.0.0.beta1, rspec@1.0.0.rc2
Cargo cargo Any SemVer prerelease identifier (commonly alpha, beta, rc, dev) serde@1.0.0-alpha, tokio@0.2.0-preview.3, clap@4.0.0-rc.1, rand@1.0.0-dev
pip pip a, b, rc, dev, post requests@1.0.0a1, numpy@2.0.0b3, django@4.0rc1, black@1.0.0.dev5, pandas@2.0.5.post1
pipenv pip a, b, rc, dev, post requests@1.0.0a1, numpy@2.0.0b3, django@4.0rc1, black@1.0.0.dev5, pandas@2.0.5.post1
pip-compile pip a, b, rc, dev, post requests@1.0.0a1, numpy@2.0.0b3, django@4.0rc1, black@1.0.0.dev5, pandas@2.0.5.post1
poetry pip a, b, rc, dev, post requests@1.0.0a1, numpy@2.0.0b3, django@4.0rc1, black@1.0.0.dev5, pandas@2.0.5.post1
Gradle gradle alpha, a, beta, b, milestone, m, rc, cr, snapshot, ga, final, release, sp (case-insensitive) spring-boot-starter@3.0.0-RC1, kotlin-stdlib@2.0.0-beta, guava@33.0.0-SNAPSHOT, junit@5.10.0-M2, ktor@2.3.0-rc.1
Elm elm None—strict MAJOR.MINOR.PATCH only (no pre-release versions) elm/core@1.0.0, elm/html@2.3.1, elm/json@10.0.0
Docker docker alpha, beta, rc, dev, preview, pre, nightly, snapshot, canary, unstable (heuristic detection) nginx@1.25.0-rc1, node@20.0.0-alpha.1, redis@7.0.0-nightly, alpine@3.18.0-dev, ubuntu@22.04-preview
git submodule gitsubmodule None—pins to commit SHAs or git tags (no versioning scheme) my-lib@abc1234, shared-utils@v1.2.0
Go modules gomod alpha, beta, rc (SemVer prerelease after -) github.com/go-chi/chi@v5.0.0-rc1, google.golang.org/grpc@v1.60.0-beta.1, github.com/octo-org/octo-module@v0.17.0-alpha.1
Bazel bazel Any SemVer prerelease identifier (commonly alpha, beta, rc) rules_go@0.46.0-rc1, rules_rust@0.40.0-beta, bazel_skylib@1.5.0-alpha
Bun bun alpha, beta, rc, canary (SemVer prerelease after -) bun@1.0.0-beta.1, elysia@1.0.0-rc.3, hono@4.0.0-canary.1
Deno deno Any SemVer prerelease identifier (commonly alpha, beta, rc) oak@13.0.0-alpha, fresh@2.0.0-rc.1, std@0.220.0-beta.2
GitHub Actions github-actions Any SemVer prerelease identifier (commonly alpha, beta, rc) my-org/my-action@v1.0.0-beta.1, my-org/deploy@v2.0.0-rc1, my-org/lint@v3.0.0-alpha
Hex mix Any SemVer prerelease identifier (commonly alpha, beta, rc, dev) phoenix/phoenix@1.7.0-rc.0, elixir-ecto/ecto@3.11.0-beta.1, elixir-plug/plug@1.15.0-alpha.1
Julia julia Any SemVer prerelease identifier (commonly rc, DEV, beta) HTTP@1.10.0-rc1, Plots@2.0.0-DEV, DataFrames@1.6.0-beta.1
Nix nix None—tracks flake input commits (no versioning scheme) nixpkgs@a1b2c3d, devenv@e4f5a6b, flake-utils@c7d8e9f
NuGet nuget Any SemVer prerelease identifier (commonly alpha, beta, rc, preview) Newtonsoft.Json@13.0.0-rc1, Microsoft.Extensions.Hosting@8.0.0-preview.7, Serilog@3.0.0-beta.1
OpenTofu opentofu Any SemVer prerelease identifier (commonly alpha, beta, rc) opentofu/aws@5.0.0-alpha, opentofu/google@5.0.0-rc1, opentofu/azurerm@4.0.0-beta1
Rust toolchain rust-toolchain Channel-based: stable, beta, nightly (not SemVer prerelease) rust@1.78.0, rust@beta, rust@nightly, rust@nightly-2024-01-15
Terraform terraform Any SemVer prerelease identifier (commonly alpha, beta, rc) hashicorp/aws@5.0.0-rc1, hashicorp/google@4.0.0-alpha, hashicorp/azurerm@3.0.0-beta1

Ecosystem-specific versioning details

The following details describe how Dependabot interprets versioning for specific ecosystems.

Versioning tag glossary

Top-level registries key

Specify authentication details that Dependabot can use to access private package registries, including registries hosted by GitLab or Bitbucket.

The value of the registries key is an associative array, each element of which consists of a key that identifies a particular registry and a value which is an associative array that specifies the settings required to access that registry. The following dependabot.yml file configures a registry identified as dockerhub in the registries section of the file and then references this in the updates section of the file.

YAML

# Minimal settings to update dependencies stored in one private registry

version: 2
registries:
  dockerhub: # Define access for a private registry
    type: docker-registry
    url: registry.hub.docker.com
    username: octocat
    password: ${{secrets.DOCKERHUB_PASSWORD}}
updates:
  - package-ecosystem: "docker"
    directory: "/docker-registry/dockerhub"
    registries:
      - dockerhub # Allow version updates for dependencies in this registry
    schedule:
      interval: "monthly"

You use the following options to specify access settings. Registry settings must contain a type and a url, and typically either a username and password combination or a token.

Parameters Purpose
REGISTRY_NAME Required: Defines an identifier for the registry.
type Required: Identifies the type of registry.
Authentication details Required: The parameters supported for supplying authentication details vary for registries of different types.
url Required: The URL to use to access the dependencies in this registry. The protocol is optional. If not specified, https:// is assumed. Dependabot adds or ignores trailing slashes as required.
replaces-base If the boolean value is true, Dependabot resolves dependencies using the specified url rather than the base URL of that ecosystem.

For in-depth information about available options, as well as recommendations and advice when configuring private registries, see Guidance for the configuration of private registries for Dependabot.

type and authentication details

The parameters used to provide authentication details for access to a private registry vary according to the registry type.

Registry type Required authentication parameters
cargo-registry token
composer-repository username and passwordor OIDC with tenant-id and client-id
docker-registry username and passwordor OIDC with tenant-id and client-id
git username and passwordor OIDC with tenant-id and client-id
hex-organization organization and key
hex-repository repo and auth-key optionally with the corresponding public-key-fingerprint
maven-repository username and passwordor OIDC with tenant-id and client-id
npm-registry username and passwordor tokenor OIDC with tenant-id and client-id
nuget-feed username and passwordor tokenor OIDC with tenant-id and client-id
pub-registry token
python-index username and passwordor tokenor OIDC with tenant-id and client-id
rubygems-server username and passwordor tokenor OIDC with tenant-id and client-id
terraform-registry token

All sensitive data used for authentication should be stored securely and referenced from that secure location, see Configuring access to private registries for Dependabot.

Tip

If the account is a GitHub account, you can use a GitHub personal access token in place of the password.

For more information about OIDC support for Dependabot, see OpenID Connect and Configuring access to private registries for Dependabot.

url and replaces-base

The url parameter defines where to access a registry. When the optional replaces-base parameter is enabled (true), Dependabot resolves dependencies using the value of url rather than the base URL of that specific ecosystem.