GoogleContainerTools/skaffold · error

getting default repo: %w

Error message

getting default repo: %w

What it means

ApplyDefaultRepo returns this when config.GetDefaultRepo fails while resolving the default image repository to prefix image tags with. GetDefaultRepo merges the global skaffold config (~/.skaffold/config) with the defaultRepo flag/config value; it errors when the resolved default repo value is malformed or the global config cannot be read/parsed. Skaffold wraps it so users know the failure happened while resolving the default repo for a tag.

Source

Thrown at pkg/skaffold/deploy/util/util.go:59

	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/kubernetes/manifest"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/output"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/output/log"
	"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/tag"
	"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/util/stringset"
	timeutil "github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/util/time"
)

var (
	confirmHydrationDirOverride = prompt.ConfirmHydrationDirOverride
)

// ApplyDefaultRepo applies the default repo to a given image tag.
func ApplyDefaultRepo(globalConfig string, defaultRepo *string, tag string) (string, error) {
	repo, err := config.GetDefaultRepo(globalConfig, defaultRepo)
	if err != nil {
		return "", fmt.Errorf("getting default repo: %w", err)
	}

	multiLevel, err := config.GetMultiLevelRepo(globalConfig)
	if err != nil {
		return "", fmt.Errorf("getting multi-level repo support: %w", err)
	}

	newTag, err := docker.SubstituteDefaultRepoIntoImage(repo, multiLevel, tag)
	if err != nil {
		return "", fmt.Errorf("applying default repo to %q: %w", tag, err)
	}

	return newTag, nil
}

// Update which images are logged, if the image is present in the provided deployer's artifacts.
func AddTagsToPodSelector(runnerBuilds []graph.Artifact, deployerArtifacts []graph.Artifact, podSelector *kubernetes.ImageList) {
	// This implementation is mostly picked from v1 for fixing log duplication issue when multiple deployers are used.

View on GitHub (pinned to a1189de023)

Solutions

  1. Verify the default repo value: run `skaffold config list` and check `default-repo` is a valid registry path (e.g. gcr.io/my-project).
  2. Fix or remove the bad entry with `skaffold config set default-repo gcr.io/my-project` or `skaffold config unset default-repo`.
  3. If --default-repo was passed, check the flag value for typos or invalid characters.
  4. Inspect ~/.skaffold/config for corruption and repair or delete it, then reconfigure.

Example fix

// before (bad value in ~/.skaffold/config)
default-repo: /gcr.io/my-project/
// after
default-repo: gcr.io/my-project
Defensive patterns

Strategy: try-catch

Validate before calling

// Validate the default repo resolves before tag rewriting
repo, err := config.GetDefaultRepo(globalConfig, defaultRepo)
if err != nil {
	return fmt.Errorf("default-repo misconfigured: %w", err)
}
if repo != "" && strings.HasPrefix(repo, "/") {
	return fmt.Errorf("invalid default repo %q", repo)
}

Try / catch

newTag, err := util.ApplyDefaultRepo(globalConfig, defaultRepo, tag)
if err != nil && strings.Contains(err.Error(), "getting default repo") {
	return fmt.Errorf("fix `skaffold config set default-repo` or --default-repo flag: %w", err)
}

Prevention

When it happens

Trigger: Calling ApplyDefaultRepo (directly or via ImageTags) where config.GetDefaultRepo returns an error — usually a defaultRepo value that violates the expected format, or an unreadable/corrupt global skaffold config passed as globalConfig.

Common situations: Setting `default-repo` in ~/.skaffold/config to an invalid value; passing `--default-repo` with a malformed repository string; a global config file with a bad schema after a skaffold version upgrade.

Related errors


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