Skip to content

Diff not shown for helm valuesObject field #24883

@madaraszg-tulip

Description

@madaraszg-tulip

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

There is no way to keep track of changes to valuesObject in the UI in a reliable way. Every time it's set to something in the UI, I would like to be able to see the diff against the desired manifest, and sync should update it as the diff shows.

To Reproduce

Desired manifest delivered through git:

spec:
  destination:
    namespace: monitoring-testing
    server: https://kubernetes.default.svc
  project: default
  sources:
    - chart: alloy
      helm:
        skipCrds: true
        valueFiles:
          - values.yaml
          - $gitops/apps/overlays/global-testing/alloy-testing/values.yaml
      path: helm/alloy
      repoURL: <redacted>
      targetRevision: ~1.0.0
    - ref: gitops
      repoURL: <redacted>
      targetRevision: HEAD

Live manifest:

spec:
  destination:
    namespace: monitoring-testing
    server: https://kubernetes.default.svc
  project: default
  sources:
    - chart: alloy
      helm:
        skipCrds: true
        valueFiles:
          - values.yaml
          - $gitops/apps/overlays/global-testing/alloy-testing/values.yaml
        valuesObject:
          alloy-metrics:
            liveDebugging: true
      path: helm/alloy
      repoURL: <redacted>
      targetRevision: ~1.0.0
    - ref: gitops
      repoURL: <redacted>
      targetRevision: HEAD

diff is empty. If I edit the live manifest, update targetRevision to ~1.0.1 for example, then the valuesObject diff also shows up.

Then I add `valuesObject: {}' to the desired spec, it first notices the diff:

Image

But then I sync, and then revert the live manifest to the original one, and no diffs are shown any more. Again, if I change another field in the source item (targetRevision), a diff to valuesObject is again shown.

I tried this both without and with server side diff.

In comparison if I do kubectl diff with the desired manifest, both without and with server side diff I get the following:

@@ -36,9 +37,7 @@
       valueFiles:
       - values.yaml
       - $gitops/apps/overlays/global-testing/alloy-testing/values.yaml
-      valuesObject:
-        alloy-metrics:
-          liveDebugging: true
+      valuesObject: {}
     path: helm/alloy

Expected behavior

I would expect a way to configure the desired manifest so that every time the live manifest has a valuesObject override, it should show a diff in the UI.

Screenshots

Version

argocd: v3.0.12+ed1e239
  BuildDate: 2025-07-25T19:36:41Z
  GitCommit: ed1e2397ef9af6d23b284e39d504308cdda1957b
  GitTreeState: clean
  GoVersion: go1.24.4
  Compiler: gc
  Platform: linux/amd64

Logs

Paste any relevant application logs here.

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