GoogleContainerTools/skaffold · error
loading manifests: %w
Error message
loading manifests: %w
What it means
Fires in `skaffold filter` when the Kubernetes manifests passed on stdin (or produced by a post-renderer) cannot be parsed by manifest.Load. Wraps the underlying parse failure, typically malformed YAML, non-manifest documents, or a crashing post-renderer producing invalid output.
Source
Thrown at cmd/skaffold/app/cmd/filter.go:94
stdoutPipe, err := cmd.StdoutPipe()
if err != nil {
return fmt.Errorf("running post-renderer: %w", err)
}
err = cmd.Start()
if err != nil {
return fmt.Errorf("running post-renderer: %w", err)
}
manifestList, err = manifest.Load(stdoutPipe)
if err != nil {
return fmt.Errorf("loading post-renderer result: %w", err)
}
stdoutPipe.Close()
} else {
manifestList, err = manifest.Load(os.Stdin)
}
if err != nil {
return fmt.Errorf("loading manifests: %w", err)
}
var ass applysetters.ApplySetters
manifestOverrides := pkgutil.EnvSliceToMap(opts.ManifestsOverrides, "=")
for k, v := range manifestOverrides {
ass.Setters = append(ass.Setters, applysetters.Setter{Name: k, Value: v})
}
manifestList, err = ass.Apply(ctx, manifestList)
if err != nil {
return err
}
allow, deny := getTransformList(configs)
manifestList, err = manifestList.SetLabels(pkgutil.EnvSliceToMap(opts.CustomLabels, "="),
manifest.NewResourceSelectorLabels(allow, deny))
if err != nil {
return err
}
manifestList, err = manifestList.ReplaceImages(ctx, buildArtifacts, manifest.NewResourceSelectorImages(allow, deny))View on GitHub (pinned to a1189de023)
Solutions
- Pipe valid manifest YAML into the command: kustomize build . | skaffold filter ...
- Check that the upstream command in the pipeline succeeded
- Validate the YAML independently (e.g. kubectl apply --dry-run=client -f -)
- Inspect the wrapped error for the exact parse problem
Example fix
// before skaffold filter # no stdin, empty input // after kustomize build . | skaffold filter
Defensive patterns
Strategy: validation
Validate before calling
// before running skaffold filter
info, _ := os.Stdin.Stat()
if (info.Mode() & os.ModeCharDevice) != 0 {
return fmt.Errorf("skaffold filter requires manifests piped on stdin")
} Try / catch
if err != nil {
return fmt.Errorf("loading manifests: %w", err)
} Prevention
- Always pipe valid manifest YAML into skaffold filter
- Check upstream pipeline commands succeeded (set -o pipefail in bash)
- Dry-run the YAML with kubectl before filtering
When it happens
Trigger: --post-renderer is not set (or the post-renderer branch completed) and manifest.Load(os.Stdin) returns an error because stdin contains invalid/empty YAML, wrapped at filter.go:94.
Common situations: Running `skaffold filter` without piping manifests into stdin, upstream command in a pipe failed silently, or the upstream output is not valid Kubernetes YAML.
Related errors
- loading post-renderer result: %w
- cannot find provided file %s
- unable to open provided file %s
- DEPLOY_READ_MANIFEST_ERR
- failed to load manifest
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/6558f049b3d87abf.
Report an issue: GitHub.