Zum Hauptinhalt springen
Version: Next

Helm 4 Full Changelog

Scope: 290 PRs from (v4.0.0-rc.1) compared to v3.19.0 v4-only: 257 PRs (33 backported to v3 excluded)

See the Overview for an actionable summary of these changes.

New Features

New features in Helm 4 that were not backported to v3

PRDateAuthorTitle
#314352025-11-03matheuscscpIntroduce a context for canceling wait operations
#313892025-10-30TerryHowechore: fix pkg/registry warnings to reduce noise
#313382025-10-21yzeweiAdd loongarch64 support
#313512025-10-21gjenkins8feat: helm version print Kubernetes (client-go) version
#313762025-10-21benoittgtDo not ignore *.yml file on linting while accepting *.yaml
#313622025-10-21fabiocarneiroClarify the intent of the resource instructions
#313922025-10-16TerryHowefeature: create copilot structured context
#312952025-10-13TerryHoweFix make helm list show all by default
#313722025-10-10mattfarinaEnable Releases To Have Multiple Versions
#312542025-09-23benoittgtWarn when we fallback to a different version on helm pull
#312752025-09-10benoittgtExtend --skip-schema-validation for lint command
#311162025-09-02banjohchore: check if go modules are tidy before build
#312172025-09-01scottrigbyBREAKING CHANGE: [HIP-0026] Move Postrenderer to a plugin type
#311962025-08-31scottrigbyBREAKING CHANGE: [HIP-0026] Remove unnecessary file i/o operations from signing and verifying
#311762025-08-30scottrigbyBREAKING CHANGE: [HIP-0026] Plugin packaging, signing, and verification
#311942025-08-28gjenkins8BREAKING CHANGE: [HIP-0026] Plugin extism/v1 runtime
#308122025-08-27gjenkins8BREAKING CHANGE: HIP-0023: Helm support server-side apply
#311742025-08-26scottrigbyBREAKING CHANGE: [HIP-0026] Plugin tarball support for HTTP and local installers
#311722025-08-26scottrigbyBREAKING CHANGE: [HIP-0026] Plugin OCI installer
#311462025-08-23scottrigbyBREAKING CHANGE: [HIP-0026] Plugin types and plugin apiVersion v1
#311452025-08-22scottrigbyBREAKING CHANGE: [HIP-0026] Plugin runtime interface
#311422025-08-21gjenkins8BREAKING CHANGE: [HIP-0026] Move pkg/plugin -> internal/plugin
#310302025-08-14gjenkins8BREAKING CHANGE: HIP-0023: Kube client support server-side apply
#126242025-08-13papdanielshow crds command output separated by document separator
#131112025-08-13rawtazstyle(pkg/chartutil): add missing dots and indentation to defaultValues
#310762025-08-11matheuscscppkg/registry: Login option for passing TLS config in memory
#310342025-08-05MazafardFeat: Add color output functionality and tests for release statuses
#310572025-07-18danilobuergerPass credentials when either chart repo or repo dont specify a port but it matches the default port of that scheme
#310192025-07-17zachburgReturn early when linting if the templates/ directory does not exist
#310112025-07-17yalosevfeature: add labels to metadata
#310152025-07-17zachburgAdd linter support for the crds/ directory
#131542025-07-10carloslimaAllow post-renderer to process hooks
#135862025-06-04jessesimpson36feat: add formatting for errors to make multiline stacktraces in helm templates
#305532025-05-07Zhanweeleefeat: Add mustToYaml and mustToJson template functions
#307342025-04-21ipaqsafeat(pkg/engine): add support for custom template funcs
#132832025-04-14win-tadding support for JSON Schema 2020
#307512025-04-13benoittgtAdd detailed debug logging for resource readiness states
#307082025-04-11benoittgtMigrate pkg to slog
#136042025-04-05AustinAbro321Introduce kstatus watcher
#136172025-02-27AustinAbro321BREAKING CHANGE: Refactor cmd/helm to allow library usage
#305712025-02-24yardenshohamfeat: error out when post-renderer produces no output
#136552025-02-20LuBingtanfeat: support multi-document values files
#134712025-02-19wangjingcunUse a more direct and less error-prone return value
#302942025-02-19ZhanweeleeSupports json arguments
#135382025-01-17godhanipayalAdd Contextual Error Messages to RunWithContext
#125882024-11-22rynowakMake the authorizer and registry authorizer configurable

