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
- Verify the default repo value: run `skaffold config list` and check `default-repo` is a valid registry path (e.g. gcr.io/my-project).
- Fix or remove the bad entry with `skaffold config set default-repo gcr.io/my-project` or `skaffold config unset default-repo`.
- If --default-repo was passed, check the flag value for typos or invalid characters.
- 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
- Validate the --default-repo flag format before invoking.
- Run `skaffold config list` after any skaffold upgrade to catch schema drift.
- Keep ~/.skaffold/config under version control or backup.
- Use fully-qualified registry hosts (gcr.io/project, not bare project names).
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
- getting multi-level repo support: %w
- value must be one of `always`, `missing`, or `never`
- CONFIG_REMOTE_REPO_CACHE_NOT_FOUND_ERR
- CONFIG_REMOTE_REPO_CACHE_NOT_FOUND_ERR
- INSPECT_BUILD_ENV_ALREADY_EXISTS_ERR
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/f9c204c847fd200a.
Report an issue: GitHub.