argoproj/argo-workflows · warning

CodeNotImplemented

CodeNotImplemented

Error message

IsDirectory currently unimplemented for http

What it means

The HTTP artifact driver does not implement IsDirectory; calling it always returns a CodeNotImplemented error. HTTP artifacts are single objects (no listing/directory semantics), so Argo cannot determine directory-ness for them.

Source

Thrown at workflow/artifacts/http/http.go:193

	}
	req, url, err := h.buildPutRequest(ctx, reader, outputArtifact)
	if err != nil {
		return err
	}
	return h.doPutRequest(req, url, "saving stream")
}

// Delete is unsupported for the http artifacts
func (h *ArtifactDriver) Delete(ctx context.Context, s *wfv1.Artifact) error {
	return common.ErrDeleteNotSupported
}

func (h *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 (h *ArtifactDriver) IsDirectory(ctx context.Context, artifact *wfv1.Artifact) (bool, error) {
	return false, errors.New(errors.CodeNotImplemented, "IsDirectory currently unimplemented for http")
}

View on GitHub (pinned to 35bff19146)

Solutions

  1. Treat http artifacts as files; do not attempt directory browsing.
  2. Serve directory trees via a supported driver (S3/GCS/raw) instead.
  3. Patch the driver to implement IsDirectory via a HEAD request + content-type/Content-Disposition heuristic if needed.
Defensive patterns

Strategy: fallback

Type guard

// http artifacts never support IsDirectory
if art.HTTP != nil {
    // skip IsDirectory; treat as file
}

Try / catch

isDir, err := driver.IsDirectory(ctx, art)
if err != nil && strings.Contains(err.Error(), "currently unimplemented") {
    isDir = false
}

Prevention

When it happens

Trigger: Calling IsDirectory(ctx, artifact) on an http artifact — typically the artifact server or UI trying to browse/expand the artifact as a directory tree.

Common situations: Generic artifact endpoints calling IsDirectory for any driver type; user exposing an HTTP artifact through the artifact server and clicking into it in the UI.

Related errors


AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03). Data as JSON: /api/errors/c0e0b95b8275b154. Report an issue: GitHub.