GoogleContainerTools/jib · warning
Caused by: ${causeMessage}
Error message
Caused by: ${causeMessage} What it means
DockerConfigCredentialRetriever logs this warning when a configured Docker credential helper fails while retrieving credentials, and additionally logs the helper's underlying cause message prefixed with ' Caused by:'. It tells you which helper failed and why (e.g. helper binary crashed or rejected the server URL).
Source
Thrown at jib-core/src/main/java/com/google/cloud/tools/jib/registry/credentials/DockerConfigCredentialRetriever.java:138
for (String registryAlias : RegistryAliasGroup.getAliasesGroup(registry)) {
// First, find a credential helper from "credentialHelpers" and "credsStore" in order.
DockerCredentialHelper dockerCredentialHelper =
dockerConfig.getCredentialHelperFor(registryAlias);
if (dockerCredentialHelper != null) {
try {
Path helperPath = dockerCredentialHelper.getCredentialHelper();
logger.accept(LogEvent.info("trying " + helperPath + " for " + registryAlias));
// Tries with the given registry alias (may be the original registry).
return Optional.of(dockerCredentialHelper.retrieve());
} catch (IOException
| CredentialHelperUnhandledServerUrlException
| CredentialHelperNotFoundException ex) {
// Warns the user that the specified credential helper cannot be used.
if (ex.getMessage() != null) {
logger.accept(LogEvent.warn(ex.getMessage()));
if (ex.getCause() != null && ex.getCause().getMessage() != null) {
logger.accept(LogEvent.warn(" Caused by: " + ex.getCause().getMessage()));
}
}
}
}
// Lastly, find defined auth.
AuthTemplate auth = dockerConfig.getAuthFor(registryAlias);
if (auth != null) {
if (auth.getAuth() != null) {
// 'auth' is a basic authentication token that should be parsed back into credentials
String usernameColonPassword =
new String(Base64.getDecoder().decode(auth.getAuth()), StandardCharsets.UTF_8);
String username = usernameColonPassword.substring(0, usernameColonPassword.indexOf(":"));
String password = usernameColonPassword.substring(usernameColonPassword.indexOf(":") + 1);
logger.accept(
LogEvent.info(
"Docker config auths section defines credentials for " + registryAlias));
if (auth.getIdentityToken() != nullView on GitHub (pinned to fb949e2676)
Solutions
- Install or repair the credential helper referenced in ~/.docker/config.json and ensure it is on PATH
- Remove the stale credsStore/credHelpers entry from ~/.docker/config.json so Jib falls back to auth or anonymous access
- Run the helper manually (echo <registry> | docker-credential-<helper> get) to see its raw error
- Provide credentials via Jib's own auth configuration or system properties instead of relying on the helper
Example fix
// before: ~/.docker/config.json referencing removed helper
{ "credsStore": "desktop" }
// after: drop the broken helper entry
{ }
mvn jib:build Defensive patterns
Strategy: fallback
Validate before calling
// verify the configured credential helper works before building echo "registry.example.com" | docker-credential-$(jq -r .credsStore ~/.docker/config.json) get >/dev/null \ || echo "credential helper broken: fix ~/.docker/config.json"
Try / catch
try {
cred = retriever.retrieve();
} catch (CredentialHelperUnhandledServerUrlException | CredentialHelperNotFoundException e) {
// Jib already warned (incl. 'Caused by'); fall back to auth config or anonymous pull
cred = fallbackCredentialOrAnonymous();
} Prevention
- Keep docker-credential-* helpers installed and on PATH
- Prune stale credsStore entries after uninstalling Docker Desktop
- Test helpers manually with `echo <registry> | docker-credential-<helper> get`
When it happens
Trigger: A Docker config (~/.docker/config.json) with a credsStore or per-registry credHelpers entry causes a credential helper invocation that throws CredentialHelperUnhandledServerUrlException, CredentialHelperUnhandledServerUrlException's siblings, or CredentialHelperNotFoundException with a non-null message and non-null cause while retrieve() walks helper -> store -> auth fallbacks.
Common situations: docker-credential-desktop / docker-credential-gcloud not installed or not on PATH; helper that doesn't recognize the registry URL; stale credsStore after uninstalling Docker Desktop; mismatched helper versions.
Related errors
- The credential helper ${credentialHelper} returned no creden
- The credential helper ${credentialHelper} returned no creden
- the configured platform (%s/%s) doesn't match the platform (
- The credential helper ${credentialHelper} was not found (No
- <message from BuildStepsExecutionException>
AI-assisted analysis of GoogleContainerTools/jib@fb949e2676 (2026-09-06).
Data as JSON: /api/errors/45fed07be3cc28bd.
Report an issue: GitHub.