{"record":{"id":"b3ded7bca87d4312","repo":"argoproj/argo-workflows","slug":"workflow-level-executor-plugins-are-disabled-in-th","errorCode":null,"errorMessage":"workflow-level executor plugins are disabled in the controller. To enable them, set the environment variable ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS=true","messagePattern":"workflow-level executor plugins are disabled in the controller\\. To enable them, set the environment variable ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS=true","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/controller/agent.go","lineNumber":308,"sourceCode":"\t\treturn nil, fmt.Errorf(\"failed to create Agent pod: %w\", err)\n\t}\n\tlog.Info(ctx, \"Created Agent pod\")\n\treturn created, nil\n}\n\nfunc (woc *wfOperationCtx) getExecutorPlugins(ctx context.Context) ([]apiv1.Container, []apiv1.Volume, error) {\n\tvar sidecars []apiv1.Container\n\tvar volumes []apiv1.Volume\n\tnamespaces := map[string]bool{} // de-dupes executorPlugins when their namespaces are the same\n\tnamespaces[woc.controller.namespace] = true\n\tnamespaces[woc.wf.Namespace] = true\n\twFPlugins, err := woc.execWf.Spec.AsExecutorPluginSpec()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tisGetPluginsFromWorkflow := len(wFPlugins) > 0\n\tif isGetPluginsFromWorkflow && !woc.controller.enableWorkflowLevelExecutorPlugins {\n\t\treturn nil, nil, fmt.Errorf(\n\t\t\t\"workflow-level executor plugins are disabled in the controller. To enable them, set the environment variable ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS=true\",\n\t\t)\n\t}\n\tif isGetPluginsFromWorkflow {\n\t\tfor _, plugin := range wFPlugins {\n\t\t\tsidecar, pluginVolume, err := woc.getExecutorPluginComponents(ctx, plugin)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t\tsidecars = append(sidecars, *sidecar)\n\t\t\tif pluginVolume != nil {\n\t\t\t\tvolumes = append(volumes, *pluginVolume)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor namespace := range namespaces {\n\t\t\tfor _, plug := range woc.controller.executorPlugins[namespace] {\n\t\t\t\tsidecar, pluginVolume, err := woc.getExecutorPluginComponents(ctx, *plug)","sourceCodeStart":290,"sourceCodeEnd":326,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/controller/agent.go#L290-L326","documentation":"Workflow-level executor plugins (defined in workflow.spec.executor.plugins) require the controller to opt in via the ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS environment variable. getExecutorPlugins detects that the workflow declares plugin containers but the controller was started without this flag, and refuses to build the agent pod with a descriptive error.","triggerScenarios":"Submitting a workflow whose spec includes `executor: { plugins: [...] }` while the workflow-controller deployment lacks env `ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS=true`; the controller then fails the workflow during agent pod construction.","commonSituations":"Upgrading Argo and adopting executor plugins without updating the controller deployment; plugins enabled in one cluster/profile but not another (e.g. staging vs prod controller helm values differ); copying an example workflow that uses plugins into a default-configured cluster.","solutions":["Set the env var on the workflow-controller: add `ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS: \"true\"` to its container env and restart the controller","If using Helm/manifests, update the controller values/env config accordingly and redeploy","Alternatively remove the executor plugins from the workflow spec if they are not needed","Confirm with `kubectl set env deploy/workflow-controller --list -n argo` that the flag took effect"],"exampleFix":"# before (controller env)\nenv: []\n# after (controller env)\nenv:\n- name: ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS\n  value: \"true\"","handlingStrategy":"validation","validationCode":"// before submitting a workflow with executor plugins\nif pluginsDeclared(wf) && os.Getenv(\"ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS\") != \"true\" {\n    return errors.New(\"controller must set ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS=true\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set ARGO_WORKFLOW_LEVEL_EXECUTOR_PLUGINS=true in controller deployment env for all clusters using plugins","Keep controller helm values consistent across environments","Lint workflows against cluster capabilities before submit"],"tags":["configuration","executor-plugins","env-var","argo-workflows"],"backgroundTag":"feature-disabled-by-env-var","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"}