argoproj/argo-workflows · error
failed to create plugin driver for %s: %w
Error message
failed to create plugin driver for %s: %w
What it means
When an artifact uses the Plugin type, newDriver connects to the artifact-plugin socket (plugin.NewDriver) and wraps any failure as 'failed to create plugin driver for <name>: <cause>'. The underlying cause is typically a bad socket path, connection timeout, or failed handshake.
Source
Thrown at workflow/artifacts/artifacts.go:285
return nil, err
}
accountKey = accountKeyBytes
}
driver := azure.ArtifactDriver{
AccountKey: accountKey,
Container: art.Azure.Container,
Endpoint: art.Azure.Endpoint,
UseSDKCreds: art.Azure.UseSDKCreds,
}
return &driver, nil
}
if art.Plugin != nil {
// Get the socket path from the driver configuration
// This would typically come from the workflow controller configuration
driver, err := plugin.NewDriver(ctx, art.Plugin.Name, art.Plugin.Name.SocketPath(), art.Plugin.ConnectionTimeout())
if err != nil {
return nil, fmt.Errorf("failed to create plugin driver for %s: %w", art.Plugin.Name, err)
}
return driver, nil
}
return nil, ErrUnsupportedDriver
}
View on GitHub (pinned to 35bff19146)
Solutions
- Check the artifact plugin is running (kubectl get pods) and its socket path matches artifactDrivers.plugin.socketPath in the controller configmap.
- Increase artifactDrivers.plugin.connectionTimeout if the plugin is slow to start.
- Inspect the wrapped cause (%w) in the full error message and controller logs for the real failure.
- Verify plugin API compatibility between the plugin version and the Argo controller version.
Example fix
// before — controller configmap
artifactDrivers:
plugin:
address: /var/run/argo/artifact-plugin.sock
timeout: 10s
// after — socket matches deployed plugin
artifactDrivers:
plugin:
address: /var/run/argo/artifact-plugin.sock
timeout: 30s Defensive patterns
Strategy: try-catch
Validate before calling
cfg, err := clientset.CoreV1().ConfigMaps(ns).Get(ctx, "workflow-controller-configmap", metav1.GetOptions{})
// verify artifactDrivers.plugin.socketPath is set and the plugin pod is Running before submit Try / catch
driver, err := artifacts.NewDriver(ctx, art, ri)
var perr error
if errors.As(err, &perr) && strings.Contains(err.Error(), "failed to create plugin driver") {
logger.Error(ctx, "artifact plugin unreachable; check plugin pod and socketPath config", err)
return nil
} Prevention
- Health-check the artifact plugin before deploying workflows that use Plugin artifacts.
- Keep socketPath and connectionTimeout in one reviewed configmap.
- Monitor the plugin pod with liveness probes so failures surface early.
When it happens
Trigger: art.Plugin != nil and plugin.NewDriver fails: plugin socket path missing/wrong in the controller config (artifactDrivers.plugin), the plugin container is not running, or the connection timeout elapses before the plugin responds.
Common situations: Plugin not deployed or crashed in the controller namespace; socketPath misconfigured in the artifact plugin config; plugin version incompatible with the controller; network policy blocking the Unix socket/TCP endpoint.
Related errors
- plugin %s stream error: %s
- plugin %s save failed: %w
- plugin %s save failed: %s
- plugin %s save stream failed to open: %w
- plugin %s save stream failed %s: %w
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/158f524d6323b05f.
Report an issue: GitHub.