Helm can store packaged charts in any OCI registry. The push command uploads a chart archive, takes the repository name from the chart name and the tag from the chart's semantic version, and prints a digest. Because it is an OCI artifact, a chart can be pinned by digest and signed like an image.
What the Helm docs say
Helm's registry documentation recommends container registries with OCI support to store and share chart packages. A registry can hold zero or more Helm repositories, each with zero or more packaged charts. Push works on a .tgz created ahead of time with helm package, and the reference must start with oci:// and must not include the chart name or tag, since those are inferred. The tag comes from the chart's semantic version, and the docs call this a strict requirement.
An example from the docs:
helm package mychart
helm push mychart-0.1.0.tgz oci://localhost:5000/helm-charts
The output reports the pushed reference and a sha256 digest. If a provenance file sits next to the archive, it is uploaded automatically and becomes an extra layer on the chart manifest. The docs also note that registries may require the repository or namespace to exist first.
What this gives you
| Property | Effect |
|---|---|
| Version becomes the tag | 0.1.0 in Chart.yaml is the tag, so a version bump is the only way to a new tag |
| Digest is printed | You can record exactly what you pushed |
| Provenance as a layer | The signature file travels with the chart |
| Same storage as images | Registry access rules and retention apply |
Practical steps
- Treat the chart version as immutable. If the registry supports tag immutability, turn it on for chart repositories too.
- Record the digest from the push output in the release record.
- Install by digest in production, so a retagged chart cannot change a deployment.
- Sign the chart. Helm documents GPG based provenance for classic repositories and a Sigstore plugin for OCI charts. See how to sign and verify a Helm chart with provenance.
- Scan the rendered templates and the images they reference as part of the same release gate.
Pitfalls
- Passing a full URL with a scheme or path to registry login. Helm wants a hostname, optionally with a port.
- Forgetting that values files may hold secrets. Check where Helm keeps release values.
- Letting anyone push chart versions that production pulls automatically.
Safeguard's policy gates and infrastructure scanning can check chart content and the images it deploys before a release is promoted.
Quick check
Can I choose the tag when I push a chart?
No. Helm infers it from the chart's semantic version, and the docs describe this as a strict requirement.
Where does the signature go?
A provenance file next to the archive is uploaded on push as an extra layer on the chart manifest.
Sources
Last reviewed: 19 October 2026.