Releases: helmfile/helmfile
Release list
v1.7.0
What's Changed
- build(deps): bump azure/setup-helm from 5.0.0 to 5.0.1 by @dependabot[bot] in #2664
- fix: ensure OCI charts are prepared for needed releases with --include-needs by @yxxhero in #2663
- fix: serialize concurrent helm operations for same chart to fix #768 by @yxxhero in #2662
- fix: clean up chartify temp directories after helm operations by @yxxhero in #2668
- feat: add --template-args flag to template/apply/sync for helm lookup() support by @yxxhero in #2666
- fix: support go-getter URLs in ad-hoc dependencies to fix #821 by @yxxhero in #2670
- test: add integration test for issue #1880 transformers with file:// deps by @yxxhero in #2673
- fix: replace YAML-based DeepCopy with recursive deep copy to fix #973 by @yxxhero in #2675
- build(deps): bump github.com/helmfile/vals from 0.44.2 to 0.44.3 by @dependabot[bot] in #2677
- test: add integration test for selector filtering with requiredEnv (#1172) by @yxxhero in #2678
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.25 to 1.32.26 by @dependabot[bot] in #2681
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.104.0 to 1.104.1 by @dependabot[bot] in #2682
- feat: add
inherits:for sub-helmfile config inheritance by @yxxhero in #2680 - feat: Add ConditionTemplate support in releaseSpec by @agarov in #2669
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.26 to 1.32.27 by @dependabot[bot] in #2684
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.104.1 to 1.104.2 by @dependabot[bot] in #2685
- build(deps): bump github.com/helmfile/vals from 0.44.3 to 0.44.4 by @dependabot[bot] in #2686
New Contributors
Full Changelog: v1.6.0...v1.7.0
v1.6.0
Helmfile v1.6.0
This release introduces helmfile doctor — an AI-assisted diff analyzer that
reads your helmfile diff output and asks an LLM to summarize the changes and
flag risks before you apply them. We also ship parallel kubedog tracking
so resource convergence now happens alongside (not after) helm execution.
🩺 helmfile doctor: AI-assisted diff analysis
helmfile doctor runs helmfile diff, then sends the diff to any
OpenAI-compatible Chat Completions endpoint to produce a structured risk
report. It is designed to drop into a CI pipeline before helmfile apply so a
human reviewer (or a gate) gets a fast, opinionated second opinion on what is
about to change.
Quick start
# Configure via env (lowest precedence)...
export HELMFILE_LLM_API_KEY="sk-..."
export HELMFILE_LLM_MODEL="gpt-4o"
# ...or helmfile.yaml...
llm:
baseURL: "https://api.openai.com/v1"
apiKey: {{ env "OPENAI_API_KEY" }}
model: "gpt-4o"
# ...or flags (highest precedence)
helmfile doctor --llm-model claude-3-5-sonnethelmfile doctorExample output:
# Helmfile Doctor Report
## Summary
Upgrades the checkout Deployment from v1.4 to v1.5 and raises the replica
count from 3 to 5. The database StatefulSet is unchanged.
## Risks
### 🔴 [HIGH] data-loss
The PVC `data-checkout-0` is marked for deletion ...
**Suggestion:** `kubectl get pvc data-checkout-0 -o yaml` before applying.
### 🟡 [MEDIUM] downtime
No PodDisruptionBudget found for the checkout Deployment ...
**Suggestion:** Add a PDB before scaling.
---
Model: gpt-4o | Duration: 8.2s | Secrets redacted: 3
How it works
- Runs
helmfile diff(with--contextdefaulting to 3 so the model gets
enough surrounding YAML to ground its analysis). - Runs the diff through a defense-in-depth secret redactor (see below).
- Sends the redacted diff to the LLM with a system prompt that frames it as a
senior Kubernetes/Helm reviewer and locks the output to a known JSON schema. - Renders a markdown report (or
--output jsonfor programmatic consumption).
Risk model
The model evaluates the diff across six categories and three severity levels:
| Category | What it catches |
|---|---|
data-loss |
PVCs, databases, stateful workloads deleted/recreated |
security |
New privileges, host networking, plaintext secrets |
breaking-change |
Renamed values, dropped labels, apiVersion downgrades |
downtime |
Missing PDBs, rolling-update storms, missing readiness gates |
performance |
Huge resource requests, removed HPA, expensive sidecars |
best-practice |
Missing namespace, hardcoded images, misaligned labels |
Severity drives the exit code, making doctor a CI gate:
- 0 — success, or only low/medium risks, or LLM call failed (degraded mode).
- 2 — at least one high risk and
--forcewas not passed.
(helm-diff's own "detected changes" exit-2 is intentionally swallowed —
changes are doctor's whole job.) - 1 — other error (state load failure, helm-diff runtime failure, etc.).
Pass --force to keep the report but skip the high-risk gate.
Secret safety
Secrets are always redacted before any byte leaves the process — there is
no opt-out. This is enforced in two layers:
--show-secretsis silently ignored; the diff config is wrapped so
ShowSecrets()returns false, making helm-diff itself emit<REDACTED>.- A built-in
SecretRedactorthen strips any residual secret-looking content
(Secret resourcedata:blocks, sensitive key names likepassword/
apiKey/token, free-form long base64, and JWT-shaped tokens). The
redaction count is always shown in the report footer so you can spot
unexpected leaks.
JSON output (--output json) exposes only post-redaction diffs — doctor never
echoes raw pre-redaction content through stdout or JSON.
Graceful degradation
When no LLM is configured (no HELMFILE_LLM_API_KEY / model / llm: block /
--llm-* flags), doctor degrades to a plain helmfile diff with
--show-secrets forced off — byte-for-byte identical behavior, just safer.
Configuration precedence
env (HELMFILE_LLM_*) < helmfile.yaml (llm:) < CLI flags (--llm-*)
| Flag | Purpose |
|---|---|
--llm-base-url |
OpenAI-compatible endpoint URL |
--llm-api-key |
API key (prefer helmfile.yaml + {{ env }} over the CLI) |
--llm-model |
Model id (gpt-4o, claude-3-5-sonnet via gateway, ...) |
--llm-timeout |
Per-request timeout (default 60s) |
--llm-max-tokens |
Completion cap (default 4096) |
--force |
Skip the high-risk exit-2 gate |
--output |
Report format: text (default) or json |
--diff-output |
helm-diff plugin output format (renamed from --output) |
Most helmfile diff flags are accepted for parity. See helmfile doctor --help.
See #2660.
⚡ Parallel kubedog tracking with progress printer
With --track-mode kubedog, resource tracking now runs in parallel with
helm instead of waiting for helm to finish. Helmfile templates the release
upfront, launches the kubedog tracker in a goroutine, and streams live progress
while helm installs/upgrades.
Safety valves protect against the known upstream-kubedog races:
- Cluster-convergence confirmation — when kubedog's resource graph stalls,
helmfile queries the live API to confirm convergence and cancels the tracker. - helm-killer — if the cluster confirms all resources converged but helm is
wedged on its hook waiter, helmfile deliberately interrupts the stuck helm
subprocess and treats it as success. - Hard timeout — a tracker that never returns within the release timeout is
treated as a failure. - Buffered helm output — helm's stdout is captured into a per-release buffer
and replayed as a single block so it never interleaves with kubedog progress.
See #2654.
🐛 Bug fixes
- Fix OCI chart dependency resolution when the chart path contains underscores.
Paths likeoci://registry/charts_my_appwere being mis-split, breaking
helmfile deps. #2648 - Resolve symlinked plugin directories in
GetPluginVersion. Plugin
directories reached through symlinks (e.g. viaXDG_DATA_DIRS) are now
followed correctly, fixing spurious "plugin not installed" errors.
#2661
📦 Dependencies
- bump
github.com/aws/aws-sdk-go-v2/service/s31.103.3 → 1.104.0 - bump
github.com/containerd/containerd1.7.32 → 1.7.33 - bump
github.com/helmfile/vals0.44.1 → 0.44.2 - bump
github.com/helmfile/chartify0.26.5 → 0.27.0 - bump helm to v4.2.2 (and v3.21.2 for the v3 track)
- bump
actions/checkoutv6 → v7
📚 Docs
- Fix a duplicated word in the
hcl_funcslog description.
#2647 — thanks @s3onghyun
(first contribution!) - Small documentation indentation fixes.
#2655 — thanks @fiete2017
(first contribution!)
Full Changelog: v1.5.5...v1.6.0
v1.5.5
v1.5.4
What's Changed
- build(deps): bump golang.org/x/term from 0.43.0 to 0.44.0 by @dependabot[bot] in #2629
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.23 to 1.32.24 by @dependabot[bot] in #2627
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.103.2 to 1.103.3 by @dependabot[bot] in #2628
- fix: Fix broken
trackLogsfunctionality in Kubedog tracker by @ggillies in #2630 - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.24 to 1.32.25 by @dependabot[bot] in #2632
- Bump Helm support to 4.2.1 and 3.21.1 by @Copilot in #2635
- build(deps): bump github.com/helmfile/vals from 0.44.0 to 0.44.1 by @dependabot[bot] in #2637
- build(deps): bump github.com/helmfile/chartify from 0.26.4 to 0.26.5 by @dependabot[bot] in #2636
- Add App.WithFileSystem by @toyamagu-2021 in #2638
- fix: include release values in .Values for patch template rendering by @yxxhero in #2556
- build(deps): bump helm-diff to v3.15.9 by @yxxhero in #2642
- feat: add support for helm 4 --server-side upgrade flag by @yxxhero in #2641
New Contributors
Full Changelog: v1.5.3...v1.5.4
v1.5.3
What's Changed
- build(deps): bump github.com/gookit/color from 1.5.4 to 1.6.1 by @dependabot[bot] in #2608
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.17 to 1.32.18 by @dependabot[bot] in #2610
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.101.0 to 1.102.0 by @dependabot[bot] in #2612
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.102.0 to 1.102.1 by @dependabot[bot] in #2613
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.18 to 1.32.20 by @dependabot[bot] in #2614
- fix: support array of maps in set/setTemplate values by @yxxhero in #2615
- fix: remove naked return by returning expected values by @ceriath in #2617
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.102.1 to 1.103.0 by @dependabot[bot] in #2619
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.20 to 1.32.21 by @dependabot[bot] in #2618
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.103.0 to 1.103.1 by @dependabot[bot] in #2620
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.21 to 1.32.22 by @dependabot[bot] in #2621
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.103.1 to 1.103.2 by @dependabot[bot] in #2622
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.22 to 1.32.23 by @dependabot[bot] in #2623
- Bump helm-diff to v3.15.8 across runtime defaults and execution environments by @Copilot in #2624
- build(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 by @dependabot[bot] in #2625
Full Changelog: v1.5.2...v1.5.3
v1.5.2
What's Changed
- Bump Helm support to 3.21.0 and 4.2.0 by @Copilot in #2588
- bump helm-diff to v3.15.7 by @Copilot in #2591
- fix: refresh Chart.lock after rewriting file:// dependencies by @sstarcher in #2587
- feat: support HELMFILE_KUBE_CONTEXT env var for default kube context by @dschmidt in #2593
- feat: support HELMFILE_NAMESPACE env var for default namespace by @dschmidt in #2592
- fix: normalize dependency chart path before DirectoryExistsAt check by @yxxhero in #2598
- Add jsonPatches regression coverage for chartify lookup rendering by @Copilot in #2586
- feat: add defaultInherit for automatic release template inheritance by @yxxhero in #2600
- fix: restore kubedog status progress output during tracking by @yxxhero in #2602
- feat: show diff preview when sync --interactive is used by @vomba in #2603
- build(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.32 by @dependabot[bot] in #2607
- feat: support HELMFILE_* env vars for more global flags by @dschmidt in #2606
New Contributors
Full Changelog: v1.5.1...v1.5.2
v1.5.1
What's Changed
- fix: add trackFailOnError option to control kubedog exit code by @yxxhero in #2576
- docs: update helmfile skill to reflect v1.1 documentation by @yxxhero in #2577
- fix(state): resolve OCI repo prefix in ad-hoc release dependencies by @dschmidt in #2579
- feat(state): add mergeStrategy: fallback for first-file-wins env values by @dschmidt in #2578
- Expose internal apis by @ceriath in #2520
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.100.1 to 1.101.0 by @dependabot[bot] in #2581
- chore: Deduplicate preparation code of sync and apply by @ceriath in #2523
- build(deps): bump gitpython from 3.1.47 to 3.1.49 in /docs by @dependabot[bot] in #2582
- chore: Emit "cleanup" events later to match the behavior in "apply" by @ceriath in #2522
- build(deps): bump golang.org/x/term from 0.42.0 to 0.43.0 by @dependabot[bot] in #2584
- build(deps): bump gitpython from 3.1.49 to 3.1.50 in /docs by @dependabot[bot] in #2585
- fix: template helmDefaults.postRendererArgs with release data by @yxxhero in #2583
Full Changelog: v1.5.0...v1.5.1
v1.5.0
What's Changed
- feat: add --write-output flag to helmfile fetch for air-gapped environments by @yxxhero in #2572
- feat: add 'create' subcommand to scaffold helmfile deployment projects by @yxxhero in #2574
- docs: restructure documentation and improve newcomer experience by @yxxhero in #2573
- docs: deduplicate Technical Details sections in values-and-merging.md by @yxxhero in #2575
Full Changelog: v1.4.5...v1.5.0
v1.4.5
What's Changed
- build(deps): bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0 by @dependabot[bot] in #2524
- chore: rename variables to match in apply and sync by @ceriath in #2521
- chore: bump Helm to v4.1.4 by @Copilot in #2525
- build(deps): bump golang.org/x/term from 0.41.0 to 0.42.0 by @dependabot[bot] in #2529
- bump helm v3.20.1 to v3.20.2 by @Copilot in #2530
- build(deps): bump github.com/helmfile/vals from 0.43.8 to 0.43.9 by @dependabot[bot] in #2533
- Update Go from 1.25.8 to 1.26.2 by @Copilot in #2535
- fix: boolean false overrides dropped in multi-document helmfiles (#2527) by @yxxhero in #2532
- build(deps): bump github.com/helmfile/chartify from 0.26.2 to 0.26.3 by @dependabot[bot] in #2538
- fix: add mutex lock for concurrent rewriteChartDependencies access by @yxxhero in #2509
- fix: update state values files handling to replace arrays instead of merging by @Moglum in #2537
- fix: helmDefaults.postRendererArgs not passed to helm commands by @yxxhero in #2510
- enabledns flags available on template command by @Diliz in #2511
- build(deps): bump k8s.io/apimachinery from 0.35.3 to 0.35.4 by @dependabot[bot] in #2540
- build(deps): bump k8s.io/client-go from 0.35.3 to 0.35.4 by @dependabot[bot] in #2539
- build(deps): bump github.com/zclconf/go-cty from 1.18.0 to 1.18.1 by @dependabot[bot] in #2542
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.14 to 1.32.15 by @dependabot[bot] in #2543
- fix: eliminate race condition in rewriteChartDependencies by @yxxhero in #2541
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.99.0 to 1.99.1 by @dependabot[bot] in #2546
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.15 to 1.32.16 by @dependabot[bot] in #2547
- build(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 by @dependabot[bot] in #2553
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.99.1 to 1.100.0 by @dependabot[bot] in #2552
- Fix helmfile init failing to update outdated helm plugins with Helm v4 by @Copilot in #2554
- fix: skip subhelmfiles when selectors conflict with CLI selectors by @yxxhero in #2545
- build(deps): bump gitpython from 3.1.41 to 3.1.47 in /docs by @dependabot[bot] in #2555
- fix: apply post-renderer to output-dir-template output by @yxxhero in #2531
- build(deps): bump go.uber.org/zap from 1.27.1 to 1.28.0 by @dependabot[bot] in #2557
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.100.0 to 1.100.1 by @dependabot[bot] in #2558
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.16 to 1.32.17 by @dependabot[bot] in #2559
- update readme add install from source by @Sianao in #2561
- Honor
skipSchemaValidationduring chartification whenforceNamespaceis set by @Copilot in #2550 - build(deps): bump github.com/Masterminds/semver/v3 from 3.4.0 to 3.5.0 by @dependabot[bot] in #2565
- fix: deduplicate chart dependencies in helmfile.lock by @yxxhero in #2567
- build(deps): replace werf/kubedog-for-werf-helm with werf/kubedog by @yxxhero in #2568
- build(deps): bump helmfile/vals from v0.43.9 to v0.44.0 by @yxxhero in #2569
- fix: use --post-renderer-args=VALUE format to prevent Helm flag parsing failure by @yxxhero in #2570
New Contributors
- @Moglum made their first contribution in #2537
- @Diliz made their first contribution in #2511
- @Sianao made their first contribution in #2561
Full Changelog: v1.4.4...v1.4.5
v1.4.4
What's Changed
- build(deps): bump azure/setup-helm from 4.3.1 to 5.0.0 by @dependabot[bot] in #2499
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.1 to 1.97.2 by @dependabot[bot] in #2500
- fix: helmfile fetch fails for kustomization directories by @yxxhero in #2504
- fix: keep all chart dependencies key / values by @champtar in #2501
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.2 to 1.97.3 by @dependabot[bot] in #2505
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.12 to 1.32.13 by @dependabot[bot] in #2506
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.3 to 1.98.0 by @dependabot[bot] in #2512
- build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by @dependabot[bot] in #2513
- chore: update go version to 1.25.8 by @eadred in #2514
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.13 to 1.32.14 by @dependabot[bot] in #2516
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.98.0 to 1.99.0 by @dependabot[bot] in #2517
- build(deps): bump github.com/helmfile/vals from 0.43.7 to 0.43.8 by @dependabot[bot] in #2518
New Contributors
Full Changelog: v1.4.3...v1.4.4