Skip to main content
友田 陽大
Dependabot & dependency automation
Dependabot
トラブルシューティング
GitHub Actions
DevSecOps
依存関係管理
サプライチェーンセキュリティ

Complete troubleshooting for when Dependabot doesn't work / no PRs come: isolating causes and fixing by error

Dependabot doesn't create PRs, doesn't fix vulnerabilities, or errors on a private registry — a practical guide to isolating and fixing common stalls by cause. Faithful to the official documentation (as of June 2026), it explains, with copy-paste confirmation steps: the typical causes of 'no PRs come,' Cannot update to a non-vulnerable version, private_source_* errors, how to read logs, and the latest spec of the @dependabot comment commands that changed in January 2026.

Published
Reading time
8 min read
Author
友田 陽大
Share

"I enabled Dependabot, but no PR comes at all," "vulnerability alerts appear but no fix PR is created," "a red error keeps appearing on a private registry" — the most common Dependabot consultation is this kind of "doesn't work." Most causes aren't a malfunction but a misunderstanding of configuration, or insufficient isolation.

This article systematizes troubleshooting to reach the cause from the symptom, as a topic of the Dependabot production-operations guide. It's written as a checklist you can confirm in order at hand.

Rules for this article: error names, behavior, and commands are based on the GitHub official documentation (as of June 2026). In particular, the @dependabot comment commands changed on January 27, 2026, so info from old articles is dangerous (below). Always confirm the latest in the official troubleshooting before production operation.


0. First, isolate: which of the "three pillars" is stopped

Dependabot is a collective name for three separate features. Identifying which one isn't working first narrows the cause at once.

症状:新しいバージョンのPRが来ない
  → version updates の問題(.github/dependabot.yml が要る)

症状:脆弱性アラートは出るが修正PRが来ない
  → security updates の問題(パッチの有無・前提条件)

症状:脆弱性アラート自体が出ない
  → alerts / 依存グラフ の問題(設定トグル)

Decide which of these three branches you're in, then proceed to the corresponding chapter.


1. "No PR for a new version comes" (version updates)

1.1 First check .github/dependabot.yml

Version updates don't work without the config file. Check the following in order.

  • File path: .github/dependabot.yml at the repository root (not .github/workflows/).
  • YAML indentation: no tabs, 2 spaces. Are version: 2 and updates: present.
  • The package-ecosystem value: a correct identifier like npm / pip / gomod / docker / github-actions. node and yarn are wrong (npm/yarn/pnpm are all npm).
  • directory: does it point to the directory with the manifest (root is /).

1.2 "Pull request limit reached"

The official PR-count limit is version updates = 5 / security updates = 10. When the limit is reached, no new PRs are created.

1.3 Other "doesn't come" causes

CauseConfirm/fix
Stopped by ignoreIs there an ignore condition on that dependency? Confirm with @dependabot show <name> ignore conditions (below)
target-branch is another branchIs it watching a non-default branch? PRs are created against that branch
Waiting for scheduleWith weekly/monthly, nothing comes until the next run. Confirm with a manual trigger (§5)
Already latestIf the dependency is already latest, nothing happens (normal)
Lockfile not committed.gitignore'ing package-lock.json, etc., can prevent resolution

2. "Vulnerabilities don't get fixed" (security updates / alerts)

2.1 "Cannot update X to a non-vulnerable version"

The most frequent message in security updates. It means "the vulnerability is identified, but it can't be upgraded to a safe version without breaking other dependencies."

  • Cause: no fixed version yet, or a version-constraint conflict with another package in the dependency graph.
  • Fix: enabling version updates to keep dependencies fresh routinely raises the probability of resolving a vulnerability with a simple upgrade when it counts (the official recommendation). The more pickled the dependency, the more you stall on an urgent vulnerability fix.

2.2 No alert appears at all

Check itemFix
Is the dependency graph enabledTurn on Dependency graph in Settings → Advanced Security
Are Dependabot alerts enabledTurn on Dependabot alerts in the same settings
Are security updates enabledTurn on Dependabot security updates in the same settings
Is the lockfile committedSecurity updates target only dependencies listed in a manifest or lockfile
Is it a supported ecosystemUnsupported languages/managers aren't detected

The operations design for vulnerability response (SLA, auto-triage, grouped security updates) is detailed in the alerts/security-updates guide.


3. Parsing/resolution errors (dependency files)

3.1 "Dependabot can't resolve your LANGUAGE dependency files"

An error of not being able to resolve the dependency files.

  • Cause: a referenced dependency (a local path reference, an unreachable URL, a manifest in another repository, etc.) can't be accessed.
  • Fix: confirm all referenced targets are in accessible locations. If referencing a private repo, an organization-level allowance of private-repository access may be needed.

3.2 "the dependency file is not parseable / not found"

  • Cause: a syntax error in the manifest/lockfile, or the file isn't in the expected location (a directory mistake).
  • Fix: run the package manager locally to confirm the manifest resolves correctly (npm install / pip install / go mod tidy, etc.). Re-check the directory path.

4. Private-registry errors (four categories)

Errors around internal registries are classified by the official docs into four codes. The cause is known from the symptom, so it's fast to remember.

