argoproj/argo-workflows · warning
ListObjects is currently not supported for this artifact typ
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.
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)
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.