GoogleContainerTools/skaffold · error
exiting dev mode because first render failed: %w
Error message
exiting dev mode because first render failed: %w
What it means
Fires in dev-mode's Dev loop when the initial render fails and --keep-running-on-failure is not enabled, so skaffold exits instead of waiting for the user to fix the error. Wraps the render error (manifest generation/rendering problem) and marks the dev loop as failed in the render phase.
Source
Thrown at pkg/skaffold/runner/dev.go:323
defer r.deployer.GetDebugger().Stop()
// Logs should be retrieved up to just before the deploy
r.deployer.GetLogger().SetSince(time.Now())
// First render
manifests, err := r.Render(ctx, out, r.Builds, false)
for ; err != nil && r.runCtx.Opts.KeepRunningOnFailure; manifests, err = r.Render(ctx, out, r.Builds, false) {
log.Entry(ctx).Warnf("Failed to render :%v, please fix the error and press any key to continue.", err)
errT := term.WaitForKeyPress()
if errT != nil {
return errT
}
}
if err != nil {
event.DevLoopFailedInPhase(r.devIteration, constants.Render, err)
eventV2.TaskFailed(constants.DevLoop, err)
endTrace()
return fmt.Errorf("exiting dev mode because first render failed: %w", err)
}
// First deploy
err = r.Deploy(ctx, out, r.Builds, manifests)
for ; err != nil && r.runCtx.Opts.KeepRunningOnFailure; err = r.Deploy(ctx, out, r.Builds, manifests) {
log.Entry(ctx).Warnf("Failed to deploy :%v, please fix the error and press any key to continue.", err)
errT := term.WaitForKeyPress()
if errT != nil {
return errT
}
// The previous Render Stage could succeed even for kubernetes resource with unknown fields, this will lead to failure in Deploy Stage
// users need to fix the problems in their manifests, and skaffold needs to re-render them before re-running Deploy Stage in this case.
for manifests, err = r.Render(ctx, out, r.Builds, false); err != nil; manifests, err = r.Render(ctx, out, r.Builds, false) {
log.Entry(ctx).Warnf("Failed to Render, please fix the error and press any key to continue. %v", err)
errT := term.WaitForKeyPress()
if errT != nil {
return errT
}View on GitHub (pinned to a1189de023)
Solutions
- Read the wrapped render error to find the failing manifest/helm/kustomize step
- Fix the YAML/chart/kustomize overlay error
- Validate manifests with `skaffold render` standalone before entering dev
- Check helm values files and kustomization.yaml paths
Example fix
// before bases: - ../missing-base // after bases: - ../base
Defensive patterns
Strategy: validation
Validate before calling
// pre-validate render before dev
if (runCmd('skaffold render --output /tmp/render-check.yaml').code !== 0) exit('render fails; fix manifests first') Type guard
function renderersValid(cfg) {
const r = cfg.render || {}
if (r.helm && !r.helm.releases) return false
if (r.kustomize && !r.kustomize.paths) return false
return true
} Try / catch
err := r.Dev(ctx, out, dryRun)
if err != nil && strings.Contains(err.Error(), "first render failed") {
log.Fatalf("fix render: %v", err) // manifests must be fixed before dev can run
} Prevention
- Run `skaffold render` standalone before dev on manifest changes
- Keep kustomize bases/paths relative and committed
- Validate helm chart values with `helm template` first
- Lint YAML files in CI to catch syntax errors early
When it happens
Trigger: Dev(): after build/test, r.Render fails on the first iteration (KeepRunningOnFailure retries exhausted or disabled), constants.Render phase marked failed and dev exits.
Common situations: Helm chart values errors; kustomize overlay referencing a missing file/base; raw manifests with invalid YAML or missing image placeholder; unresolvable lifecycleHook render commands.
Related errors
- rendering manifests: %w
- the length of stdout should be greater than 0 when using ren
- could not expand the glob raw manifests: %w
- exiting dev mode because first build failed: %w
- exiting dev mode because test failed after first build: %w
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/98fc1923db489433.
Report an issue: GitHub.