Helm v4.1.0 is a feature release. Users are encouraged to upgrade for the best experience.
The community keeps growing, and we'd love to see you there!
- Join the discussion in Kubernetes Slack:
- for questions and just to hang out
- for discussing PRs, code, and bugs
- Hang out at the Public Developer Call: Thursday, 9:30 Pacific via Zoom
- Test, debug, and contribute charts: ArtifactHub/packages
Notable Changes
- Feature: added chart name to dependency logs, namespace to resource waiting logs, and confirmation message when all resources are ready #31530
- Feature: improved plugin name validation error messages and field name detection #31491
- Feature: improved the --wait flag by allowing explicit strategy selection (including explicit --wait=hookOnly) and preventing SDK timeout errors when timeout is not specified #31421
- Feature: allow concurrent dependency build with atomic file write #30984
- Feature: added a --no-headers flag to the 'helm repo list' command, allowing users to suppress table headers in the output. Useful for scripting and automation #31448
- SDK feature: added a LoadArchive to common loader #31462
- SDK feature: introduced support for custom kstatus readers #31706
- Fixed bug where a plugin name could already be used by another command #31427
- Fixed bug where --server-side flag was not passed to install when using upgrade --install #31635
- Fixed bug where HELM_ environment variables were not passed to plugins. this fixes a regression which was blocking some getter plugins #31613
- Fixed bug where Helm test --logs failed with hook-delete-policy "hook-failed" or "hook-succeed" #31579
- Fixed kube client logging issue #31560
- Fixed regression where vendor-specific suffixes were stripped from .Capabilities.KubeVersion.GitVersion, breaking charts that detect managed Kubernetes platforms #31528
- Fixed a bug where helm uninstall with --keep-history did not suspend previous deployed releases #12564
- SDK: bump k8s API versions to v0.35.0
- docs: updated
helm templatehelp text to document --api-versions #31683 - docs: fixed documentation about default wait strategy
Installation and Upgrading
Download Helm v4.1.0. The common platform binaries are here:
- MacOS amd64 (checksum / a326073ae392bed8b73c415d1d9d6880b0f5accb18aa9456975562b44a87c650)
- MacOS arm64 (checksum / f12e2723c5e8eaff3e4b3670536867289fb6ab7f797fa2efedd1c53cfaca62fb)
- Linux amd64 (checksum / 8e7ae5cb890c56f53713bffec38e41cd8e7e4619ebe56f8b31cd383bfb3dbb83)
- Linux arm (checksum / e3aa65aded232adb56fc5b5bdd034f5ad5fa501ab0f68099d15abd93133e6006)
- Linux arm64 (checksum / 81315e404b6d09b65bee577a679ab269d6d44652ef2e1f66a8f922b51ca93f6b)
- Linux i386 (checksum / 1a7ca55d28f11cb15c5c482a29db6781a6cc75ac62e5d38447377a4987c5b9b9)
- Linux loong64 (checksum / ο»Ώ
BlobNotFoundThe specified blob does not exist.
RequestId:4a82a5e5-801e-006f-411a-8bffc7000000
Time:2026-01-21T21:10:33.0504029Z) - Linux ppc64le (checksum / 6cb5ad5fb790e63056b71210f0a50566f4faf85709a49f17407c331f6923db56)
- Linux s390x (checksum / 109a32040f7325ef44234c594a1b7883b94ce37ba1f0ca7c5fa8452254bd71b8)
- Linux riscv64 (checksum / 944cfc9aea67db27eb46e52126ca4acee0cd416f0314369bf3364c77a13a7803)
- Windows amd64 (checksum / 48b527c52c0ea4b33436536b4accefc2cfe1665f6f0520c5b72e478338551833)
- Windows arm64 (checksum / 257f3ff25187d66208d08cabf063df7245ed72430436d7ca971ff9bd3fe0bc64)
This release was signed with 208D D36E D5BB 3745 A167 43A4 C7C6 FBB5 B91C 1155 and can be found at @scottrigby keybase account. Please use the attached signatures for verifying this release using gpg.
The Quickstart Guide will get you going from there. For upgrade instructions or detailed installation notes, check the install guide. You can also use a script to install on any system with bash.
What's Next
- 4.1.1 and 3.20.1 are the next patch releases, scheduled for March 11, 2026
- 4.2.0 and 3.21.0 are the next minor releases, scheduled for May 13, 2026
Changelog
- Update pkg/kube/statuswait.go f46f1ce (Evans Mungai)
- pkg/kube: introduce support for custom kstatus readers 59ece92 (Matheus Pimenta)
- chore(deps): bump golang.org/x/term from 0.38.0 to 0.39.0 de0becd (dependabot[bot])
- chore(deps): bump golang.org/x/text from 0.32.0 to 0.33.0 46e5264 (dependabot[bot])
- fix(release): fix test compilation error e751a70 (Evans Mungai)
- Suppress SC2154 without changing behavior 9125b84 (Sarfraj Khan)
- chore(deps): bump github.com/foxcpp/go-mockdns from 1.1.0 to 1.2.0 0e0c02e (dependabot[bot])
- Lint sync-repo.sh with ShellCheck d4a2787 (sarfraj89)
- chore: move Evans Mungai from triage to maintainers fd090cc (Evans Mungai)
- Replace reflect.Ptr with reflect.Pointer 2d6d9c0 (Mads Jensen)
- fix: typo in the function names 138f730 (Gergely Brautigam)
- Add documentation for --api-versions flag in template command c7cc77b (majiayu000)
- Fixing failing tests for cli-tools update fe1c749 (Matt Farina)
- chore(deps): bump github.com/fluxcd/cli-utils 5e82698 (dependabot[bot])
- Replace deprecated
NewSimpleClientseta15db7f (George Jenkins) - docs(README): add mise alternate installation documentation 04198dc (jylenhof)
- enable exhaustive linter 9a898af (Brenden Ehlers)
- fix: add default casess to switch statements 1c119bc (Brenden Ehlers)
- build: set kube version via
debug.BuildInfoc6d9a5b (Branch Vincent) - chore(deps): bump github.com/tetratelabs/wazero from 1.10.1 to 1.11.0 97cde79 (dependabot[bot])
- chore(deps): bump github.com/BurntSushi/toml from 1.5.0 to 1.6.0 9123143 (dependabot[bot])
- doc: update based on review suggestion 55a4aed (Deepak Chethan)
- test(statuswait): fix Copilot code review suggestion for goroutine in tests d6b35ce (Mohsen Mottaghi)
- test(statuswait): add more tests suggested by Copilot code review a1543d5 (Mohsen Mottaghi)
- test(statuswait): add some tests for statuswait dd44f4e (Mohsen Mottaghi)
- fix: use namespace-scoped watching to avoid cluster-wide LIST permissions 3dd54ed (Mohsen Mottaghi)
- fix(doc): Update default wait strategy f92ae18 (Deepak)
- Update to use slog 9772037 (tison)
- Fix TestCliPluginExitCode 3c6557d (tison)
- Check plugin name is not used 5196b84 (tison)
- chore(deps): bump github.com/fluxcd/cli-utils 364a7aa (dependabot[bot])
- Fix
TestConcurrencyDownloadIndextypo 592815e (George Jenkins) - Use errors.Is to check for io.EOF and gzip.ErrHeader a490bb3 (Mads Jensen)
- chore(deps): bump actions/upload-artifact from 4.6.2 to 6.0.0 09ae0d4 (dependabot[bot])
- chore(deps): bump the k8s-io group with 7 updates 1f8e84d (dependabot[bot])
- chore(deps): bump golang.org/x/crypto from 0.45.0 to 0.46.0 e9a0510 (dependabot[bot])
- chore: fix some comments to improve readability 858cf31 (wangjingcun)
- chore(deps): bump golang.org/x/text from 0.31.0 to 0.32.0 7fb1728 (dependabot[bot])
- feat: move TerryHowe triage to maintainers e900a25 (Terry Howe)
- Use latest patch release of Go in releases 8f636b5 (Matt Farina)
- chore(deps): bump github.com/rubenv/sql-migrate from 1.8.0 to 1.8.1 ea52f87 (dependabot[bot])
- fix(upgrade): pass --server-side flag to install when using upgrade --install 2dc581d (Evans Mungai)
- chore(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 a9bbffb (dependabot[bot])
- chore(deps): bump golang.org/x/term from 0.37.0 to 0.38.0 d195cfa (dependabot[bot])
- Run the vulnerability check on PR that change the file 24a8258 (Matt Farina)
- Fix govulncheck in CI bc9462f (Matt Farina)
- Update the govulncheck.yml to run on change b825a18 (Matt Farina)
- Enable the sloglint linter a18e59e (Mads Jensen)
- fix(cli): handle nil config in EnvSettings.Namespace() 8534663 (Zadkiel AHARONIAN)
- fix(getter): pass settings environment variables 119341d (Zadkiel AHARONIAN)
- fixes comment in install.go a109ac2 (Stephanie Hohenberg)
- chore(deps): bump actions/stale from 10.1.0 to 10.1.1 581ab1a (dependabot[bot])
- chore(deps): bump golangci/golangci-lint-action from 9.1.0 to 9.2.0 e62bf7f (dependabot[bot])
- fixes tests after merge 2f598ff (Stephanie Hohenberg)
- fixes lint issue bb9356e (Stephanie Hohenberg)
- updates tests after rebase from master 8cf4ad7 (Stephanie Hohenberg)
- Add tests to action package to improve coverage 31131cf (Stephanie Hohenberg)
- chore(deps): bump actions/checkout from 6.0.0 to 6.0.1 e6b2068 (dependabot[bot])
- Inform we use a different golangci-lint version than the CI faa8912 (Benoit Tigeot)
- Deal with golint warning with private executeShutdownFunc 45c5f3a (Benoit Tigeot)
- Use length check for MetaDependencies instead of nil comparison b33d4ae (Calvin Bui)
- Code review 70fc5f9 (Benoit Tigeot)
- Fix linting issue 9f1c8a2 (Benoit Tigeot)
- Update pkg/action/hooks.go 6bb5bcc (Michelle Fernandez Bieber)
- added check for nil shutdown d930144 (Michelle Fernandez Bieber)
- cleaned up empty line 7a61ebf (Michelle Fernandez Bieber)
- updated comment and made defer of shutdown function return errors as before and not the possible shutdown error 1071477 (Michelle Fernandez Bieber)
- added shutdown hook that is executed after the logs have been retrieved 7a55758 (Michelle Fernandez Bieber)
- chore: fix typo in pkg/downloader/chart_downloader.go e71a29c (megha1906)
- Bump required go version (
go.modversion) b859163 (George Jenkins) - Use modernize to use newer Golang features. 6cceead (Mads Jensen)
- Remove two redundant if-checks. 380abe2 (Mads Jensen)
- Fix kube client logging 936cd32 (Matt Farina)
- chore(deps): bump golangci/golangci-lint-action from 9.0.0 to 9.1.0 cb35947 (dependabot[bot])
- chore(deps): bump actions/checkout from 5.0.1 to 6.0.0 4fddc64 (dependabot[bot])
- chore(deps): bump actions/setup-go from 5.5.0 to 6.1.0 b87f2da (dependabot[bot])
- fix: prevent segmentation violation on empty yaml in multidoc 81d244c (Benoit Tigeot)
- fix: prevent reporting fallback on version when none specified 40e22de (Benoit Tigeot)
- chore(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 c2405ce (dependabot[bot])
- chore(deps): bump github.com/cyphar/filepath-securejoin 28baa97 (dependabot[bot])
- bump version to 4.1 63e060f (Matt Farina)
- fix: add missing context to debug logs 2dc5864 (shuv0id)
- fix: preserve vendor suffixes in KubeVersion.GitVersion ce273ee (Benoit Tigeot)
- chore(deps): bump actions/checkout from 5.0.0 to 5.0.1 f6ceae9 (dependabot[bot])
- fixup test f8a49f1 (George Jenkins)
- logs a9cdc78 (George Jenkins)
- fix b1a9760 (George Jenkins)
- chore: add warning for registry login with namespace 5f3c617 (Terry Howe)
- style: linting 71591ee (Benoit Tigeot)
- test: split tests between valid and invalid b296cbe (Benoit Tigeot)
- test: convert tests to table drive tests 9b242dd (Benoit Tigeot)
- test: refactor TestMetadataLegacyValidate to be more generic c81a09b (Benoit Tigeot)
- update tests 8c87024 (yxxhero)
- fix: Use server-side apply for object create during update 18616e6 (George Jenkins)
- Copy adopted resource info 855ebb6 (George Jenkins)
- Refactor environment variable expansion in PrepareCommands and update tests 2d49f0c (yxxhero)
- fix: correct LDFLAGS path for default Kubernetes version b6a8c65 (Benoit Tigeot)
- fix: improve plugin name validation err messages early via unmarshalling acf331a (Benoit Tigeot)
- fix: Make invalid name error message more similar and move tests 9e1e3d2 (Benoit Tigeot)
- fix: focus only on plugin name but give more info about what we get cf077ce (Benoit Tigeot)
- Make validation error similar and explicit for both metadatas f4b139a (Benoit Tigeot)
- fix: improve plugin name validation error messages c04e18e (Benoit Tigeot)
- Fix syntax errors in the document faa0adc (Fish-pro)
- chore(deps): bump the k8s-io group with 7 updates c81e267 (dependabot[bot])
- docs: Fix LFX Health Score badge URL in README.md 40856bf (Michael Crenshaw)
- chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.44.0 fb82e0e (dependabot[bot])
- chore(deps): bump github.com/tetratelabs/wazero from 1.9.0 to 1.10.1 72a84fb (dependabot[bot])
- Publish Helm v4 ->
helm-latest-versione4353dc (George Jenkins) - Adding script to download Helm v4 5ae8586 (Matt Farina)
- chore(deps): bump golang.org/x/term from 0.36.0 to 0.37.0 6cd0bf8 (dependabot[bot])
- refactor: use strings.Builder to improve performance d8c4040 (promalert)
- chore(deps): bump sigs.k8s.io/kustomize/kyaml from 0.20.1 to 0.21.0 0089a07 (dependabot[bot])
- chore(deps): bump golangci/golangci-lint-action from 8.0.0 to 9.0.0 7a85358 (dependabot[bot])
- Update pkg/cmd/flags.go 02312a1 (Benoit Tigeot)
- Error strategy list match help 277c140 (Benoit Tigeot)
- Prevent surprising failure with SDK when timeout is not set 5f6fa43 (Benoit Tigeot)
- Do not change the default waiting strategy when --wait is not set 52a2828 (Benoit Tigeot)
- Provide more help for SDK user when setting up WaitStrategy 1112865 (Benoit Tigeot)
- Avoid confusion between
--wait(watcher) and no --wait (hookOnly) 8535e9f (Benoit Tigeot) - The default is not HookOnlyStrategy but WaitStrategy 1836f37 (Benoit Tigeot)
- Make wait strategy selection more obvious a5e110f (Benoit Tigeot)
- Update pkg/cmd/flags.go e8b0cff (Benoit Tigeot)
- Increase documentation of --wait flag 95e1ee1 (Benoit Tigeot)
- While testing SDK features for v4. I was surprised with the error: 5cbd9b3 (Benoit Tigeot)
- fix: do not run release workflow on forks d93ef03 (Terry Howe)
- Convert pkg/cmd/load_plugins.go to slog 6de83c5 (saimanojk1)
- Rename copilot-instructions.md to AGENTS.md caff03f (Yarden Shoham)
- fix(rollback):
errors.Isinstead of string comp d158708 (Hidde Beydals) - fix(uninstall): supersede deployed releases 2f1ecc7 (Hidde Beydals)
- for remaining local variable case inconsistency 4576a81 (tison)
- Properly test error messages on pull command's test ed6cf0e (Benoit Tigeot)
- Adding a LoadArchive to common loader 0f5eda7 (Matt Farina)
- for all other similar cases 90d0191 (tison)
- chore(deps): bump github.com/cyphar/filepath-securejoin 21af58b (dependabot[bot])
- chore(deps): bump sigs.k8s.io/controller-runtime from 0.22.3 to 0.22.4 60aaa8a (dependabot[bot])
- chore: increase logging package test coverage 558cea7 (Evans Mungai)
- feat(repo): add --no-headers option to 'helm repo list' 6ef79bb (Paul Van Laer)
- chore: fix typo of public field 0d6de28 (tison)
- rename interface{} to any ffb3940 (Terry Howe)
- test: protect unknown hook delete policies 269a32a (Marcin Owsiany)
- chore: replace github.com/mitchellh/copystructure bee9c1a (Terry Howe)
- fix: Fix Helm v4 release distribtion/get-helm-3 script d5d1ea3 (George Jenkins)
- fix test ae4af69 (Artem Vdovin)
- Make test scripts run without /bin/bash 6181e0a (Tom Wieczorek)
- Ignore duplicated URN in logs 8025a39 (Benoit Tigeot)
- jsonschema: warn and ignore unresolved URN $ref to match v3.18.4 03bb62f (Benoit Tigeot)
- chore: delete unused var in installer.go 8068578 (zyfy29)
- fix: assign KUBECONFIG environment variable value to env.Kubeconfig b25fa86 (LinPr)
- add concurrency test on write & load index file 118d0eb (Artem Vdovin)
- update writing index files to writeAtomicFile 314bd19 (Artem Vdovin)
- fix index concurrency 351bb78 (Artem Vdovin)