// security workers
Secure Dependency Updates
Generate dependency updates on a schedule and bring policy-cleared pull requests to review.
Secure Dependency Updates finds available dependency versions and proposes the resulting manifest and lockfile changes as pull requests. Superagent generates each update with pinned open source Dependabot tooling, evaluates supported package changes, and publishes only proposals that satisfy supply chain policy.
This complements Supply chain scanning. Secure Dependency Updates creates the pull request. The Supply Chain Scan checks the published pull request again before merge.
Enable scheduled updates
Open Repository, select a repository, and find Secure Dependency Updates in its settings. Choose a scope:
- Vulnerabilities (default)
- Version updates
- All updates
Then choose one schedule:
- Off disables new scheduled update runs. This is the default.
- Daily checks once per day.
- Weekly checks once per UTC week.
- Monthly checks once per UTC month.
The schedule is repository specific. Turning the setting off does not close existing update pull requests.
Update scopes
Vulnerabilities
Superagent targets dependencies affected by known security advisories, including transitive dependencies recorded in the lockfile. It uses repository Dependabot alerts when available. If the repository does not expose them, Superagent parses exact lockfile versions and queries the global GitHub Advisory Database. Repository-level Dependabot does not need to be enabled for this fallback.
Each affected package and patched range is passed to the pinned Dependabot updater as a security-only update task. A pull request is created only when the package manager can resolve a non-vulnerable version under the repository's current manifest and lockfile constraints.
Version updates
Superagent checks direct dependencies for available versions. It does not target every transitive dependency independently. Transitive packages can still change when the package manager resolves the lockfile for an approved direct update.
All updates
Superagent runs vulnerability remediation first, then checks direct dependencies for version updates. Security and version proposals pass through the same package-risk policy and publication safeguards.
Lockfile and manifest constraints
Secure Dependency Updates uses the repository's committed manifests and lockfiles as the source of truth. Dependabot invokes the repository's package manager rather than editing resolved versions by hand. Existing workspace boundaries, version ranges, peer requirements, overrides, resolutions, catalogs, engine requirements, and lockfile format remain part of dependency resolution.
A direct version proposal can intentionally update its declared manifest
requirement. Superagent does not bypass unrelated constraints to force an
update. If a patched transitive version cannot be resolved without changes the
updater cannot safely determine, the run records
security_update_not_possible and does not create a pull request. The
repository owner can then update the parent dependency, adjust an override or
resolution, or change the relevant version constraint before rerunning.
An updater can also report security_update_not_possible because of a package
manager limitation even when declared ranges allow the patched version. For
pnpm workspaces, Superagent verifies that outcome and can fall back to explicit
exact-version security floors in pnpm-workspace.yaml, regenerate the lockfile
with scripts disabled, and evaluate the complete resulting delta with Socket.
This fallback is used only for affected versions and is not a general
transitive version refresh.
How an update is created
For each configured or detected package manager, Superagent:
- Resolves the current default branch to an exact commit.
- Runs a pinned Dependabot CLI and package manager updater in an isolated sandbox with repository read access.
- Records the generated dependency files as an immutable private artifact.
- Evaluates the complete generated dependency delta where package risk scoring is supported.
- Publishes an approved update from the recorded base commit with a separate, short lived GitHub write credential.
- Runs the normal pull request checks after GitHub opens the pull request.
The update runner never receives repository write access. A changed default branch supersedes an unpublished proposal instead of applying stale files.
Package risk coverage
Generated npm, PyPI, Go, and RubyGems changes use the same managed package risk pipeline as pull request supply chain scans. Evaluation includes exact versions introduced by the generated lockfile, including transitive changes.
If a blocking risk is found, or an exact supported dependency change cannot be evaluated, Superagent records the skipped proposal and does not open a pull request.
Dependabot supports additional package managers. Superagent can generate those updates, but package risk scoring does not cover every ecosystem yet. An unsupported update can be published with a clear Not scanned disclosure in the pull request. It is never represented as clean.
GitHub Actions updates require the Superagent Security GitHub App to have Workflows: Read and write permission. Existing installations must approve that permission before Superagent can publish workflow file updates.
Package managers
The update engine supports Dependabot Core managers, including JavaScript, Python, Go, Ruby, Rust, Java, .NET, PHP, Dart, Swift, Docker, GitHub Actions, Terraform, OpenTofu, Helm, Bazel, Nix, and related manifest formats.
Superagent uses .github/dependabot.yml manager and directory entries when the
file is present. Otherwise, it detects known manifests throughout the
repository. Superagent controls the daily, weekly, or monthly execution
schedule from repository settings.
The initial release does not translate Dependabot allow, ignore, groups,
registries, or nonzero pull request limit options. A repository using those
options fails the scheduled run with an explicit configuration error instead
of silently ignoring its policy.
Private package registry credentials are not included in the initial release. Update tasks that require a private registry fail without publishing a pull request and record the failure for operational diagnostics.
Published updates appear as pull requests in GitHub.
To trigger your own automation when an approved update reaches GitHub,
subscribe an organization webhook to dependency_update.published. The event
includes the repository, proposal and run IDs, title, and pull request URL. See
Webhooks for the payload and signature format.