argoproj/argo-workflows · critical
Artifact driver validation failed: The following artifact dr
Error message
Artifact driver validation failed: The following artifact driver images are not present in the server pod: %v. Please ensure all artifact driver images are included in the argo-server pod.
What it means
At startup the argo-server validates that the container images required by each configured artifact driver are actually present in the server pod (via the pod spec/status). If one or more driver images are missing, it returns this error and refuses to start, since artifact operations would fail at runtime.
Source
Thrown at server/apiserver/argoserver.go:599
return nil
}
// Get missing images
images := make([]string, 0, len(cfg.ArtifactDrivers))
for _, driver := range cfg.ArtifactDrivers {
images = append(images, driver.Image)
}
for _, container := range pod.Spec.Containers {
images = slices.DeleteFunc(images, func(image string) bool {
return image == container.Image
})
}
if len(images) > 0 {
errorMsg := fmt.Sprintf("Artifact driver validation failed: The following artifact driver images are not present in the server pod: %v. Please ensure all artifact driver images are included in the argo-server pod.", images)
log.Error(ctx, errorMsg)
return errors.New(errorMsg)
}
log.WithField("driverCount", len(cfg.ArtifactDrivers)).Info(ctx, "Artifact driver validation passed: All configured artifact driver images are present in the server pod")
return nil
}
type registerFunc func(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) error
// mustRegisterGWHandler is a convenience function to register a gateway handler
func mustRegisterGWHandler(ctx context.Context, register registerFunc, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) {
err := register(ctx, mux, endpoint, opts)
if err != nil {
panic(err)
}
}
// checkServeErr checks the error from a .Serve() call to decide if it was a graceful shutdown
func (as *argoServer) checkServeErr(ctx context.Context, name string, err error) {View on GitHub (pinned to 35bff19146)
Solutions
- Inspect the image list in the error and add the missing image(s) to the argo-server pod spec (Helm values / kustomize patch).
- Use the official argo-server image for the release, which includes all expected driver images.
- Disable/remove drivers from config that you don't use so their images aren't required.
- If using a custom image, rebuild it including all driver images required by your configuration.
Example fix
// before: custom server pod spec without driver images
containers:
- name: argo-server
image: my-registry/argo-server-slim:v4
// after: include the required driver images
initContainers/containers += images reported missing, e.g.
- name: argo-server
image: quay.io/argoproj/argocli:v4.0.0 Defensive patterns
Strategy: validation
Validate before calling
// verify the argo-server image includes required driver images before rollout
imgs, _ := clientset.CoreV1().Pods(ns).Get(ctx, "argo-server", metav1.GetOptions{})
_ = imgs // compare pod spec images against the driver list in the error before upgrading Prevention
- Use official argocli images which bundle all driver images
- After enabling a driver in config, confirm its image exists in the pod spec
- Pin Helm/Kustomize values that keep driver images during upgrades
- Test server startup on a staging cluster after image changes
When it happens
Trigger: Starting argo-server where cfg.ArtifactDrivers lists drivers whose expected sidecar/init images are not among the pod's images — e.g. custom argo-server images that dropped driver images, trimmed distributions, or config enabling a driver whose image was never added to the pod template.
Common situations: Building a slim/custom argo-server image without all driver images baked in; upgrading Argo and the new driver images weren't added to the Helm/Kustomize pod spec; enabling an experimental driver in config on a stock deployment that doesn't ship it.
Related errors
- Artifact driver connection validation failed: %v
- failed to re-enter working directory %q after staging input
- failed to stat input artifact %q at %s: %w
- failed to create parent directory for artifact %q at %s: %w
- failed to stat artifact path %q at %s: %w
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/083360cefe39c313.
Report an issue: GitHub.