{"record":{"id":"839c51b389ffac71","repo":"argoproj/argo-workflows","slug":"expected-parameter-of-the-form-name-value-receiv-839c51","errorCode":null,"errorMessage":"expected parameter of the form: NAME=VALUE. Received: %s","messagePattern":"expected parameter of the form: NAME=VALUE\\. Received: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/util/util.go","lineNumber":319,"sourceCode":"\t\twf.GenerateName = opts.GenerateName\n\t}\n\tif opts.Name != \"\" {\n\t\twf.Name = opts.Name\n\t}\n\tif opts.OwnerReference != nil {\n\t\twf.SetOwnerReferences(append(wf.GetOwnerReferences(), *opts.OwnerReference))\n\t}\n\treturn nil\n}\n\nfunc overrideParameters(wf *wfv1.Workflow, parameters []string) error {\n\tif len(parameters) > 0 {\n\t\tnewParams := make([]wfv1.Parameter, 0)\n\t\tpassedParams := make(map[string]bool)\n\t\tfor _, paramStr := range parameters {\n\t\t\tparts := strings.SplitN(paramStr, \"=\", 2)\n\t\t\tif len(parts) != 2 {\n\t\t\t\treturn fmt.Errorf(\"expected parameter of the form: NAME=VALUE. Received: %s\", paramStr)\n\t\t\t}\n\t\t\tparam := wfv1.Parameter{Name: parts[0], Value: wfv1.AnyStringPtr(parts[1])}\n\t\t\tnewParams = append(newParams, param)\n\t\t\tpassedParams[param.Name] = true\n\t\t}\n\t\tfor _, param := range wf.Spec.Arguments.Parameters {\n\t\t\tif _, ok := passedParams[param.Name]; ok {\n\t\t\t\t// this parameter was overridden via command line\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tnewParams = append(newParams, param)\n\t\t}\n\t\twf.Spec.Arguments.Parameters = newParams\n\t\tif wf.Status.StoredWorkflowSpec != nil {\n\t\t\twf.Status.StoredWorkflowSpec.Arguments.Parameters = newParams\n\t\t}\n\t}\n\treturn nil","sourceCodeStart":301,"sourceCodeEnd":337,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/util/util.go#L301-L337","documentation":"overrideParameters applies -p NAME=VALUE parameter overrides to the workflow's spec.arguments.parameters. Each parameter string must contain '='; SplitN on '=' must yield exactly 2 parts. A token without '=' is rejected with this message showing the offending string.","triggerScenarios":"argo submit/resubmit -p with a value lacking '=', e.g. -p foo (no =value), or an empty string slipping into the parameters list; called from ApplySubmitOpts, FormulateResubmitWorkflow, and createNewRetryWorkflow.","commonSituations":"Shell splitting dropping the value ('-p key= with space'); flags like -p message=\"hello world\" quoted incorrectly so only the key remains; forgetting the value entirely; using ':' instead of '='.","solutions":["Pass parameters as NAME=VALUE: -p key=value (quote values containing spaces)","Check shell quoting: -p \"message=hello world\" not -p message=hello world","Remove empty parameter tokens coming from scripts/loops building the -p list"],"exampleFix":"// before\nargo submit wf.yaml -p message\n// after\nargo submit wf.yaml -p \"message=hello world\"","handlingStrategy":"validation","validationCode":"for _, p := range parameters {\n    if !strings.Contains(p, \"=\") || strings.SplitN(p, \"=\", 2)[0] == \"\" {\n        return fmt.Errorf(\"invalid parameter %q; use NAME=VALUE\", p)\n    }\n}","typeGuard":null,"tryCatchPattern":"err := util.ApplySubmitOpts(wf, opts)\nif err != nil && strings.Contains(err.Error(), \"expected parameter of the form\") {\n    return fmt.Errorf(\"fix -p flag to NAME=VALUE: %w\", err)\n}","preventionTips":["Quote parameters containing spaces or special characters: -p \"key=some value\"","Never pass a bare key without '=value'","When building -p lists programmatically, filter out empty strings before invoking argo"],"tags":["parameters","cli","validation","arguments"],"backgroundTag":"malformed-parameter-argument","analyzedSha":"35bff19146f5a6ada77468c431f2624bd577e373","analyzedAt":"2026-09-03T19:34:35.908Z","contentChangedAt":"2026-09-03T19:34:35.908Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}