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.
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 | 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.0owner/repo/skills/review#v1.2.0owner/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:
- Virtual package tag pin (
acme/agent-skills/code-review#v1.2.0): Classified asmanifest_tag_bumped_to_latest_releasewith lockfile regeneration enabled.
- 7-character abbreviated SHA (
acme/agent-skills#a1b2c3d): Flagged asabbreviated_sha_not_supported.
- Full 40-character SHA: Classified as
sha40_to_latest_release_tag_with_comment.
- Branch pin without
apm.lock.yaml(acme/agent-skills#main,has_lockfile=False): Flagged withno_op_warning(branch_pin_requires_existing_apm_lock_yaml).
- Branch pin with
apm.lock.yaml(has_lockfile=True): Classified aslockfile_only_commit_bump.
5. Pre-Rollout Checklist
- Commit
apm.lock.yamlto version control: Runapm lockand commitapm.lock.yamlso 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.apmanddevDependencies.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 재생성 경계