diff --git a/build.sc b/build.sc
index 5f387e1065..c48a19ff93 100644
--- a/build.sc
+++ b/build.sc
@@ -1039,6 +1039,7 @@ trait CliIntegration extends SbtModule with ScalaCliPublishModule with HasTests
            |
            |/** Build-time constants. Generated by mill. */
            |object Constants {
+           |  def scalaCliVersion              = "${publishVersion()}"
            |  def allJavaVersions              = Seq(${Java.allJavaVersions.sorted.mkString(", ")})
            |  def bspVersion                   = "${Deps.bsp4j.dep.version}"
            |  def bloopMinimumJvmVersion       = ${Java.minimumBloopJava}
diff --git a/modules/build/src/main/scala/scala/build/Build.scala b/modules/build/src/main/scala/scala/build/Build.scala
index 493ddf3333..6eb7584d9e 100644
--- a/modules/build/src/main/scala/scala/build/Build.scala
+++ b/modules/build/src/main/scala/scala/build/Build.scala
@@ -1090,13 +1090,18 @@ object Build {
           )
         else
           options
+
       val params = value(options0.scalaParams)
 
       val scopeParams =
         if (scope == Scope.Main) Nil
         else Seq(scope.name)
 
-      buildClient.setProjectParams(scopeParams ++ value(options0.projectParams))
+      val scalaCliVersionLog =
+        if options0.internal.logCliVersion then Seq(s"scala-cli ${Constants.version}") else Nil
+      buildClient.setProjectParams(
+        scopeParams ++ value(options0.projectParams) ++ scalaCliVersionLog
+      )
 
       val classesDir0 = classesDir(inputs.workspace, inputs.projectName, scope)
 
diff --git a/modules/cli/src/main/scala/scala/cli/commands/shared/LoggingOptions.scala b/modules/cli/src/main/scala/scala/cli/commands/shared/LoggingOptions.scala
index 47a7834f5c..4a9fd5794b 100644
--- a/modules/cli/src/main/scala/scala/cli/commands/shared/LoggingOptions.scala
+++ b/modules/cli/src/main/scala/scala/cli/commands/shared/LoggingOptions.scala
@@ -20,7 +20,11 @@ final case class LoggingOptions(
   @Group(HelpGroup.Logging.toString)
   @Tag(tags.implementation)
   @HelpMessage("Use progress bars")
-    progress: Option[Boolean] = None
+    progress: Option[Boolean] = None,
+  @Group(HelpGroup.Logging.toString)
+  @Tag(tags.implementation)
+  @HelpMessage("Logs scala-cli version on project build")
+    logCliVersion: Boolean = false
 ) {
   // format: on
 
diff --git a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala
index e5dbb62197..361b7955e2 100644
--- a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala
+++ b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala
@@ -441,7 +441,8 @@ final case class SharedOptions(
           strictBloopJsonCheck = strictBloopJsonCheck,
           interactive = Some(() => interactive),
           exclude = exclude.map(Positioned.commandLine),
-          offline = coursier.getOffline()
+          offline = coursier.getOffline(),
+          logCliVersion = logging.logCliVersion
         ),
         notForBloopOptions = bo.PostBuildOptions(
           scalaJsLinkerOptions = linkerOptions(js),
diff --git a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala
index 23a3ccc5e5..c237c3f251 100644
--- a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala
+++ b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala
@@ -822,6 +822,33 @@ abstract class CompileTestDefinitions
     }
   }
 
+  test("logs the scala-cli version when the --log-cli-version option is used") {
+    val filename = "Main.scala"
+    val inputs = TestInputs(
+      os.rel / filename ->
+        """|object Main extends App {
+           |  val msg: String = "1"
+           |}
+           |""".stripMargin
+    )
+    inputs.fromRoot { root =>
+      val result = os.proc(TestUtil.cli, "compile", ".", "--log-cli-version", extraOptions).call(
+        cwd = root,
+        check = false,
+        mergeErrIntoOut = true
+      )
+
+      assertEquals(
+        TestUtil.fullStableOutput(result),
+        s"""|Compiling project (Scala $actualScalaVersion, JVM (${Constants
+             .defaultGraalVMJavaVersion}), scala-cli ${Constants.scalaCliVersion})
+            |Compiled project (Scala $actualScalaVersion, JVM (${Constants
+             .defaultGraalVMJavaVersion}), scala-cli ${Constants.scalaCliVersion})""".stripMargin
+      )
+
+    }
+  }
+
   test("i3389") {
     val filename = "Main.scala"
     val inputs = TestInputs(
diff --git a/modules/options/src/main/scala/scala/build/options/InternalOptions.scala b/modules/options/src/main/scala/scala/build/options/InternalOptions.scala
index f9757edba7..c9d7501b1d 100644
--- a/modules/options/src/main/scala/scala/build/options/InternalOptions.scala
+++ b/modules/options/src/main/scala/scala/build/options/InternalOptions.scala
@@ -26,7 +26,8 @@ final case class InternalOptions(
   keepResolution: Boolean = false,
   extraSourceFiles: Seq[Positioned[os.Path]] = Nil,
   exclude: Seq[Positioned[String]] = Nil,
-  offline: Option[Boolean] = None
+  offline: Option[Boolean] = None,
+  logCliVersion: Boolean = false
 ) {
   def verbosityOrDefault: Int = verbosity.getOrElse(0)
   def strictBloopJsonCheckOrDefault: Boolean =
diff --git a/website/docs/reference/cli-options.md b/website/docs/reference/cli-options.md
index e92bdd4142..206274d2aa 100644
--- a/website/docs/reference/cli-options.md
+++ b/website/docs/reference/cli-options.md
@@ -721,6 +721,10 @@ Decrease logging verbosity
 
 Use progress bars
 
+### `--log-cli-version`
+
+Logs scala-cli version on project build
+
 ## Main class options
 
 Available in commands:
diff --git a/website/docs/reference/scala-command/cli-options.md b/website/docs/reference/scala-command/cli-options.md
index 0600d62471..e63d9efa2d 100644
--- a/website/docs/reference/scala-command/cli-options.md
+++ b/website/docs/reference/scala-command/cli-options.md
@@ -640,6 +640,12 @@ Decrease logging verbosity
 
 Use progress bars
 
+### `--log-cli-version`
+
+`IMPLEMENTATION specific` per Scala Runner specification
+
+Logs scala-cli version on project build
+
 ## Main class options
 
 Available in commands:
diff --git a/website/docs/reference/scala-command/runner-specification.md b/website/docs/reference/scala-command/runner-specification.md
index 9dd16292e5..878aed3d07 100644
--- a/website/docs/reference/scala-command/runner-specification.md
+++ b/website/docs/reference/scala-command/runner-specification.md
@@ -394,6 +394,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -787,6 +791,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -1176,6 +1184,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -1777,6 +1789,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -2408,6 +2424,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -3048,6 +3068,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -3640,6 +3664,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -4307,6 +4335,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -4632,6 +4664,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -4987,6 +5023,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -5316,6 +5356,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -5407,6 +5451,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -5486,6 +5534,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -5589,6 +5641,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -5950,6 +6006,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--js-no-opt**
 
 Disable optimalisation for Scala.js, overrides `--js-mode`
@@ -6279,6 +6339,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -6472,6 +6536,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features
@@ -6551,6 +6619,10 @@ Aliases: `-q`
 
 Use progress bars
 
+**--log-cli-version**
+
+Logs scala-cli version on project build
+
 **--suppress-experimental-feature-warning**
 
 Suppress warnings about using experimental features