Skip to content

UI: Parameters tab renders Directory section for Helm apps with out-of-chart valueFiles (v3.4.1 regression) #27773

@iwaynee

Description

@iwaynee

Checklist:

  • I've searched in the docs and FAQ for my answer: https://bit.ly/argocd-faq.
  • I've included steps to reproduce the bug.
  • I've pasted the output of argocd version.

Describe the bug

After upgrading to Argo CD v3.4.1, the Parameters tab in the application details panel no longer renders Helm parameters for applications whose spec.source.helm.valueFiles reference a path outside the chart directory (using an absolute repo-root path, e.g. /path/to/values.yaml).

Instead of the expected Helm section (with value file selection and parameter list), the tab falls back to rendering the Directory section (showing DIRECTORY RECURSE, TOP-LEVEL ARGUMENTS, EXTERNAL VARIABLES).

The application is otherwise fully functional:

  • status.sourceType is correctly reported as Helm.
  • spec.source.helm.parameters is populated correctly on the live Application object (verified via kubectl get application <app> -o yaml).
  • Manifest generation succeeds and the application syncs/heals correctly.
  • The Manifest tab shows the full Helm source config with all parameters.
  • The application card displays the correct N parameter override(s) badge.
  • argocd-repo-server logs confirm the GetAppDetails call returns the populated Helm source (with ValueFiles, Parameters).

Only the UI Parameters tab is broken. Restarting argocd-repo-server, argocd-server, and flushing argocd-redis does not fix the issue. Reproducible across browsers (regular and incognito).

Downgrading to v3.3.9 (chart 9.5.11) restores the expected behavior — the Parameters tab renders the Helm section with VALUES FILES, PARAMETERS, etc.

For comparison, Kustomize applications in the same Argo CD instance render their Parameters tab correctly in v3.4.1 (showing KUSTOMIZEVERSION, IMAGES). This appears to be Helm-specific.

To Reproduce

  1. Install Argo CD v3.4.1 via the official Argo Helm chart (argo/argo-cd chart 9.5.12 or 9.5.13, both ship app version v3.4.1).

  2. Create an Application with the following shape:

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: example-helm
      namespace: argocd
    spec:
      project: default
      source:
        repoURL: https://example.com/my-repo.git
        targetRevision: main
        path: charts/my-chart
        helm:
          valueFiles:
            - /overlays/prod/values.yaml   # absolute path, outside chart dir
      destination:
        server: https://kubernetes.default.svc
        namespace: my-namespace

    The chart at charts/my-chart is a self-authored Helm v2 chart in the same Git repository as the value files, referenced via spec.source.path (not via spec.source.chart against a Helm registry). Standard layout:

    charts/my-chart/
    ├── Chart.yaml      # apiVersion: v2, type: application
    ├── values.yaml
    └── templates/
        └── ...
    

    The value file referenced by valueFiles lives in the same Git repository but outside the chart directory (e.g. under overlays/prod/), addressed by an absolute path from the repo root.

  3. Optionally add helm.parameters (e.g. via argocd app set or argocd-image-updater with write-back-method: argocd).

  4. In the UI, open the application and click the Parameters tab.

Expected behavior

The Parameters tab should render the Helm section, showing:

  • The list of value files (VALUES FILES)
  • All helm.parameters entries with their names and values
  • An Edit button that allows modifying parameters

This is what v3.3.9 does for the same Application spec.

Actual behavior

The Parameters tab renders the Directory section instead:

  • DIRECTORY RECURSE: false
  • TOP-LEVEL ARGUMENTS (empty)
  • EXTERNAL VARIABLES (empty)

The Helm parameters are not visible or editable from the UI, even though they are present and active on the Application object.

Screenshots

  1. The application card with the N parameter override(s) badge.
Image
  1. The broken Parameters tab showing the Directory section.
Image
  1. The Manifest tab showing the populated helm.parameters for the same app.
Image
  1. The same Parameters tab on v3.3.9 showing the correct Helm section.
Image

Version

Argo CD v3.4.1 (image quay.io/argoproj/argocd:v3.4.1), installed via the
official Argo Helm chart:

  • Repo: https://argoproj.github.io/argo-helm
  • Chart: argo-cd
  • Chart version: 9.5.12 (also reproduces on 9.5.13)
  • App version: v3.4.1

Downgrading the chart to 9.5.11 (app version v3.3.9) restores the expected Parameters tab behavior, with no other changes to the Application manifests or the chart values.

Logs

argocd-repo-server correctly returns the Helm source on cache hit:

time="..." level=info msg="manifest cache hit: &ApplicationSource{
  RepoURL:https://example.com/my-repo.git,
  Path:charts/my-chart,
  TargetRevision:main,
  Helm:&ApplicationSourceHelm{
    ValueFiles:[/overlays/prod/values.yaml],
    Parameters:[]HelmParameter{
      HelmParameter{Name:image.name,Value:...,ForceString:true,},
      HelmParameter{Name:image.tag,Value:...,ForceString:true,},
      HelmParameter{Name:autoscaling.minReplicas,Value:4,ForceString:false,},
    },
    ...
  },
  Kustomize:nil,
  Directory:nil,
  Plugin:nil,
  ...
}/<revision-hash>"

i.e. the source is correctly identified as Helm at the repo-server layer; the regression appears to be in how argocd-server/UI consumes the appDetails response in v3.4.1 for sources with out-of-chart valueFiles.

Thanks for looking into it :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage/pendingThis issue needs further triage to be correctly classified

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions