GoogleContainerTools/skaffold · error

creating watch trigger: %w

Error message

creating watch trigger: %w

What it means

NewForConfig creates a file-watch trigger (trigger.NewTrigger) that decides when redeploys fire during dev. If the trigger cannot be constructed (e.g. no valid trigger mode resolved from intents/watch settings), the error is wrapped as "creating watch trigger: %w" and runner creation aborts.

Source

Thrown at pkg/skaffold/runner/new.go:168

		}
		return withPipelineBuildHooks(pb, p.Build.Hooks), nil
	})
	if err != nil {
		endTrace(instrumentation.TraceEndError(err))
		return nil, fmt.Errorf("creating builder: %w", err)
	}

	builder, tester, renderer, deployer = WithTimings(builder, tester, renderer, deployer, runCtx.CacheArtifacts())
	if runCtx.Notification() {
		deployer = WithNotification(deployer)
	}

	monitor := filemon.NewMonitor()
	intents, intentChan := setupIntents(runCtx)
	rtrigger, err := trigger.NewTrigger(runCtx, intents.IsAnyAutoEnabled)
	if err != nil {
		endTrace(instrumentation.TraceEndError(err))
		return nil, fmt.Errorf("creating watch trigger: %w", err)
	}

	rbuilder := NewBuilder(builder, tagger, platforms, artifactCache, runCtx)
	return &SkaffoldRunner{
		Builder:            *rbuilder,
		Pruner:             Pruner{Builder: builder},
		renderer:           renderer,
		tester:             tester,
		deployer:           deployer,
		platforms:          platforms,
		monitor:            monitor,
		listener:           NewSkaffoldListener(monitor, rtrigger, sourceDependencies, intentChan),
		artifactStore:      store,
		sourceDependencies: sourceDependencies,
		labeller:           labeller,
		cache:              artifactCache,
		runCtx:             runCtx,
		intents:            intents,

View on GitHub (pinned to a1189de023)

Solutions

  1. Read the wrapped cause after 'creating watch trigger:'
  2. Check --auto-build/--auto-sync/--auto-deploy flag combinations; at least one auto trigger must be resolvable or provide manual triggers
  3. Fix the `watch`/trigger settings in skaffold.yaml dev section
  4. Simplify flags to defaults to isolate the invalid combination

Example fix

// before: conflicting flags
skaffold dev --auto-build=false --auto-deploy=false --auto-sync=false
// after: leave at least one auto trigger enabled or use explicit trigger config
skaffold dev --auto-build=true
Defensive patterns

Strategy: validation

Validate before calling

if !(autoBuild || autoDeploy || autoSync) { return errors.New("at least one auto trigger must be enabled for dev loop") }

Prevention

When it happens

Trigger: Calling runner.NewForConfig when trigger.NewTrigger(runCtx, intents.IsAnyAutoEnabled) returns an error — typically when neither auto-trigger is enabled nor a valid trigger configuration (watch/polling settings) can be resolved.

Common situations: Contradictory dev-loop flags (e.g. --auto-build=false with no manual trigger support), invalid watch settings in skaffold.yaml, or run-context intents misconfigured by CLI flag combinations.

Related errors


AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05). Data as JSON: /api/errors/ba18a18e6ad2a24f. Report an issue: GitHub.