Safeguard
Supply Chain•

What belongs in a Helm chart SBOM?

A Helm chart SBOM should cover chart dependencies, the container images the chart deploys, and the chart itself. Here is how to build and check one.

Safeguard Security Team
3 min read

A Helm chart SBOM should list three things: the chart itself with its version, the subcharts it depends on, and the container images it deploys. The chart metadata covers the first two. The images are named in templates and values, so you must resolve them separately.

What chart metadata tells you

The Helm documentation describes Chart.yaml. It includes a dependencies field, a list of chart requirements where each entry has a name, a version and a repository, plus optional conditions and tags. It also includes an appVersion field, described as the version of the app that the chart contains, which need not be semantic versioning and is informational, with no impact on chart version calculations.

Two consequences follow:

  • version and appVersion are different things. The chart version describes the packaging. appVersion describes the application it deploys. An SBOM should record the chart version as the component version, and treat appVersion as a hint.
  • Dependencies are charts, not images. A subchart is a component, but it brings its own images, so the list is not complete until you look inside.

Where the images hide

Container images are usually named in values files and templates, and the final reference can change with the values you supply at install time. So a chart SBOM generated from metadata alone cannot know which images will run.

LayerSourceNotes
The chartChart.yaml name and versionYour own component
SubchartsThe dependencies fieldPin exact versions
ImagesRendered templatesDepend on the values used
Image contentsA scan of each imageGives the packages inside

Steps

  1. Pin chart dependencies to exact versions and keep the lock information with the chart.
  2. Render the chart with the values you ship, such as production defaults.
  3. Extract every image reference from the rendered output. Record each by digest where you can, not only by tag.
  4. Generate an SBOM for each image and link it to the chart SBOM.
  5. Build the chart SBOM with the chart, subcharts and image references as components, and relationships between them.
  6. Repeat for each environment whose values differ.

Mistakes to avoid

  • Tags without digests. A tag can change after you generate the SBOM.
  • Skipping hooks and jobs. Init containers and one off jobs may reference additional images.
  • Ignoring values overrides. The image that runs is the one after overrides, not the default.
  • Forgetting the chart's own provenance. Note where the chart was pulled from.

Who asks for this

Platform teams that install third party charts want to know what they are about to run. Vendors who distribute charts to customers are asked to supply it. Either way, being able to answer "which images does this chart run, and what is in them?" is more useful than a chart level list alone.

Where Safeguard fits

Safeguard scans container images and produces SBOM and dependency results, so you can run each image from a rendered chart through the free scan at gold.safeguard.sh/scan. Confirm chart specific features with your account contact.

Quick check

Is appVersion the version to put in the SBOM?

No. Use the chart version for the chart component. appVersion is informational.

Why render the chart first?

Image names are resolved after values are applied, so only the rendered output shows what will really run.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.