Skip to content

v1.4.0 — Action SBOM sharing is now opt-in

Choose a tag to compare

@lab700xdev lab700xdev released this 07 Sep 00:17
· 11 commits to main since this release
f731273

These notes were expanded on 2026-09-07, after publication. The original version described only the Action sharing change below. Four user-facing features shipped in this release without being written down; they are documented here now rather than left to be discovered.

Heads up — a behaviour change for GitHub Action users

SBOM sharing is now opt-in and off by default.

Until this release, action/entrypoint.sh ran the scan with --share --share-yes hardcoded. Every run of the Action uploaded the full CycloneDX SBOM to aisbom.io and minted a publicly-readable link that lived for 30 days.

Sharing is now controlled by a new share input, defaulting to false. With it unset, no request reaches aisbom.io and the share-url output is empty.

- uses: Lab700xOrg/aisbom@v1
  with:
    directory: models/
    share: true       # opt in to the public hosted viewer link

What this breaks: if you consume the share-url output, or want the hosted viewer link in your PR comments, you now have to ask for it with share: true. Everything else is unaffected — the SBOM artifact, the PR comment, fail-on-risk, and the token dashboard upload all render from the SBOM on the runner and behave exactly as before.

Also a behaviour change: the default SBOM spec version

--format json now emits CycloneDX 1.7 rather than 1.6.

Model components gain an ML-BOM modelCard block with a typed modelParameters section — task, architecture family, and training datasets — populated from the Hugging Face model card on hf:// scans. modelCard is emitted for 1.7 only; asking for an older schema version keeps the document shape older consumers expect.

If a downstream tool of yours is pinned to CycloneDX 1.6, this is the change to be aware of.

New commands and flags

aisbom score grades an AIBOM for completeness. It answers a different question from scan: not "is this model dangerous" but "is this document good enough to be the compliance artifact you are about to hand someone". A scan can come back perfectly clean and still produce an SBOM that names no licenses, carries no checksums and describes none of the models.

Seven weighted dimensions — component identity, integrity hashes, licenses, model-card coverage, dataset provenance, VEX presence, document provenance — with a letter grade, a per-dimension breakdown, and the specific gaps behind each. --fail-under <n> returns a non-zero exit code so it can gate CI, and --json gives programmatic output. CycloneDX input only.

aisbom scan --vex emits VEX documents. OpenVEX 0.2.0 and CycloneDX VEX written alongside the SBOM, stating per finding whether each scanned artifact is actually affected.

  • --vex-format openvex|cyclonedx|both selects the flavour.
  • --vex-baseline <old-sbom.json> compares against a previous SBOM and unlocks the fixed status.
  • Requires --format json: statements address components by serial number and bom-ref, so a VEX file emitted beside a Markdown or SPDX document would carry a dangling cross-reference.

Statements are keyed on AIsbom finding classes rather than CVEs. What AIsbom detects lives inside a model file, which will never have a CVE, because the file is the payload rather than a component with a patchable defect.

--spdx-version 3.0 emits SPDX 3.0 JSON-LD with the AI Profile. 2.3 remains the default, so existing --format spdx output is unchanged.

Also fixed

  • The PR comment link is gated on the same input. The comment previously recovered the viewer URL by scraping the scan log with a URL-shaped regex, independently of the share setting — so a URL-shaped scan target could have put a link in a comment on a run that shared nothing. It is now gated on the input directly.
  • Two documentation claims corrected. AISBOM_NO_TELEMETRY=1 was documented as disabling the share upload; it does not — it withholds the cli_share_created event only, and dropping --share is what stops the upload. The privacy sections in both READMEs now state exactly which network call each input enables, and describe the telemetry payload separately from the SBOM upload paths rather than lumping them together.
  • Standalone binaries are smoke-tested before release assets are uploaded, so a frozen build that cannot start is caught at build time rather than by whoever downloads it.

What's not changing

Scanner behaviour, detection coverage and exit codes are identical to v1.3.3 — the new spec version changes the shape of the document, not any verdict in it. The CLI's own --share flag is unchanged: it has always been explicit and still prompts unless you pass --share-yes. Model weights and file contents have never left your machine and still don't.