Huny's Dev Blog
huny.dev

GitHub Dependabot for Agent Package Manager (APM): Pinning Rules, apm.lock.yaml Regeneration, and Review Boundaries

Understand how GitHub Dependabot version updates work for Agent Package Manager (apm.yml and apm.lock.yaml), why branch pins require an existing lockfile, and why version updates do not replace security review.

Hun Jang
Hun Jang Nov 6, 2026

A conceptual illustration showing apm.yml tag, 40-character SHA, and branch pins flowing through the Dependabot version update gate into apm.lock.yaml regeneration and CI verification. This is not an actual tool screenshot.

On November 3, 2026, GitHub announced general availability (GA) for Dependabot version updates supporting Agent Package Manager (APM). By adding package-ecosystem: "apm" to .github/dependabot.yml, teams can automatically receive pull requests that update AI agent skills, prompts, and instructions declared as Git dependencies in apm.yml and regenerate apm.lock.yaml when present. GitHub Changelog Announcement

The core operational takeaway: this release covers version updates only—not security updates—and Dependabot never creates a missing apm.lock.yaml file. If your repository pins agent skills to a branch such as #main without committing apm.lock.yaml, Dependabot leaves apm.yml unchanged and has no lockfile to update. Likewise, abbreviated commit SHAs (fewer than 40 hex characters), unpinned dependencies, local paths, and MCP server entries in apm.yml are silently skipped.

This guide synthesizes the GitHub Changelog announcement, the GitHub Docs supported ecosystems reference, and the dependabot-core APM implementation specification (#14350). It does not test self-hosted GitHub Enterprise Server 3.24 instances; the local Python validator below checks apm.yml reference formats and lockfile readiness rules.

1. Separate Version Updates from Security Updates and Lockfile Creation

Unlike traditional code libraries, updating an AI agent skill or prompt file directly alters how the agent interprets instructions, invokes tools, and edits files. Automating version pull requests is a maintenance aid, not a security gate.

Dimension
Covered by Dependabot APM Support
Not Covered / Requires Separate Controls
Update Scope
Version updates only. Periodically checks upstream Git repositories for newer releases or commits and opens a pull request
No Dependabot security updates or vulnerability alerts. Does not scan upstream skills or prompts for prompt injection or unsafe instructions
Manifest Sections
Supported Git dependencies under dependencies.apm and devDependencies.apm in apm.yml (supports ignore, groups, and cooldown)
Unpinned entries, abbreviated commit SHAs (<40 characters), local filesystem paths (./, ../), and MCP server definitions
Lockfile (apm.lock.yaml) Handling
Regenerates apm.lock.yaml via apm lock only when the file already exists in the repository
Does not create a new lockfile if missing. Use apm lock and commit apm.lock.yaml upfront to enable reproducible apm install --frozen runs
Platform Availability
Generally available on GitHub.com across all plans
Slated for GitHub Enterprise Server (GHES) 3.24; unavailable on earlier self-hosted GHES releases

2. How Dependabot Handles Each apm.yml Pinning Format

Dependabot's update behavior depends entirely on how a Git dependency is pinned in apm.yml:

Pinning Style
apm.yml Syntax Example
Changes apm.yml?
Regenerates apm.lock.yaml (if present)?
Operational Nuance
1. Release Tag Pin (Standard, Virtual Package, or Scoped Tag)
owner/repo#v1.2.0
owner/repo/skills/review#v1.2.0
owner/repo#review--v1.2.0
Yes (bumps to the latest release tag)
Yes (updates resolved commit and content hashes)
Recommended for clear version diffs in both the manifest and lockfile
2. Full 40-Character Commit SHA Pin
owner/repo#a1b2c3d4e5f60718293a4b5c6d7e8f9012345678
Yes (moves to the commit of the latest annotated release tag with a # vX.Y.Z comment)
Yes
Matches apm update behavior while enforcing immutable commit references in the manifest
3. Branch Pin
owner/repo#main
No (leaves #main unchanged in apm.yml)
Yes (bumps the locked commit in apm.lock.yaml to the latest branch commit)
If apm.lock.yaml is not committed to the repo, a branch pin results in no effective Dependabot update
4. Abbreviated SHA / Unpinned / Local Path
owner/repo#a1b2c3d (7 chars)
owner/repo
./local-skills/lint
Ignored (Unchanged)
Ignored (Unchanged)
Short 7- or 8-character commit hashes are skipped silently; always use full 40-character SHAs or release tags

3. Configuring .github/dependabot.yml and CI Lockfile Enforcement

To enable weekly checks for a root apm.yml manifest, add an apm entry to .github/dependabot.yml. In a monorepo with multiple independent apm.yml files, add a separate entry for each directory.

Pair Dependabot with apm install --frozen in CI so builds fail immediately if apm.lock.yaml is missing or out of sync with apm.yml (including MCP configuration state):

4. Validating apm.yml Dependency Formats and Lockfile Readiness in Python

Before enabling Dependabot on an existing repository, run the dependency-free Python classifier below to catch abbreviated SHAs, unpinned entries, or branch pins missing an apm.lock.yaml file.

Scope Verified Locally

Executing the classifier in a local Python environment verified five boundary cases:

  1. Virtual package tag pin (acme/agent-skills/code-review#v1.2.0): Classified as manifest_tag_bumped_to_latest_release with lockfile regeneration enabled.
  1. 7-character abbreviated SHA (acme/agent-skills#a1b2c3d): Flagged as abbreviated_sha_not_supported.
  1. Full 40-character SHA: Classified as sha40_to_latest_release_tag_with_comment.
  1. Branch pin without apm.lock.yaml (acme/agent-skills#main, has_lockfile=False): Flagged with no_op_warning (branch_pin_requires_existing_apm_lock_yaml).
  1. Branch pin with apm.lock.yaml (has_lockfile=True): Classified as lockfile_only_commit_bump.

5. Pre-Rollout Checklist

  • Commit apm.lock.yaml to version control: Run apm lock and commit apm.lock.yaml so Dependabot can regenerate locked commits and content hashes alongside every PR.
  • Replace abbreviated SHAs with 40-character SHAs or release tags: Audit apm.yml (dependencies.apm and devDependencies.apm) for short commit hashes that Dependabot will ignore.
  • Treat skill update PRs as code-and-prompt reviews: Because Dependabot APM support does not include security updates or prompt-injection scanning, inspect the upstream diff of every updated skill or instruction file before merging.

References

Last verified: November 6, 2026

Korean version: GitHub Dependabot의 Agent Package Manager(APM) 지원 해부: apm.yml 핀 방식과 apm.lock.yaml 재생성 경계GitHub Dependabot의 Agent Package Manager(APM) 지원 해부: apm.yml 핀 방식과 apm.lock.yaml 재생성 경계

추천 글