GoogleContainerTools/skaffold · error

CONFIG_MULTI_IMPORT_PROFILE_CONFLICT_ERR

CONFIG_MULTI_IMPORT_PROFILE_CONFLICT_ERR

Error message

config %q defined in file %q imported multiple times with different set of profiles

What it means

ConfigProfileConflictErr fires when the same named config (a config dependency) is imported more than once but with different profile activations, so the imported config would resolve inconsistently. Code CONFIG_MULTI_IMPORT_PROFILE_CONFLICT_ERR, suggesting checking dependency profile selection.

Source

Thrown at pkg/skaffold/schema/errors/errors.go:176

func ConfigProfilesNotMatchedErr(profiles []string) error {
	msg := fmt.Sprintf("profile selection %q did not match those defined in any configurations", profiles)
	return sErrors.NewError(errors.New(msg),
		&proto.ActionableErr{
			Message: msg,
			ErrCode: proto.StatusCode_CONFIG_PROFILES_NOT_FOUND_ERR,
			Suggestions: []*proto.Suggestion{
				{
					SuggestionCode: proto.SuggestionCode_CONFIG_CHECK_PROFILE_SELECTION,
					Action:         `Check that values specified in the "--profile" or "-p" flags are valid profile names`,
				},
			},
		})
}

// ConfigProfileConflictErr specifies that the same config is imported with different set of profiles.
func ConfigProfileConflictErr(config, file string) error {
	msg := fmt.Sprintf("config %q defined in file %q imported multiple times with different set of profiles", config, file)
	return sErrors.NewError(errors.New(msg),
		&proto.ActionableErr{
			Message: msg,
			ErrCode: proto.StatusCode_CONFIG_MULTI_IMPORT_PROFILE_CONFLICT_ERR,
			Suggestions: []*proto.Suggestion{
				{
					SuggestionCode: proto.SuggestionCode_CONFIG_CHECK_DEPENDENCY_PROFILES_SELECTION,
					Action:         "Check that all occurrences of the specified config dependency use the same set of profiles; refer to the documentation on how to author config dependencies: https://skaffold.dev/docs/design/config/#configuration-dependencies",
				},
			},
		})
}

// ConfigUnknownAPIVersionErr specifies that the config API version doesn't match any known versions.
func ConfigUnknownAPIVersionErr(version string) error {
	msg := fmt.Sprintf("unknown skaffold config API version %q", version)
	return sErrors.NewError(errors.New(msg),
		&proto.ActionableErr{
			Message: msg,

View on GitHub (pinned to a1189de023)

Solutions

  1. Align the profile selection for the shared dependency across all `requires:` declarations that import it.
  2. Remove the profile activation from the dependency and select profiles only at the top-level invocation.
  3. Duplicate the dependency config under distinct names if genuinely divergent profile sets are needed.

Example fix

// before: service-a/skaffold.yaml
requires:
  - path: ../base
    profiles: [staging]
// service-b/skaffold.yaml
requires:
  - path: ../base
    profiles: [prod]
// after: both use the same profiles
requires:
  - path: ../base
    profiles: [staging]
Defensive patterns

Strategy: validation

Validate before calling

# ensure every `requires:` on the same dependency activates the same profiles
grep -A3 'requires:' */skaffold.yaml | grep -B1 -A2 'path: ../base'

Prevention

When it happens

Trigger: Multiple configs declare dependencies (`requires:`) on the same config name but activate different profiles of it; during dependency resolution the conflicting profile sets are detected.

Common situations: In multi-module monorepos, two services both require a shared base config but one activates `profiles: [staging]` while the other activates `profiles: [prod]` for the same dependency.

Related errors


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