{"record":{"id":"6c70a529040f1f1c","repo":"GoogleContainerTools/jib","slug":"helpfulsuggestions-forunknownhost","errorCode":null,"errorMessage":"${helpfulSuggestions.forUnknownHost()}","messagePattern":"\\$\\{helpfulSuggestions\\.forUnknownHost\\(\\)\\}","errorType":"exception","errorClass":"BuildStepsExecutionException","httpStatus":null,"severity":"error","filePath":"jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/JibBuildRunner.java","lineNumber":273,"sourceCode":"    } catch (RegistryUnauthorizedException ex) {\n      handleRegistryUnauthorizedException(ex, helpfulSuggestions);\n\n    } catch (RegistryCredentialsNotSentException ex) {\n      throw new BuildStepsExecutionException(helpfulSuggestions.forCredentialsNotSent(), ex);\n\n    } catch (RegistryAuthenticationFailedException ex) {\n      if (ex.getCause() instanceof ResponseException) {\n        handleRegistryUnauthorizedException(\n            new RegistryUnauthorizedException(\n                ex.getServerUrl(), ex.getImageName(), (ResponseException) ex.getCause()),\n            helpfulSuggestions);\n      } else {\n        // Unknown cause\n        throw new BuildStepsExecutionException(helpfulSuggestions.none(), ex);\n      }\n\n    } catch (UnknownHostException ex) {\n      throw new BuildStepsExecutionException(helpfulSuggestions.forUnknownHost(), ex);\n\n    } catch (InsecureRegistryException ex) {\n      throw new BuildStepsExecutionException(helpfulSuggestions.forInsecureRegistry(), ex);\n\n    } catch (RegistryException ex) {\n      String message = Verify.verifyNotNull(ex.getMessage()); // keep null-away happy\n      throw new BuildStepsExecutionException(message, ex);\n\n    } catch (ExecutionException ex) {\n      String message = ex.getCause().getMessage();\n      throw new BuildStepsExecutionException(\n          message == null ? \"(null exception message)\" : message, ex.getCause());\n\n    } catch (InterruptedException ex) {\n      Thread.currentThread().interrupt();\n      throw new BuildStepsExecutionException(helpfulSuggestions.none(), ex);\n    }\n","sourceCodeStart":255,"sourceCodeEnd":291,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/JibBuildRunner.java#L255-L291","documentation":"BuildStepsExecutionException wrapping a RegistryUnauthorizedException raised in JibBuildRunner.runBuild() when the registry (Docker Hub, GCR, etc.) rejects the push/pull with 401/403 during a container-image build. It fires when credentials are missing, expired, or lack permission for the target repository; the message comes from helpfulSuggestions.forUnknownHost()/credentials guidance, meaning the build was aborted before image layers were shipped.","triggerScenarios":"Thrown at jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/JibBuildRunner.java:273 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run 'docker login' or 'gcloud auth login' / configure credentials with the Jib auth plugins or -Djib.to.auth.username/-Djib.to.auth.password","Verify the image reference (registry/repository path) is correct and that the account has push/pull permission","For CI, supply credentials via the plugin's auth configuration or a credential helper (gcloud, docker-credential-*)"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fb949e2676afbbd7dd7a1ef61e20251931325654","analyzedAt":"2026-09-06T14:04:09.491Z","contentChangedAt":"2026-09-06T14:04:09.491Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}