diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
index f7fadb5..3b26e1e 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
@@ -184,7 +184,10 @@
         outErr.printErrLn(getNotInRealWorkspaceError(doNotBuild));
         return ExitCode.COMMAND_LINE_ERROR;
       } else {
-        outErr.printErrLn("WARNING: Blaze is run from output directory. This is unsound.");
+        outErr.printErrLn(
+            "WARNING: "
+                + runtime.getProductName()
+                + " is run from output directory. This is unsound.");
       }
     }
     return ExitCode.SUCCESS;
@@ -194,16 +197,17 @@
       Command commandAnnotation, List<String> args, List<String> rcfileNotes, OutErr outErr)
       throws OptionsParsingException {
 
-    Function<String, String> commandOptionSourceFunction = new Function<String, String>() {
-      @Override
-      public String apply(String input) {
-        if (INTERNAL_COMMAND_OPTIONS.contains(input)) {
-          return "options generated by Blaze launcher";
-        } else {
-          return "command line options";
-        }
-      }
-    };
+    Function<String, String> commandOptionSourceFunction =
+        new Function<String, String>() {
+          @Override
+          public String apply(String input) {
+            if (INTERNAL_COMMAND_OPTIONS.contains(input)) {
+              return "options generated by " + runtime.getProductName() + " launcher";
+            } else {
+              return "command line options";
+            }
+          }
+        };
 
     // Explicit command-line options:
     List<String> cmdLineAfterCommand = args.subList(1, args.size());
@@ -659,7 +663,9 @@
   }
 
   private String getNotInRealWorkspaceError(Path doNotBuildFile) {
-    String message = "Blaze should not be called from a Blaze output directory. ";
+    String message =
+        String.format(
+            "%1$s should not be called from a %1$s output directory. ", runtime.getProductName());
     try {
       String realWorkspace =
           new String(FileSystemUtils.readContentAsLatin1(doNotBuildFile));