Bug Fixes

Fixes in Helm 4 that were not backported to v3

PRDateAuthorTitle
#313232025-10-29mattfarinaReproducible chart archive builds
#314112025-10-29banjohfix: reinstate logger parameter to actions package
#312042025-10-22benoittgtAvoid panic in helm.sh/helm/v3/pkg/chartutil.ValidateAgainstSchema
#313372025-10-22rachelvweberFixing rollback and uninstall client WaitStrategy
#313932025-10-21benoittgtReturn errors during upgrade when the deletion of resources fails
#314062025-10-21jessesimpson36fix: kube client should return empty results objects instead of nil
#313752025-10-13TerryHowefix: release info time parsing
#313492025-10-07TerryHowefix: flakey lint test on shuffle
#313272025-10-07TerryHowefix: broken --html flag to coverage script
#313542025-10-07TerryHowefix: flake upgrade test
#312272025-10-03evankandersonUse filepath.Path when handling directory names
#313072025-10-02TerryHowefix: Ignore absolute path when RepoUrl is provided
#313342025-09-30fleazFix typo in bug-report issue template
#313302025-09-25mattfarinaRestore lint rule for excluding meaningless name
#313202025-09-25kosiewprovenance: allow RSA signing when ed25519 keys are present (switch to ProtonMail/go-crypto)
#312852025-09-12bennsimonfix: remove leftover debugging line that outputs invalid YAML for helm template command
#312772025-09-11benoittgtFix deprecation warning for spf13/pflag from 1.0.7 to 1.0.10
#312722025-09-09TerryHowefix: idea gitignore entry
#312522025-09-05kamilswiecfix:chartfile tests - semver2 error message
#311992025-09-05TerryHowefix: flaky registry data race on mockdns close
#312002025-09-05TerryHowefix: installer action goroutine count
#312222025-09-03benoittgtPrevent failing helm push on ghcr.io using standard GET auth token flow
#311912025-08-26TerryHowefix: send logging to stderr
#311382025-08-19islewisfix(helm-lint): Add HTTP/HTTPS URL support for json schema references
#311522025-08-18TerryHowefix: enable shuffle in Makefile for unit tests
#129682025-08-13sjeandeauxhelm uninstall dry run support --ignore-not-found
#311262025-08-12paologallinaharburfix(transport): leverage same tls config
#311092025-08-06carlossgfix: prevent panic when ChartDownloader.getOciURI
#310742025-07-18joejulianadd missing template directory to badcrdfile testdata
#310422025-07-10TerryHowefix: test teardown dns data race
#308982025-07-06AshmitBhardwajFix issue 13198
#310212025-07-05zachburgUpdate tests in create_test.go and package_test.go to work in a temp directory
#310242025-07-03gjenkins8fix: 'TestRunLinterRule' stateful test
#309002025-06-23unguiculusAdd timeout flag to repo add and update commands
#309812025-06-15TerryHowefix: lint test SetEnv errors
#309732025-06-12manslaughter03fix: wrap run release test error in case GetPodLogs failed.
#309722025-06-10TerryHowefix: kube client create mutex
#309582025-06-06TerryHowefix: repo update cmd mutex
#309552025-06-04carloslimaFix tests deleting XDG_DATA_HOME
#309392025-06-03TerryHowefix: action hooks delete policy mutex
#125812025-06-03MichaelMorrisEstConsider full GroupVersionKind when matching resources
#309302025-05-28benoittgtFix flaky TestFindChartURL due to non-deterministic map iteration
#308842025-05-21mattfarinaReverting fix "renders int as float"
#308622025-05-20OmriSteinerfix: correctly concat absolute URIs in repo cache
#308642025-05-16jessesimpson36fix: remove duplicate error message
#308422025-05-15ayushontopFix : No repository is not an error,use the helm repo list command ,if there is no repository,it should not be an error #30606
#308002025-04-25mmorel-35fix: dep fs errors
#308032025-04-25mattfarinaFixing windows build
#307832025-04-23rpolishchukfix: chart icon presence test
#307772025-04-23ryanhockstadfix: null merge
#91752025-04-23dastrobufix: copy dependencies on aliasing to avoid sharing chart references on multiply aliased dependencies
#123822025-04-20edbmillerfix(pkg/lint): unmarshals Chart.yaml strictly
#307662025-04-17benoittgtFix main branch by defining wait strategy parameter on hooks
#307182025-04-16klihubAllow signing multiple charts with a single passphrase from stdin.
#307522025-04-16benoittgtBump golangci lint to last major version and fix static-check errors
#307372025-04-11rpolishchukfix: order dependent test
#93182025-04-07wahabmkFix issue with helm pull failing if pulling from a repository that redirects to another domain
#131192025-04-05idsulikfix(concurrency): Use channel for repoFailList errors in updateCharts
#306182025-03-04AustinAbro321Fix namespace flag not registering
#305902025-03-01SantalScriptfix:add proxy support when mTLS configured
#305722025-02-25yardenshohamfix: error when more than one post-renderer is specified
#305762025-02-23felipecrsFix flaky TestDedupeRepos
#305622025-02-20robertsircfixing error handling from a previous PR
#136562025-02-03gjenkins8fix: Bind repotest server to localhost
#136332025-01-17mattfarinaEnsuring the file paths are clean prior to passing to securejoin
#134252024-11-15MathieuCesbronFix typo "re-use" to "reuse"

