Pre-requisites
What happened? What did you expect to happen?
Ran into this when upgrading to 4.0.5. Templating of item parameters in when: filters is skipped. It appears no item properties in when: get expanded/templated when using withParam items (see example workflow below as generated by Claude Opus 4.7)
I had some help of Claude Opus 4.7 researching the issue, but this is all written up by a human (me, @reinvantveer, unless explicitly stated otherwise.
Found by Claude:
Existing issues [Claude Opus 4.7] found (argoproj/argo-workflows)
Searched the repo for the combination "Skipped, empty params" + when + withParam + {{item.*}}. The closest matches:
- #10173 — "withParams processed even when task/step Skipped" (v3.4.1) https://github.com/argoproj/argo-workflows/issues/10173 Reports that withParam is still expanded when when: evaluates false, leading to Type: Skipped / Phase: Error. Inverse symptom of yours (yours skips with Phase: Skipped and "empty params"), but same code area (expandStep/processItem interaction with when).
- #7094 — "workflow fail if loop param results are skipped even if not used" (v3.2.x) https://github.com/argoproj/argo-workflows/issues/7094 Failure mode is withParam value could not be parsed as a JSON list, not "empty params". Different cause, same surface (loop + upstream skip).
- #13193 — "Aggregated result of loop is not resolved when empty array" https://github.com/argoproj/argo-workflows/issues/13193 Contains the exact log line Skipped, empty params. Their root cause is a genuinely empty withParam array, which is not your case (your outputs.parameters.missing_distributions has 3 items). Useful precedent that proves the message itself is well‑known but the underlying causes are varied.
- #12812 — "Parameter outputs from withParam steps are passed as escaped strings rather than JSON" (v3.5.5) https://github.com/argoproj/argo-workflows/issues/12812 Different bug (string escaping of aggregated outputs), but in the same withParam plumbing.
- #15949 — "Output from a Skipped Step Used as a Parameter Causes error=requeue and Workflow hangs" (v4.0.4) https://github.com/argoproj/argo-workflows/issues/15949 Same minor version family as yours (v4.0.x). Different symptom (requeue/hang vs. silent skip), but it confirms there is ongoing churn around when/skip handling in v4.0.
- Stack Overflow #70316842 — when: "'{{item}}' =~ '^tests/'" + withParam + artifact produces failed to resolve {{inputs.artifacts.Code}}. A maintainer comment ("This is a bug") confirms the general class: when: and withParam: interact in ways the maintainers themselves acknowledge as buggy.
Version(s)
v4.0.5, 7e70af5f218b65d14c0d867e50275265dd07728d83ba5afda6aab43c9cb1d099
Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflow that uses private images.
# Example produced by Claude Opus 4.7
# Reproduced by v4.0.5 and `latest` (digest 7e70af5f218b65d14c0d867e50275265dd07728d83ba5afda6aab43c9cb1d099)
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: skip-bug-
spec:
entrypoint: main
arguments:
parameters:
- name: target
value: "b" # set non-empty to trigger the bug
templates:
- name: main
steps:
- - name: produce
template: produce
- - name: consume
template: noop
arguments:
parameters:
- name: id
value: "{{item.id}}"
when: '("{{workflow.parameters.target}}" == "" || "{{workflow.parameters.target}}" == "{{item.id}}")'
withParam: "{{steps.produce.outputs.result}}"
- name: produce
script:
image: alpine:3
command: [sh]
source: |
echo '[{"id":"a"},{"id":"b"},{"id":"c"}]'
- name: noop
inputs:
parameters:
- name: id
container:
image: alpine:3
command: [sh, -c, "echo {{inputs.parameters.id}}"]
Logs from the workflow controller
# NB our controller runs in the `operators` namespace and is deployed using Argo CD so the namespace/deployment names are different.
$ kubectl logs -n operators deploy/workflow-system-argo-workflows-workflow-controller | grep skip-bug-2kczn
time=2026-06-15T07:44:21.611Z level=INFO msg="Processing workflow" resourceVersion=9072954 component=workflow_worker namespace=workflows workflow=skip-bug-2kczn lastSeenVersion=9070509 phase=""
time=2026-06-15T07:44:21.614Z level=INFO msg="trace parent" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn startMethod=StartWaitClientRateLimiter actualParent=reconcileWorkflow
time=2026-06-15T07:44:21.620Z level=INFO msg="resolved artifact repository" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn artifactRepositoryRef=default-artifact-repository
time=2026-06-15T07:44:21.620Z level=INFO msg="Task-result reconciliation" numObjs=0 namespace=workflows workflow=skip-bug-2kczn component=workflow_worker
time=2026-06-15T07:44:21.620Z level=INFO msg="updated phase" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn fromPhase="" toPhase=Running
time=2026-06-15T07:44:21.620Z level=INFO msg="Node was nil, will be initialized as type Skipped" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.620Z level=INFO msg="Event occurred" component=workflow_worker apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowRunning message="Workflow Running" object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow
time=2026-06-15T07:44:21.621Z level=INFO msg="was unable to obtain node, letting display name to be nodeName" workflow=skip-bug-2kczn component=workflow_worker namespace=workflows boundaryID=""
time=2026-06-15T07:44:21.621Z level=INFO msg="node initialized" workflow=skip-bug-2kczn component=workflow_worker phase=Running message="" node=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:21.621Z level=INFO msg="was unable to obtain node, letting display name to be nodeName" boundaryID="" workflow=skip-bug-2kczn component=workflow_worker namespace=workflows
time=2026-06-15T07:44:21.621Z level=INFO msg="node initialized" workflow=skip-bug-2kczn node=skip-bug-2kczn-1456481887 phase=Running message="" component=workflow_worker namespace=workflows
time=2026-06-15T07:44:21.621Z level=INFO msg="node initialized" node=skip-bug-2kczn-1855927883 phase=Running message="" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.622Z level=INFO msg="Node was nil, will be initialized as type Skipped" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.622Z level=INFO msg="node initialized" message="" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn node=skip-bug-2kczn-4034540945 phase=Running
time=2026-06-15T07:44:21.622Z level=INFO msg="node initialized" phase=Pending message="" node=skip-bug-2kczn-1925608 component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.622Z level=INFO msg=getExecutorLogOpts nodeID=skip-bug-2kczn-1925608 component=workflow_worker namespace=workflows workflow=skip-bug-2kczn nodeName=skip-bug-2kczn(0)[0].produce(0) loglevel=info
time=2026-06-15T07:44:21.622Z level=INFO msg=getExecutorLogOpts component=workflow_worker namespace=workflows workflow=skip-bug-2kczn nodeName=skip-bug-2kczn(0)[0].produce(0) nodeID=skip-bug-2kczn-1925608 loglevel=info
time=2026-06-15T07:44:21.624Z level=INFO msg=getExecutorLogOpts namespace=workflows workflow=skip-bug-2kczn nodeName=skip-bug-2kczn(0)[0].produce(0) nodeID=skip-bug-2kczn-1925608 component=workflow_worker loglevel=info
time=2026-06-15T07:44:21.625Z level=INFO msg="trace parent" nodeName=skip-bug-2kczn(0)[0].produce(0) nodeID=skip-bug-2kczn-1925608 podName=skip-bug-2kczn-produce-1925608 component=workflow_worker startMethod=StartWaitClientRateLimiter actualParent=createWorkflowPod namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.639Z level=INFO msg="add pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:21.639Z level=INFO msg="Created pod" nodeName=skip-bug-2kczn(0)[0].produce(0) nodeID=skip-bug-2kczn-1925608 podName=skip-bug-2kczn-produce-1925608 component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.639Z level=INFO msg="Workflow step group node not yet completed" nodeID=skip-bug-2kczn-1855927883 component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.639Z level=INFO msg="TaskSet Reconciliation" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.639Z level=INFO msg=reconcileAgentPod component=workflow_worker namespace=workflows workflow=skip-bug-2kczn
time=2026-06-15T07:44:21.641Z level=INFO msg="Workflow to be dehydrated" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn "Workflow Size"=3495
time=2026-06-15T07:44:21.641Z level=INFO msg="trace parent" startMethod=StartWaitClientRateLimiter actualParent=persistUpdates namespace=workflows workflow=skip-bug-2kczn component=workflow_worker
time=2026-06-15T07:44:21.645Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:21.666Z level=INFO msg="Workflow update successful" component=workflow_worker namespace=workflows workflow=skip-bug-2kczn resourceVersion=9072959 phase=Running lastSeenVersion=9072954
time=2026-06-15T07:44:21.666Z level=INFO msg="Event occurred" apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeRunning message="Running node skip-bug-2kczn(0)[0]" component=workflow_worker object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow
time=2026-06-15T07:44:21.666Z level=INFO msg="Event occurred" kind=Workflow component=workflow_worker apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeRunning message="Running node skip-bug-2kczn(0)[0].produce" object.name=skip-bug-2kczn object.namespace=workflows fieldPath=""
time=2026-06-15T07:44:21.666Z level=INFO msg="Event occurred" message="Running node skip-bug-2kczn" component=workflow_worker object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeRunning
time=2026-06-15T07:44:21.666Z level=INFO msg="Event occurred" reason=WorkflowNodeRunning message="Running node skip-bug-2kczn(0)" component=workflow_worker object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow apiVersion=argoproj.io/v1alpha1 type=Normal
time=2026-06-15T07:44:21.688Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:22.741Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:23.752Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:24.757Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:26.773Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:28.045Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:31.641Z level=INFO msg="Processing workflow" component=workflow_worker workflow=skip-bug-2kczn phase=Running resourceVersion=9072959 lastSeenVersion=9072954 namespace=workflows
time=2026-06-15T07:44:31.643Z level=INFO msg="Task-result reconciliation" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows numObjs=1
time=2026-06-15T07:44:31.644Z level=INFO msg="node phase changed" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows node=skip-bug-2kczn-4034540945 fromPhase=Running toPhase=Succeeded
time=2026-06-15T07:44:31.644Z level=INFO msg="node finished" finishedAt=2026-06-15T07:44:31.644369085Z node=skip-bug-2kczn-4034540945 component=workflow_worker workflow=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:31.644Z level=ERROR msg="tracing expect node for end node failed" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows error="no existing trace for a running node"
time=2026-06-15T07:44:31.644Z level=INFO msg="Step group node successful" component=workflow_worker workflow=skip-bug-2kczn nodeID=skip-bug-2kczn-1855927883 namespace=workflows
time=2026-06-15T07:44:31.644Z level=INFO msg="node phase changed" component=workflow_worker workflow=skip-bug-2kczn node=skip-bug-2kczn-1855927883 fromPhase=Running toPhase=Succeeded namespace=workflows
time=2026-06-15T07:44:31.644Z level=INFO msg="node finished" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows finishedAt=2026-06-15T07:44:31.644457787Z node=skip-bug-2kczn-1855927883
time=2026-06-15T07:44:31.644Z level=ERROR msg="tracing expect node for end node failed" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows error="no existing trace for a running node"
time=2026-06-15T07:44:31.644Z level=INFO msg="node initialized" node=skip-bug-2kczn-849417838 phase=Running message="" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:31.644Z level=INFO msg="SG Outbound nodes" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows outboundNodeIDs=[skip-bug-2kczn-1925608] childID=skip-bug-2kczn-4034540945
time=2026-06-15T07:44:31.645Z level=INFO msg=Skipping namespace=workflows childNodeName=skip-bug-2kczn(0)[1].consume skipReason="Skipped, empty params" component=workflow_worker workflow=skip-bug-2kczn
time=2026-06-15T07:44:31.645Z level=INFO msg="node initialized" message=" (message: Skipped, empty params)" node=skip-bug-2kczn-3426484886 component=workflow_worker workflow=skip-bug-2kczn namespace=workflows phase=Skipped
time=2026-06-15T07:44:31.645Z level=INFO msg="Step group node successful" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows nodeID=skip-bug-2kczn-849417838
time=2026-06-15T07:44:31.645Z level=INFO msg="node phase changed" toPhase=Succeeded component=workflow_worker workflow=skip-bug-2kczn namespace=workflows node=skip-bug-2kczn-849417838 fromPhase=Running
time=2026-06-15T07:44:31.645Z level=INFO msg="node finished" node=skip-bug-2kczn-849417838 finishedAt=2026-06-15T07:44:31.645338257Z component=workflow_worker workflow=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:31.645Z level=ERROR msg="tracing expect node for end node failed" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows error="no existing trace for a running node"
time=2026-06-15T07:44:31.645Z level=INFO msg="Outbound nodes" namespace=workflows outboundNodeIDs=[skip-bug-2kczn-3426484886] childID=skip-bug-2kczn-3426484886 component=workflow_worker workflow=skip-bug-2kczn
time=2026-06-15T07:44:31.645Z level=INFO msg="Outbound nodes" outbound=[skip-bug-2kczn-3426484886] component=workflow_worker workflow=skip-bug-2kczn namespace=workflows nodeID=skip-bug-2kczn-1456481887
time=2026-06-15T07:44:31.645Z level=INFO msg="node phase changed" node=skip-bug-2kczn-1456481887 fromPhase=Running component=workflow_worker workflow=skip-bug-2kczn namespace=workflows toPhase=Succeeded
time=2026-06-15T07:44:31.645Z level=INFO msg="node finished" namespace=workflows component=workflow_worker workflow=skip-bug-2kczn node=skip-bug-2kczn-1456481887 finishedAt=2026-06-15T07:44:31.645715071Z
time=2026-06-15T07:44:31.645Z level=ERROR msg="tracing expect node for end node failed" namespace=workflows error="no existing trace for a running node" component=workflow_worker workflow=skip-bug-2kczn
time=2026-06-15T07:44:31.646Z level=INFO msg="node phase changed" workflow=skip-bug-2kczn namespace=workflows component=workflow_worker toPhase=Succeeded node=skip-bug-2kczn fromPhase=Running
time=2026-06-15T07:44:31.646Z level=INFO msg="node finished" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows node=skip-bug-2kczn finishedAt=2026-06-15T07:44:31.646744354Z
time=2026-06-15T07:44:31.646Z level=ERROR msg="tracing expect node for end node failed" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows error="no existing trace for a running node"
time=2026-06-15T07:44:31.648Z level=INFO msg="TaskSet Reconciliation" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:31.648Z level=INFO msg=reconcileAgentPod namespace=workflows component=workflow_worker workflow=skip-bug-2kczn
time=2026-06-15T07:44:31.648Z level=INFO msg="updated phase" workflow=skip-bug-2kczn namespace=workflows component=workflow_worker fromPhase=Running toPhase=Succeeded
time=2026-06-15T07:44:31.648Z level=INFO msg="Marking workflow completed" namespace=workflows component=workflow_worker workflow=skip-bug-2kczn
time=2026-06-15T07:44:31.649Z level=INFO msg="Marking workflow as pending archiving" component=workflow_worker workflow=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:31.649Z level=INFO msg="Event occurred" object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowSucceeded message="Workflow completed" component=workflow_worker
time=2026-06-15T07:44:31.652Z level=INFO msg="Workflow to be dehydrated" "Workflow Size"=6420 component=workflow_worker workflow=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:31.653Z level=INFO msg="trace parent" startMethod=StartWaitClientRateLimiter actualParent=persistUpdates component=workflow_worker workflow=skip-bug-2kczn namespace=workflows
time=2026-06-15T07:44:31.674Z level=INFO msg="Event occurred" object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeRunning component=workflow_worker message="Running node skip-bug-2kczn(0)[1]"
time=2026-06-15T07:44:31.674Z level=INFO msg="Event occurred" fieldPath="" component=workflow_worker kind=Workflow apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeSucceeded message="Succeeded node skip-bug-2kczn(0)[1]" object.name=skip-bug-2kczn object.namespace=workflows
time=2026-06-15T07:44:31.674Z level=INFO msg="Workflow update successful" phase=Succeeded lastSeenVersion=9072959 component=workflow_worker workflow=skip-bug-2kczn namespace=workflows resourceVersion=9073060
time=2026-06-15T07:44:31.675Z level=INFO msg="trace parent" actualParent=persistUpdates component=workflow_worker workflow=skip-bug-2kczn namespace=workflows startMethod=StartWaitClientRateLimiter
time=2026-06-15T07:44:31.674Z level=INFO msg="Event occurred" kind=Workflow apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeSucceeded message="Succeeded node skip-bug-2kczn" object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" component=workflow_worker
time=2026-06-15T07:44:31.675Z level=INFO msg="Event occurred" fieldPath="" kind=Workflow apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeSucceeded component=workflow_worker message="Succeeded node skip-bug-2kczn(0)" object.name=skip-bug-2kczn object.namespace=workflows
time=2026-06-15T07:44:31.675Z level=INFO msg="Event occurred" type=Normal reason=WorkflowNodeSucceeded component=workflow_worker message="Succeeded node skip-bug-2kczn(0)[0]" object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow apiVersion=argoproj.io/v1alpha1
time=2026-06-15T07:44:31.675Z level=INFO msg="Event occurred" kind=Workflow apiVersion=argoproj.io/v1alpha1 component=workflow_worker type=Normal reason=WorkflowNodeRunning message="Running node skip-bug-2kczn(0)[0].produce(0)" object.name=skip-bug-2kczn object.namespace=workflows fieldPath=""
time=2026-06-15T07:44:31.675Z level=INFO msg="Event occurred" apiVersion=argoproj.io/v1alpha1 type=Normal component=workflow_worker reason=WorkflowNodeSucceeded message="Succeeded node skip-bug-2kczn(0)[0].produce(0)" object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow
time=2026-06-15T07:44:31.675Z level=INFO msg="Event occurred" object.name=skip-bug-2kczn object.namespace=workflows fieldPath="" kind=Workflow component=workflow_worker apiVersion=argoproj.io/v1alpha1 type=Normal reason=WorkflowNodeSucceeded message="Succeeded node skip-bug-2kczn(0)[0].produce"
time=2026-06-15T07:44:31.685Z level=INFO msg="queueing pod for cleanup after" namespace=workflows podName=skip-bug-2kczn-produce-1925608 action=deletePod after=5s component=pod_controller
time=2026-06-15T07:44:31.689Z level=INFO msg="archiving workflow" namespace=workflows workflow=skip-bug-2kczn uid=a559b540-53a4-49cf-8bb3-766ccf33fb79 component=archive_worker
time=2026-06-15T07:44:31.728Z level=INFO msg="archiving workflow" component=archive_worker namespace=workflows workflow=skip-bug-2kczn uid=a559b540-53a4-49cf-8bb3-766ccf33fb79
time=2026-06-15T07:44:31.728Z level=INFO msg="Queueing workflow for delete due to TTL" phase=Succeeded workflow=workflows/skip-bug-2kczn component=gc_controller addAfter=2m0s
time=2026-06-15T07:44:36.686Z level=INFO msg="cleaning up pod" podName=skip-bug-2kczn-produce-1925608 component=pod_controller key=workflows/skip-bug-2kczn-produce-1925608/deletePod action=deletePod namespace=workflows
time=2026-06-15T07:44:36.686Z level=INFO msg="trace parent" key=workflows/skip-bug-2kczn-produce-1925608/deletePod action=deletePod namespace=workflows actualParent=startupController startMethod=StartWaitClientRateLimiter podName=skip-bug-2kczn-produce-1925608 component=pod_controller
time=2026-06-15T07:44:36.697Z level=INFO msg="update pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:44:36.705Z level=INFO msg="delete pod event" component=pod_controller pod=skip-bug-2kczn-produce-1925608
time=2026-06-15T07:46:32.001Z level=INFO msg="Deleting garbage collected workflow" component=gc_controller workflow=workflows/skip-bug-2kczn
time=2026-06-15T07:46:32.030Z level=INFO msg="Successful request to be deleted" component=gc_controller workflow=workflows/skip-bug-2kczn
Logs from in your workflow's wait container
# NOTE there's nothing useful in the wait container output
$ kubectl logs -n workflows -c wait -l workflows.argoproj.io/workflow=skip-bug-5dd7g,workflow.argoproj.io/phase!=Succeeded
time=2026-06-15T08:04:55.036Z level=INFO msg="No output artifacts" argo=true
time=2026-06-15T08:04:55.037Z level=INFO msg="Saving artifact" argo=true
time=2026-06-15T08:04:55.037Z level=INFO msg="S3 Save" argo=true key=logs/workflows/no-template-used/2026/06-15/skip-bug-5dd7g-skip-bug-5dd7g-produce-3245894687/main.log path=/tmp/argo/outputs/logs/main.log
time=2026-06-15T08:04:55.054Z level=INFO msg="Creating minio client using static credentials" component=s3_client argo=true endpoint=ams3.digitaloceanspaces.com
time=2026-06-15T08:04:55.054Z level=INFO msg="Saving file to s3" key=logs/workflows/no-template-used/2026/06-15/skip-bug-5dd7g-skip-bug-5dd7g-produce-3245894687/main.log path=/tmp/argo/outputs/logs/main.log argo=true component=s3_client endpoint=ams3.digitaloceanspaces.com bucket=infra-dev
time=2026-06-15T08:04:55.091Z level=INFO msg="Save artifact" error=<nil> key=logs/workflows/no-template-used/2026/06-15/skip-bug-5dd7g-skip-bug-5dd7g-produce-3245894687/main.log duration=54.435287ms argo=true artifactName=main-logs
time=2026-06-15T08:04:55.091Z level=INFO msg="not deleting local artifact" argo=true localArtPath=/tmp/argo/outputs/logs/main.log
time=2026-06-15T08:04:55.091Z level=INFO msg="Successfully saved file" argo=true path=/tmp/argo/outputs/logs/main.log
time="2026-06-15T08:04:55.102Z" level=info msg="Alloc=11699 TotalAlloc=21105 Sys=23126 NumGC=5 Goroutines=10"
time=2026-06-15T08:04:55.102Z level=INFO msg="no artifact sidecars to kill" argo=true
Pre-requisites
:latestimage tag (i.e.quay.io/argoproj/workflow-controller:latest) and can confirm the issue still exists on:latest. If not, I have explained why, in detail, in my description below.What happened? What did you expect to happen?
Ran into this when upgrading to 4.0.5. Templating of item parameters in
when:filters is skipped. It appears noitemproperties inwhen:get expanded/templated when usingwithParamitems (see example workflow below as generated by Claude Opus 4.7)I had some help of Claude Opus 4.7 researching the issue, but this is all written up by a human (me, @reinvantveer, unless explicitly stated otherwise.
Found by Claude:
Version(s)
v4.0.5, 7e70af5f218b65d14c0d867e50275265dd07728d83ba5afda6aab43c9cb1d099
Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflow that uses private images.
Logs from the workflow controller
Logs from in your workflow's wait container