argoproj/argo-workflows · warning
ListObjects is currently not supported for this artifact…
Error message
ListObjects is currently not supported for this artifact type, but it will be in a future version
What it means
The raw artifact driver (inline data stored in the workflow spec via artifacts[].raw.data) does not implement ListObjects; this stub always returns this error. ListObjects is only used for artifact directory listing features (e.g. recursive artifact dir operations), which are meaningless for inline raw content.
Solutions
- Don't call ListObjects for raw artifacts — raw artifacts hold inline data, not storage keys; read artifact.Raw.Data instead
- If you need listable storage, switch the artifact to a real backend driver (s3, gcs, azure, etc.)
- If you control the calling code, special-case raw artifacts and skip listing logic
- Track/upgrade Argo Workflows versions — the message notes this may be implemented in a future version
Example fix
// before: generic listing for any artifact
keys, err := driver.ListObjects(ctx, artifact)
// after: guard against unsupported drivers
if artifact.Raw != nil {
return fmt.Errorf("raw artifacts have no keys; use artifact.Raw.Data")
}
keys, err := driver.ListObjects(ctx, artifact) Defensive patterns
Strategy: type-guard
Validate before calling
func supportsListObjects(a *wfv1.Artifact) bool {
return a != nil && a.Raw == nil // raw artifacts never support ListObjects
} Type guard
func isRawArtifact(a *wfv1.Artifact) bool {
return a != nil && a.Raw != nil
}
// usage
if isRawArtifact(artifact) {
return errors.New("ListObjects not supported for raw artifacts; read Raw.Data instead")
} Prevention
- Never call ListObjects on raw artifacts; they carry inline data with no storage keys
- Branch on artifact type (artifact.Raw != nil) before generic artifact-directory operations
- Use a real storage backend (s3/gcs/azure) if you need key enumeration
When it happens
Trigger: Any code path invoking ListObjects on an artifact whose artifactDriver is raw — e.g. artifact GC / artifact directory traversal over a raw artifact, or user-facing operations that enumerate artifact keys against a raw artifact.
Common situations: Attempting artifact directory listing or key enumeration on inline raw artifacts; tooling that generically calls ListObjects on all artifact types; feature requests tracked upstream noting ListObjects is not yet implemented for raw.
Related errors
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/629997edc1b6c618.
Report an issue: GitHub.
Appendix: source
Thrown at workflow/artifacts/raw/raw.go:53
}
// Save is unsupported for raw output artifacts
func (a *ArtifactDriver) Save(ctx context.Context, path string, artifact *wfv1.Artifact) error {
return errors.Errorf(errors.CodeBadRequest, "Raw output artifacts unsupported")
}
// SaveStream is unsupported for raw output artifacts
func (a *ArtifactDriver) SaveStream(ctx context.Context, reader io.Reader, artifact *wfv1.Artifact) error {
return errors.Errorf(errors.CodeBadRequest, "Raw output artifacts unsupported")
}
// Delete is unsupported for raw output artifacts
func (a *ArtifactDriver) Delete(ctx context.Context, s *wfv1.Artifact) error {
return common.ErrDeleteNotSupported
}
func (a *ArtifactDriver) ListObjects(ctx context.Context, artifact *wfv1.Artifact) ([]string, error) {
return nil, fmt.Errorf("ListObjects is currently not supported for this artifact type, but it will be in a future version")
}
func (a *ArtifactDriver) IsDirectory(ctx context.Context, artifact *wfv1.Artifact) (bool, error) {
return false, errors.New(errors.CodeNotImplemented, "IsDirectory currently unimplemented for raw")
}
View on GitHub (pinned to 35bff19146)