Error (code)MeaningMain fix
private_source_not_reachableCan't reach the registryNetwork reachability. For a private network not reachable from GitHub-hosted, a self-hosted runner
private_source_authentication_failureAuthentication failedCheck the registries definition and Dependabot secrets (≠ Actions secrets). Token expired, insufficient scope
private_source_timed_outThe registry response timed outRegistry load, network delay. Retry, check the route
private_source_certificate_failureCan't verify the certificateSelf-signed/internal CA. Check the certificate-chain setting

How to build the configuration (per-type authentication of registries, OIDC, self-hosted runners) is comprehensively covered in the private-registry authentication guide.


5. How to read logs and the manual trigger (consult the primary source)

Before guessing, look at the primary source.

  1. Open the repository's Insights → Dependency graph → Dependabot tab.
  2. Confirm each ecosystem's Last checked (last run) and status.
  3. If it failed, open the job log and search for the above error strings.

You can also trigger manually to reproduce/confirm immediately.

  • Version updates: click "Check for updates" in the Dependabot tab.
  • Security updates: click "Create Dependabot security update" on the relevant alert screen.

When "I changed a setting but can't tell if it worked," manual trigger → job log is the shortest verification loop.


6. @dependabot comment commands (mind the January 2026 change)

You can give instructions to an open PR via a comment. This changed on January 27, 2026 — copying old articles grabs commands that don't work, so be careful.

6.1 The update-behavior control commands that "remain"

These control Dependabot's update behavior and remain valid since there's no replacement in GitHub's standard UI.

@dependabot rebase                         # PR を rebase する
@dependabot recreate                       # PR を作り直す(手編集は破棄)
@dependabot ignore this dependency         # この依存の今後のPRを止める
@dependabot ignore this major version      # この major を無視
@dependabot ignore this minor version      # この minor を無視
@dependabot ignore this patch version      # この patch を無視
@dependabot unignore <dependency>          # ignore を解除
@dependabot show <dependency> ignore conditions  # 現在の ignore 条件を表示

Increasing ignore via comments piles up implicit ignore conditions not written in dependabot.yml. It's a breeding ground for "updates somehow don't come," so take inventory with show ... ignore conditions and state permanent rules on the dependabot.yml side (ignore-pickling countermeasure).

6.2 The deprecated PR-lifecycle commands (2026-01-27)

The PR-lifecycle operations @dependabot merge / squash and merge / cancel merge / close / reopen, etc., were deprecated. GitHub recommends doing them with the standard PR features.

What you want to doThe way going forward
MergeGitHub's Merge button / gh pr merge / auto-merge workflow
Close / reopenGitHub's standard UI / gh pr close · gh pr reopen / REST API

An example using the gh CLI:

gh pr merge <PR番号> --squash   # マージ(自動化は auto-merge ワークフローで)
gh pr close  <PR番号>           # クローズ

6.3 Other tips

  • To skip a force-push (don't let Dependabot overwrite your edits): include [dependabot skip] (or [skip dependabot] / [dependabot-skip] / [skip-dependabot]) in the commit message.
  • The 30-day rule: for a PR not merged within 30 days, Dependabot stops auto-rebasing. Manually rebase/recreate an old PR.

7. A checklist to prevent stalls

  • The path/indentation/package-ecosystem/directory of .github/dependabot.yml are correct
  • The manifest and lockfile are committed (not .gitignore'd)
  • alerts / security updates / dependency graph are all ON
  • On reaching open-pull-requests-limit, cycle slots with groups and auto-merge
  • Private registries with registries + Dependabot secrets + a self-hosted runner
  • Periodically inventory the ignore increased via comments (show ... ignore conditions)
  • Unify PR operations to the standard UI / gh CLI / auto-merge (don't use deprecated commands)

8. FAQ

Q. I placed dependabot.yml but no PR comes. A. Confirm the path (.github/dependabot.yml), indentation, package-ecosystem, and directory, and manually run "Check for updates" in the Dependabot tab to see the job log. If it's already latest, nothing happening is normal.

Q. I'm told "Cannot update X to a non-vulnerable version." A. There's no fixed version or the dependencies conflict. Enabling version updates to keep dependencies fresh resolves it more easily. If it can't be fixed, record the decision on a mitigation or library replacement.

Q. I get an authentication error on a private registry. A. If private_source_authentication_failure, check the registries definition and Dependabot secrets (separate from Actions secrets). Token expiry and insufficient scope are classics.

Q. @dependabot merge stopped working. A. The PR-lifecycle commands were deprecated on January 27, 2026. For merge, use GitHub's Merge button / gh pr merge / the auto-merge workflow.

Q. Where can I see the logs? A. Insights → Dependency graph → Dependabot tab. Last checked and each job's log are the primary sources.

友田

友田 陽大

Developer of a METI Minister's Award–winning product. With TypeScript + Python + AWS, I deliver SaaS, industry DX, and production-grade generative AI (RAG) end to end — from requirements to infrastructure and operations — single-handedly.

I can take on the implementation from this article as an engagement

Dependency auto-updates & supply-chain defense, from design to production

From enabling alerts/security/version updates, to dependabot.yml design (groups, cooldown, monorepo directories, private registries), safe auto-merge via GitHub Actions + fetch-metadata (auto for patch/minor, human review for major), severity-based-SLA vulnerability response, and observability of the open count. With experience wiring dependency updates into CI quality gates, I implement automation that doesn't flood you with PRs or pile up technical debt.

Available for both project-based (contract) and advisory engagements. Start with a free 30-minute consult.

Also worth reading