GoogleContainerTools/skaffold · error
watching files for renderer: %w
Error message
watching files for renderer: %w
What it means
Dev() registers the renderer's manifest dependencies (e.g. kustomize/helm files) with the file monitor so edits trigger a redeploy. Failure emits DEVINIT_REGISTER_RENDER_DEPS and returns 'watching files for renderer'. This aborts dev mode during initialization.
Source
Thrown at pkg/skaffold/runner/dev.go:433
func() ([]string, error) { return r.tester.TestDependencies(ctx, artifact) },
func(filemon.Events) { r.changeSet.AddRetest(artifact) },
); err != nil {
event.DevLoopFailedWithErrorCode(r.devIteration, proto.StatusCode_DEVINIT_REGISTER_TEST_DEPS, err)
eventV2.TaskFailed(constants.DevLoop, err)
endTrace()
return fmt.Errorf("watching test files: %w", err)
}
}
// Watch render configuration
if err := r.monitor.Register(
r.renderer.ManifestDeps,
func(filemon.Events) { r.changeSet.Redeploy() },
); err != nil {
event.DevLoopFailedWithErrorCode(r.devIteration, proto.StatusCode_DEVINIT_REGISTER_RENDER_DEPS, err)
eventV2.TaskFailed(constants.DevLoop, err)
endTrace()
return fmt.Errorf("watching files for renderer: %w", err)
}
// Watch deployment configuration
if err := r.monitor.Register(
r.deployer.Dependencies,
func(filemon.Events) { r.changeSet.Redeploy() },
); err != nil {
event.DevLoopFailedWithErrorCode(r.devIteration, proto.StatusCode_DEVINIT_REGISTER_DEPLOY_DEPS, err)
eventV2.TaskFailed(constants.DevLoop, err)
endTrace()
return fmt.Errorf("watching files for deployer: %w", err)
}
// Watch Skaffold configuration
if err := r.monitor.Register(
func() ([]string, error) { return []string{r.runCtx.ConfigurationFile()}, nil },
func(filemon.Events) { r.changeSet.Reload() },
); err != nil {View on GitHub (pinned to a1189de023)
Solutions
- Verify the manifest sources (kustomization.yaml / helm chart paths) exist and are readable
- Run `skaffold render` separately to surface the manifest resolution error clearly
- Fix the `manifests:`/`render:` config in skaffold.yaml
- Raise inotify watch limits if registration fails due to watcher exhaustion
Example fix
// before
manifests:
kustomize:
paths: ['k8s/overlays/dev'] # overlay doesn't exist
// after
manifests:
kustomize:
paths: ['k8s/overlays/local'] Defensive patterns
Strategy: validation
Validate before calling
// validate manifest sources resolve before dev
for _, p := range renderPaths {
if _, err := os.Stat(p); err != nil {
return fmt.Errorf("render dep missing: %s", p)
}
}
// and check kustomize builds: exec "kustomize build <dir>" Prevention
- Commit kustomization.yaml/helm charts referenced by render config
- Run `skaffold render` in CI to catch manifest breakage early
- Avoid remote kustomize bases that require network at dev time
- Pin helm chart versions
When it happens
Trigger: `r.monitor.Register(r.renderer.ManifestDeps, ...)` errors — ManifestDeps() fails to enumerate manifest inputs (missing kustomization.yaml, unreadable helm chart, bad render config) or the watcher cannot register the paths.
Common situations: kustomization.yaml missing or malformed references; helm chart path in skaffold.yaml incorrect; render-remote manifests unreachable (remote kustomize base); permission problems.
Related errors
- rendering manifests: %w
- Failed to render release
- rendering manifests: %w
- loading artifacts: %w
- executing build: %w
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/3010959eee2dfe04.
Report an issue: GitHub.