{"record":{"id":"aef2f5a108bc4af2","repo":"argoproj/argo-workflows","slug":"no-plugin-executed-the-template","errorCode":null,"errorMessage":"no plugin executed the template","messagePattern":"no plugin executed the template","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/executor/agent.go","lineNumber":389,"sourceCode":"\t\t\t\tNamespace: ae.Namespace,\n\t\t\t\tUID:       ae.workflowUID,\n\t\t\t},\n\t\t},\n\t\tTemplate: &tmpl,\n\t}\n\treply := &executorplugins.ExecuteTemplateReply{}\n\tfor _, plug := range ae.plugins {\n\t\tif err := plug.ExecuteTemplate(ctx, args, reply); err != nil {\n\t\t\treturn 0, err\n\t\t} else if reply.Node != nil {\n\t\t\t*result = *reply.Node\n\t\t\tif reply.Node.Phase == wfv1.NodeSucceeded {\n\t\t\t\treturn 0, nil\n\t\t\t}\n\t\t\treturn reply.GetRequeue(), nil\n\t\t}\n\t}\n\treturn 0, fmt.Errorf(\"no plugin executed the template\")\n}\n\nfunc IsWorkflowCompleted(wts *wfv1.WorkflowTaskSet) bool {\n\treturn wts.Labels[common.LabelKeyCompleted] == \"true\"\n}\n","sourceCodeStart":371,"sourceCodeEnd":395,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/executor/agent.go#L371-L395","documentation":"executePluginTemplate iterates over every plugin registered with the agent and asks each to ExecuteTemplate. A plugin 'executes' the template by populating reply.Node. If every plugin returns without error but leaves reply.Node nil, no plugin claimed the template and this error is thrown.","triggerScenarios":"A template with tmpl.Plugin != nil is processed but no loaded executor plugin implements/claims it — e.g. the plugin named in the template is not deployed, the plugin socket is missing so the plugin list is empty, or the plugin's ExecuteTemplate returns success without setting reply.Node.","commonSituations":"Plugin CRD/configmap not applied to the namespace; workflow-controller's plugin configuration (workflow-controller-configmap plugins:) missing the plugin; plugin binary not running so the agent has zero plugins loaded; plugin matches no templates by its selection rules.","solutions":["Verify the plugin is deployed (ConfigMap/other) and listed in the controller config so the agent loads it","Check plugin logs / agent logs to see whether the plugin received the ExecuteTemplate call","Ensure the template's plugin: field references a plugin that exists and its ExecuteTemplate returns a non-nil reply.Node","Test the plugin independently (it must set reply.Node even on failure) — returning nil Node means 'did not execute'"],"exampleFix":"// inside a plugin's ExecuteTemplate — before (returns success but no node)\nfunc (p *MyPlugin) ExecuteTemplate(ctx context.Context, args plug.ExecuteTemplateArgs, reply *plug.ExecuteTemplateReply) error {\n\treturn nil\n}\n// after\nfunc (p *MyPlugin) ExecuteTemplate(ctx context.Context, args plug.ExecuteTemplateArgs, reply *plug.ExecuteTemplateReply) error {\n\treply.Node = &wfv1.NodeResult{Phase: wfv1.NodeSucceeded, Message: \"done\"}\n\treturn nil\n}","handlingStrategy":"type-guard","validationCode":"// Verify the plugin is installed and loaded before running workflows that use it:\n// kubectl get configmap -n <ns> | grep my-plugin\n// and confirm it appears in workflow-controller-configmap 'plugins:' list","typeGuard":"// A plugin claims a template only if it populates reply.Node:\nif reply.Node == nil {\n\t// plugin did not execute the template — treat as unclaimed\n}","tryCatchPattern":"result, err := agentProcessTask(ctx, tmpl)\nif err != nil {\n\tif strings.Contains(err.Error(), \"no plugin executed the template\") {\n\t\t// fall back or surface actionable message: check plugin deployment/config\n\t}\n\treturn err\n}","preventionTips":["Deploy the plugin ConfigMap/binary in every namespace that uses it","Register plugins in the workflow-controller configmap and restart the controller","Ensure the plugin always sets reply.Node in ExecuteTemplate, even on failure","Test plugins with a minimal template before production use"],"tags":["plugin","executor","agent","missing-plugin"],"backgroundTag":"plugin-not-loaded","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"}