diff --git a/src/kernel_services/plugin_entry_points/log.ml b/src/kernel_services/plugin_entry_points/log.ml
index 932b1e506f5b33e817e62c0aa2d52f9f54c34776..a07e413449cc33621b7d96c8eda2b237f1007f29 100644
--- a/src/kernel_services/plugin_entry_points/log.ml
+++ b/src/kernel_services/plugin_entry_points/log.ml
@@ -804,6 +804,7 @@ sig
     ('a,formatter,unit) format -> 'a
 
   val result  : ?level:int -> ?dkey:category -> 'a pretty_printer
+  val has_tty : unit -> bool
   val feedback: ?ontty:ontty -> ?level:int -> ?dkey:category -> 'a pretty_printer
   val debug   : ?level:int -> ?dkey:category -> 'a pretty_printer
   val warning : ?wkey: warn_category -> 'a pretty_printer
@@ -1038,6 +1039,8 @@ struct
 
   let transient channel = channel.terminal.isatty && !tty ()
 
+  let has_tty () = transient channel
+
   let feedback
       ?(ontty=`Message)
       ?(level=1) ?dkey ?current ?source
diff --git a/src/kernel_services/plugin_entry_points/log.mli b/src/kernel_services/plugin_entry_points/log.mli
index d1b3621e3bc4eff714dd8daec0a6c08f7d06c343..8a97b6a8decfeff87b59d8c0ce99ac01c7b60986 100644
--- a/src/kernel_services/plugin_entry_points/log.mli
+++ b/src/kernel_services/plugin_entry_points/log.mli
@@ -158,6 +158,9 @@ module type Messages = sig
       @since Beryllium-20090601-beta1
       @see <https://frama-c.com/download/frama-c-plugin-development-guide.pdf> Plug-in Development Guide *)
 
+  val has_tty : unit -> bool
+  (** Returns [true] is this Log's channel is in console mode *)
+
   val feedback : ?ontty:ontty -> ?level:int -> ?dkey:category -> 'a pretty_printer
   (** Progress and feedback. Level is tested against the verbosity level.
       @since Beryllium-20090601-beta1