Refactor/Cleanup

Code quality improvements and modernization

PRDateAuthorTitle
#314402025-10-29mattfarinaUpdating Go and golangci-lint versions
#314082025-10-21AndiDogImprove error message when plugin source cannot be determined or a non-directory is passed
#313902025-10-21TerryHowefix: improve pkg/cmd/list test coverage
#313652025-10-21reddaisyyrefactor: use reflect.TypeFor
#313952025-10-21wyrapeseedchore: fix some comment format
#314012025-10-17TerryHowerefactor: remove unused err from pkg/registry/client.go
#313912025-10-15TerryHowechore: rename test registry
#313022025-10-13TerryHowefix: helm verify Run signature
#312702025-10-13TerryHowechore: registry utils clean up
#313832025-10-13dirkmuellerAvoid accessing .Items on nil object
#313792025-10-13TerryHowefix: clean up coverage script temp file
#309802025-10-10gjenkins8cleanup: Remove/consolidate redundant kube client Interfaces
#307122025-10-10gjenkins8cleanup: Remove extra lint/rules.Template functions
#308332025-10-09gjenkins8refactor/cleanup: Replace action 'DryRun' string with DryRunStrategy type + deprecations
#313262025-10-07TerryHoweUpdate sign tests to use testify
#313122025-10-01gjenkins8Remove unused 'Settings' from plugin schema
#311432025-09-25TerryHowefix: remove redundant error check
#312492025-09-25banjohchore: add additional logging to plugin installer
#313212025-09-24juejinyuxituchore: fix some typos in comment
#312972025-09-22TerryHowefix: hide notes in helm test command
#313152025-09-22benoittgtRemove unused golangci-lint rules that produce warning
#312942025-09-19TerryHoweRemove implicit support for helm lint current directory
#313012025-09-19TerryHowechore: remove helm version --client option
#313032025-09-18mattfarinaUpdate the action interfaces for chart apiversions
#311982025-09-16TerryHowerefactor: replace pkg/engine regular expressions with parser
#312932025-09-16TerryHowechore: remove pkg/time which is no longer needed
#312872025-09-16miledxzimprove fileutil test coverage
#312922025-09-16reddaisyyrefactor: use strings.builder
#312862025-09-12yajianggrouprefactor: use strings.CutPrefix
#312582025-09-08StephanieHhnbrgRefactor unreachableKubeClient for testing into failingKubeClient
#312592025-09-07StephanieHhnbrgAdapt test-coverage command to be able to run for a certain package
#312252025-09-02mattfarinaBREAKING CHANGE: Move lint pkg to be part of each chart version
#312202025-09-02gjenkins8BREAKING CHANGE: refactor: utilize pluginTypesIndex for config unmarshalling
#312192025-09-02gjenkins8BREAKING CHANGE: Remove 'SetupPluginEnv'
#312162025-09-02mattfarinaBREAKING CHANGE: Move to versioned packages
#312242025-09-01gjenkins8fix: Adjust PostRenderer plugin output to value
#312182025-09-01gjenkins8BREAKING CHANGE: Remove legacy Command/Hooks from v1 Subprocess (#23)
#311512025-08-30TerryHowefix: make file whitespace
#311782025-08-28mattfarinaAdd content cache to helm env
#311652025-08-22mattfarinaBREAKING CHANGE: Initial addition of content based cache
#136292025-08-22gjenkins8BREAKING CHANGE: Rename 'atomic' -> 'rollback-on-failure'
#311752025-08-21cuiweixiepkg/register: refactor to use atomic.Uint64
#311322025-08-19joemickyrefactor: replace []byte(fmt.Sprintf) with fmt.Appendf
#311332025-08-14joemickyrefactor: replace HasPrefix+TrimPrefix with CutPrefix
#311342025-08-14joemickyrefactor: omit unnecessary reassignment
#117002025-08-13suzakuRefactor, use sort.Slice to reduce boilerplate code
#310582025-08-07farazkhawajaAdd test coverage for get_values/metadata.go
#311072025-08-06Pavanipogulatest(pkg/kube): Add unit tests to wait and roundtripper files.
#311062025-08-05irikeishtest(pkg/kube): add test for Client.isReachable
#309822025-08-05gjenkins8BREAKING CHANGE: Rename 'force' to 'force-replace'
#310942025-08-04mikelolasagastichore(deps): remove phayes/freeport module
#311012025-07-30banjohfeat: switch yaml library to go.yaml.in/yaml/v3
#310812025-07-25mattfarinaBREAKING CHANGE: Initial addition of v3 charts
#310792025-07-22gjenkins8cleanup: Remove plugin deprecated 'UseTunnelDeprecated'
#310602025-07-18yumeiyinrefactor: replace Split in loops with more efficient SplitSeq
#310652025-07-15TerryHowechore: improve OCI debug logging
#310332025-07-14navinag1989test: increase test coverage for pkg/cli/options.go file
#310292025-07-07gjenkins8chore(refactor): Privatize 'k8sYamlStruct'
#310232025-07-03gjenkins8BREAKING CHANGE: Remove deprecated '--create-pods' flag
#310092025-07-02tpresatest: increase test coverage for pkg/pusher
#310182025-07-01mattfarinaMove logging setup to be configurable
#309092025-06-03jinjiadurefactor: replace HasPrefix+TrimPrefix with CutPrefix
#308092025-06-03mmorel-35chore: enable usetesting linter
#308652025-05-22mmorel-35refactor: update json-patch import path and add gomodguard settings
#308712025-05-20gjenkins8Run test OCI registry localhost
#308662025-05-20mmorel-35chore: enable thelper linter
#308632025-05-16mattfarinaAdding test for list command
#308502025-05-12yetyearrefactor: use maps.Copy for cleaner map handling
#308292025-05-09TerryHoweIncrease pkg/time test coverage
#308102025-05-08mmorel-35chore: enable usestdlibvars linter
#308442025-05-08TerryHowefix: rename slave replica
#308272025-05-06findnaturerefactor: use slices.Contains to simplify code
#134602025-04-23justenstallfix: replace "github.com/pkg/errors" with stdlib "errors" package
#307882025-04-23stephenpmurrayref(helm): Export Chart Not Found error
#307812025-04-22mmorel-35chore: remove github.com/hashicorp/go-multierror dependency
#135782025-04-18gjenkins8refactor: Remove ChartRepository []ChartPaths
#307602025-04-16robertsircadding slog debug to a few points
#307132025-04-11gjenkins8cleanup: Remove Helm v2 template lint rules
#307492025-04-11mattfarinaBREAKING CHANGE: Removing the alpine test chart
#306862025-04-11mattfarinaBREAKING CHANGE: Remove deprecated code
#307362025-04-09robertsircmanually updating go.mod file
#134582025-04-05thudiBREAKING CHANGE: #13449 Resolves: Replacing NewSimpleClientSet to NewClientSet due to deprecation
#306842025-03-21twz123Remove ClientOptResolver from OCI Client
#306032025-03-21robertsircconverting inline log to slog
#306992025-03-21mattfarinaError when failed repo update.
#305922025-02-28robertsircchanging from log to slog
#305892025-02-26mattfarinaBREAKING CHANGE: Move pkg/release to pkg/release/v1 to support v3 charts
#305862025-02-25mattfarinaBREAKING CHANGE: Move pkg/chart to pkg/chart/v2 to prepare for v3 charts
#305852025-02-25robertsircremoving old apis
#305802025-02-24mattfarinaBREAKING CHANGE: Move pkg/releaseutil to pkg/release/util
#111122025-02-22felipecrsperf(dep-up): do not update the same repo multiple times
#305672025-02-21mattfarinaBREAKING CHANGE: Moving chartutil to chart/util
#305662025-02-21robertsircremove unused config.go
#304702025-02-19gjenkins8Cleanup repotest.Server constructors
#305502025-02-19mattfarinaMoving to SetOut and SetErr for Cobra
#305462025-02-19hugehoperefactor: using slices.Contains to simplify the code
#135352025-02-05gjenkins8refactor: tlsutil use options pattern
#136652025-02-05gjenkins8chore: Remove unused WaitAndGetCompletedPodPhase
#135792025-02-05gjenkins8refactor: Remove duplicate FindChartIn*RepoURL functions
#135162025-01-24TerryHowechore: fix problems with latest lint
#134942025-01-18gjenkins8BREAKING CHANGE: Remove deprecated repo add --no-update flag
#136022025-01-17crystalstallrefactor: using slices.Contains to simplify the code
#136002025-01-14gjenkins8cleanup: NewShowWithConfig -> NewShow
#136012025-01-09gjenkins8cleanup: Remove superseded 'lint/rules.Values' function
#136112025-01-07mattfarinaBREAKING CHANGE: Updating the internal version to v4
#135762025-01-07gjenkins8refactor: Consolidate lint package Run() functions
#135772025-01-07gjenkins8refactor: Remove redundant NewPullWithOpts
#135992025-01-07gjenkins8cleanup: ProcessDependenciesWithMerge -> ProcessDependencies
#135732024-12-27mattfarinaBREAKING CHANGE: Updating to helm.sh/helm/v4
#134442024-12-07justenstallrefactor(status): remove --show-desc and --show-resources flags

