Problem
src/output/cyclonedx.ts hardcodes specVersion: "1.4". CycloneDX has moved on:
| Version |
Released |
| 1.5 |
superseded |
| 1.6 |
superseded |
| 1.7 |
2025-10-21 (1.7.1 on 2026-06-02) |
So we are three minor versions behind the current specification. For comparison, snyk sbom offers 1.4, 1.5 and 1.6 in both JSON and XML.
This matters more now that SPDX 2.3 output has been added, because the two SBOM formats are presented side by side in the docs and in the README comparison table. Shipping a current SPDX alongside a 2021-era CycloneDX is an odd pairing, and consumers such as Dependency-Track have supported newer versions for some time.
Proposed change
Move the default CycloneDX output to a current version, most likely 1.6 or 1.7, and decide whether older versions stay selectable.
Open questions to settle before implementing:
- Which version becomes the default. 1.6 is the more widely ingested version today; 1.7 is current. Worth checking what Dependency-Track and GitHub dependency submission accept before choosing.
- Whether to make the version selectable, for example
--sbom cyclonedx1.6. The --sbom flag already resolves aliases through SBOM_FORMAT_ALIASES in src/cli/args.ts, so adding version-qualified names is a small change. spdx2.3 already works this way.
- Backward compatibility.
--cdx and --sbom cyclonedx currently promise 1.4. Silently changing what an existing pinned CI job emits is a behaviour change; bumping the default is probably right, but it belongs in release notes rather than passing unnoticed.
- What the newer schema versions actually require. Each version added fields and tightened others; the emitted document must validate against whichever schema it declares.
Notes
Decision, so this is not open-ended
Target CycloneDX 1.6 as the new default, not 1.7. 1.6 is what Dependency-Track and the wider tooling ecosystem ingest reliably today, and it is the newest version Snyk emits. 1.7 can follow once consumer support is broader.
--cdx and --sbom cyclonedx keep working unchanged; only the emitted specVersion moves. That is a visible behaviour change for anyone diffing SBOMs in CI, so it needs a line in the changelog rather than shipping silently.
Version-qualified aliases such as --sbom cyclonedx1.4 are explicitly out of scope here. If someone needs to pin an older version we can add that later; SBOM_FORMAT_ALIASES in src/cli/args.ts already has the shape for it (spdx2.3 works that way today).
Where to look
Problem
src/output/cyclonedx.tshardcodesspecVersion: "1.4". CycloneDX has moved on:So we are three minor versions behind the current specification. For comparison,
snyk sbomoffers 1.4, 1.5 and 1.6 in both JSON and XML.This matters more now that SPDX 2.3 output has been added, because the two SBOM formats are presented side by side in the docs and in the README comparison table. Shipping a current SPDX alongside a 2021-era CycloneDX is an odd pairing, and consumers such as Dependency-Track have supported newer versions for some time.
Proposed change
Move the default CycloneDX output to a current version, most likely 1.6 or 1.7, and decide whether older versions stay selectable.
Open questions to settle before implementing:
--sbom cyclonedx1.6. The--sbomflag already resolves aliases throughSBOM_FORMAT_ALIASESinsrc/cli/args.ts, so adding version-qualified names is a small change.spdx2.3already works this way.--cdxand--sbom cyclonedxcurrently promise 1.4. Silently changing what an existing pinned CI job emits is a behaviour change; bumping the default is probably right, but it belongs in release notes rather than passing unnoticed.Notes
sbominput), fix(parser): five-path cap leaves gaps in the SBOM dependency graph #1079 (dependency graph completeness).Decision, so this is not open-ended
Target CycloneDX 1.6 as the new default, not 1.7. 1.6 is what Dependency-Track and the wider tooling ecosystem ingest reliably today, and it is the newest version Snyk emits. 1.7 can follow once consumer support is broader.
--cdxand--sbom cyclonedxkeep working unchanged; only the emittedspecVersionmoves. That is a visible behaviour change for anyone diffing SBOMs in CI, so it needs a line in the changelog rather than shipping silently.Version-qualified aliases such as
--sbom cyclonedx1.4are explicitly out of scope here. If someone needs to pin an older version we can add that later;SBOM_FORMAT_ALIASESinsrc/cli/args.tsalready has the shape for it (spdx2.3works that way today).Where to look
src/output/cyclonedx.tsbuilds the document;specVersionis hardcoded there.tests/cyclonedx.test.tshas the existing coverage to extend.