Quick start
Drop this into .github/workflows/bomly-guard.yml. On every pull request the action installs the CLI, diffs the dependency changes, and fails the job when a high-severity finding slips in.
name: Bomly Guard
on:
pull_request:
permissions:
contents: read
pull-requests: write # post the summary comment (when opted in)
security-events: write # upload SARIF to the Security tab
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0 # full history so base and head refs resolve
- uses: bomly-dev/bomly-guard@v1
with:
fail-on: high
comment-summary-in-pr: on-failure
fetch-depth: 0 matters — the action compares the PR head against the merge base, so it needs enough history to resolve both refs. Pin to @v1 for patch and minor updates, or an exact release for fully reproducible builds.
What it reviews
Guard inspects only the dependency changes the pull request introduces:
New packages
Every dependency the PR adds.
New vulnerabilities
Advisories introduced by the change.
License violations
Allow / deny rules on incoming licenses.
Denied packages
Packages and namespaces you've blocked.
Typosquats
Suspicious names close to protected packages.
The report
Every run posts a job summary to the Actions tab. When a PR introduces a failing finding, Guard also annotates the check with the count and exits non-zero.
Bomly Diff Summary
Compared 559a762a… to b35e8065…
Overview
| Status | Manifests | Dependencies | Findings | Duration |
|---|---|---|---|---|
| Failing findings introduced | +0 / ~1 / -0 | +0 / ~1 / -0 | 1 introduced / 0 persisted / 0 resolved | 45 sec |
Dependency Changes
Summary: 0 added, 1 changed, 0 removed.
| Change | Package | Version | Scope | Licenses | PURL |
|---|---|---|---|---|---|
| changed | minimist | 0.0.10 → 0.0.8 | runtime | MIT | pkg:npm/minimist@0.0.8 |
Policy Findings
Summary: 1 introduced, 0 persisted, 1 resolved.
| Severity | ID | Title | Package | Fixed In | |
|---|---|---|---|---|---|
| CRITICAL | GHSA-xvch-5gv4-984h | Prototype Pollution in minimist | minimist@0.0.8 | 0.2.4 |
Annotations · 1 error
How it works
Guard is a thin composite wrapper around the CLI — all analysis comes from bomly diff, so the policy you enforce locally is the policy it enforces on PRs.
- 1
Compares the PR head against its merge base, so review focuses only on what the PR changes — pre-existing findings are ignored.
- 2
Runs bomly diff with the enrich, audit, and policy flags mapped from your action inputs.
- 3
Writes a job summary and, when you opt in, posts (or updates) a single PR comment.
- 4
Uploads SARIF to the Security tab when audit is on, and fails the job when policy fails the review.
Gate your next pull request.
Add the action, set a policy, and let Bomly review every dependency change before it merges. No server, no signup.