Other

Infrastructure and project management improvements

PRDateAuthorTitle
#311972025-09-03tzchenxixichore: fix function name
#311502025-08-18TerryHoweFeature add stale pr workflow
#311492025-08-18TerryHowefix: stale issue workflow
#310772025-07-21gaspergromfix: LFX health score badge link
#310472025-07-10jingchangluchore: fix typo in pkg/repo/chartrepo.go
#310042025-06-26andrepedfix(docs): Typofix in README
#310022025-06-26curlwgetchore: fix function in comment
#309122025-06-17BhargavkonidenaFix #30893 - issue templates
#309572025-06-04acceptacrosschore: fix some function names in comment
#309142025-05-27benoittgtFix dependabot upgrade of jsonschema to v6.0.2
#309042025-05-23benoittgt[Doc] Help users avoid specifying URL scheme and path with helm registry
#308822025-05-20caniszczykAdd new LFX Insights Health Score Badge
#308722025-05-20benoittgtBump golangci-lint version to match last golangci-lint-action
#308242025-05-05adharsh277Fix bug in .golangci.yml configuration
#307862025-04-25mmorel-35refactor: reorganize .golangci.yml for better clarity and structure
#307852025-04-23mmorel-35fix: govulncheck workflow
#307842025-04-22scottrigbychore(OWNERS): Add TerryHowe as Triage Maintainer
#307732025-04-18wangcundashangchore: fix function name in comment
#307542025-04-16mattfarinaSimplify the JSON Schema checking
#306932025-03-20linghuyingchore: make function comment match function name
#306652025-03-13mattfarinaUpdating to 0.37.0 for x/net
#306112025-03-04gjenkins8chore: Remove 'coveralls'
#306122025-03-04gjenkins8fix: Fix go report card badge reference/link
#305082025-02-19eimhin-roverUpdate version option description with more accurate info
#304972025-02-12robertsircadding-my-key
#302952025-02-07edithturnAdd Percona to the list of organizations using Helm
#136532025-01-23petercoverchore: fix some comments
#136252025-01-13shahbazaamirading info to install helm , referring the documentation
#135632024-12-21gjenkins8Run build-test action on dev-v3 branch
#135522024-12-20gjenkins8Fix dependabot.yml target-branch typo
#135292024-12-15godhanipayalAdding Oracle to the adopters list
#135092024-12-06gjenkins8Dependabot update dev-v3 branch go modules
#132122024-12-01mbianchidevUpdate ADOPTERS.md
#134652024-11-20banjohAdd precommit config to .gitignore
#134432024-11-15mattfarinaUpdating docs around v3 and v4

