GoogleContainerTools/skaffold · info

configuration changed

Error message

configuration changed

What it means

ErrorConfigurationChanged is a sentinel error (errors.Is-comparable) returned by the dev loop when skaffold detects that skaffold.yaml changed on disk. It is not a failure: cmd/dev.go catches it with errors.Is and restarts the dev cycle with reloaded configuration instead of exiting.

Source

Thrown at pkg/skaffold/runner/runner.go:41

	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/build"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/build/cache"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/deploy"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/deploy/label"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/filemon"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/graph"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/kubernetes/manifest"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/platform"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/render/renderer"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/runner/runcontext"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/schema/latest"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/schema/util"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/test"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/verify"
)

// ErrorConfigurationChanged is a special error that's returned when the skaffold configuration was changed.
var ErrorConfigurationChanged = errors.New("configuration changed")

// Runner is responsible for running the skaffold build, test and deploy config.
type Runner interface {
	Apply(context.Context, io.Writer) error
	ApplyDefaultRepo(tag string) (string, error)
	Build(context.Context, io.Writer, []*latest.Artifact) ([]graph.Artifact, error)
	Cleanup(context.Context, io.Writer, bool, manifest.ManifestListByConfig, string) error
	Dev(context.Context, io.Writer, []*latest.Artifact) error
	// Deploy and DeployAndLog: Do they need the `graph.Artifact` and could use render output.
	Deploy(context.Context, io.Writer, []graph.Artifact, manifest.ManifestListByConfig) error
	DeployAndLog(context.Context, io.Writer, []graph.Artifact, manifest.ManifestListByConfig) error
	GeneratePipeline(context.Context, io.Writer, []util.VersionedConfig, []string, string) error
	HasBuilt() bool
	DeployManifests() manifest.ManifestListByConfig
	Prune(context.Context, io.Writer) error

	Render(ctx context.Context, out io.Writer, builds []graph.Artifact, offline bool) (manifest.ManifestListByConfig, error)
	Test(context.Context, io.Writer, []graph.Artifact) error

View on GitHub (pinned to a1189de023)

Solutions

  1. No fix needed — save your skaffold.yaml changes and let skaffold restart the dev loop automatically.
  2. If it surfaces as a terminating error in your own code, compare with errors.Is(err, runner.ErrorConfigurationChanged) and handle it as a restart signal, not a failure.

Example fix

// before
if err != nil {
    return err
}
// after
if err != nil {
    if errors.Is(err, runner.ErrorConfigurationChanged) {
        return nil // restart dev cycle with new config
    }
    return err
}
Defensive patterns

Strategy: try-catch

Type guard

func isConfigChanged(err error) bool { return errors.Is(err, runner.ErrorConfigurationChanged) }

Try / catch

if err := runner.Dev(ctx, out, []namespacedImage{}); err != nil {
    if errors.Is(err, runner.ErrorConfigurationChanged) {
        return nil // expected: restart dev loop with reloaded config
    }
    return err
}

Prevention

When it happens

Trigger: Editing skaffold.yaml while `skaffold dev` is running; runDev/doDev returns this sentinel so the watcher loop can reload the schema and start a new cycle.

Common situations: Hot-reloading configuration during development: adding a profile, changing build args, or toggling port-forwards while a dev session is active. Also seen in tests simulating config reload cycles.

Related errors


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