v4 Changes Also Backported to v3

These PRs were included in v4 but were also backported to v3 releases

New Features (Backported)

PRDateAuthorTitle
#306962025-03-24benoittgtInform about time spent waiting resources to be ready in slog format
#129122025-03-11hegerdesfeat: add httproute from gateway-api to create chart template
#103092025-02-21Bez625Add hook annotation to output hook logs to client on error
#134812025-02-18banjohfeat: Enable CPU and memory profiling
#126902025-01-01TerryHowefeat: OCI install by digest
#132322024-12-20dnskrref(create): don't render empty resource fields
#129622024-12-04stevehipwellfeat: Added multi-platform plugin hook support
#133432024-11-19niladrihAdd annotations and dependencies to get metadata output

Bug Fixes (Backported)

PRDateAuthorTitle
#310642025-09-05kamilswieclint: throw warning when chart version is not semverv2
#311562025-08-22estrozfix: set repo authorizer in registry.Client.Resolve()
#309922025-08-18TerryHowefix: force bearer oauth for if registry requests bearer auth
#311152025-08-18banjohfix: use username and password if provided
#308912025-08-13gjenkins8fix: Port pluginCommand & command warning
#310502025-08-08heyLuFix helm pull untar dir check with repo urls
#310782025-07-248tomat8fix: k8s version parsing to match original
#309792025-06-17TerryHowefix: OAuth username password login for v4
#309172025-06-01TerryHowefix: add debug logging to oci transport
#309372025-05-30TerryHowefix: legacy docker support broken for login
#309282025-05-28TerryHowefix: plugin installer test with no Internet
#309052025-05-23robertsircforward porting 30902
#308942025-05-23benoittgtPrevent push cmd failure in 3.18 by handling version tag resolution in ORAS memory store
#306972025-04-17p-seFix --take-ownership for custom resources - closes #30622
#306732025-04-16nvanthaofix: Process all hook deletions on failure
#307012025-04-11zanukaupdates mutate and validate web hook configs
#135832025-01-15jiashengzfix: check group for resource info match

Refactor/Cleanup (Backported)

PRDateAuthorTitle
#306772025-04-18dongjiang1989chore: Update Golang to v1.24
#307412025-04-11benoittgtBumps github.com/distribution/distribution/v3 from 3.0.0-rc.3 to 3.0.0
#133822025-02-03TerryHowechore(oci): migrate to ORAS Golang library v2
#135462024-12-19mattfarinaUpdate to Go 1.23
#134992024-12-06gjenkins8Shadow ORAS remote.Client interface

Other (Backported)

PRDateAuthorTitle
#307752025-04-19benoittgtBump toml
#135332025-01-24althmohafix: (toToml) renders int as float
#135812024-12-31ldlb9527Upgrade golang.org/x/net to v0.33.0 to address CVE-2024-45338