diff --git a/config.ml b/config.ml
index cad1681cf9f982c2022bcba685205dc457db8a86..16631e3c7f7758b553aa48085c6d431fee7d93b4 100644
--- a/config.ml
+++ b/config.ml
@@ -41,7 +41,7 @@ let exe_path_of_solver solver =
     with End_of_file -> false, S.exe_name
   in
   Stdlib.close_in in_channel;
-  Sys.remove tmp;
+  Utils.remove_on_app_mode tmp;
   if found
   then Ok exe
   else begin
@@ -167,7 +167,7 @@ let detect_default_solvers () =
                   Stdlib.close_in in_channel;
                   Buffer.contents buf
               in
-              Sys.remove tmp;
+              Utils.remove_on_app_mode tmp;
               if retcode <> 0
               then begin
                 Logs.info (fun m -> m "No solver `%s' found." S.name);
diff --git a/engine.ml b/engine.ml
index f8711234cae58c43d272eb2ac6f06de0588999e8..b95cab01bf35c8a066d7f7935f73aacdf698a656 100644
--- a/engine.ml
+++ b/engine.ml
@@ -45,7 +45,7 @@ let check_availability solver config =
     let retcode = Sys.command cmd in
     let in_channel = Stdlib.open_in tmp in
     Stdlib.close_in in_channel;
-    Sys.remove tmp;
+    Utils.remove_on_app_mode tmp;
     if retcode = 0
     then
       Ok ()
@@ -199,7 +199,7 @@ let exec_tasks ~raw_options solver config model tasks_htbl =
                 Logs.info (fun m -> m "Executing command `%s'." cmd);
                 try
                   let retcode = Sys.command cmd in
-                  Sys.remove prop;
+                  Utils.remove_on_app_mode prop;
                   if retcode <> 0
                   then Error (Format.sprintf "Command `%s' has failed." cmd)
                   else begin
@@ -207,14 +207,14 @@ let exec_tasks ~raw_options solver config model tasks_htbl =
                     let result = extract_result solver ~log ~output in
                     Logs.app (fun m -> m "Result of `%s': %a."
                                  task.id Solver.Result.pretty result);
-                    Sys.remove output;
+                    Utils.remove_on_app_mode output;
                     if Solver.Result.equal result Solver.Result.Failure
                     then
                       Logs.app (fun m ->
                           m "See error messages in `%s' for more information."
                             log)
                     else
-                      Sys.remove log;
+                      Utils.remove_on_app_mode log;
                     Ok result
                   end
                 with _ ->
diff --git a/marabou.ml b/marabou.ml
index 1fbe98fe12ffa8d466b30305407eaac24ec2bef7..d39ba2df6094c637da3c50b1daaade9d6e61b0d8 100644
--- a/marabou.ml
+++ b/marabou.ml
@@ -33,7 +33,7 @@ let options ~model ~property ~output =
     | Some Info -> 1
     | Some Debug -> 2
   in
-  [ "--property";  property;
+  [ "--property"; property;
     "--input"; model;
     "--verbosity"; Int.to_string verbosity_level;
     "--summary-file"; output ]
diff --git a/utils.ml b/utils.ml
new file mode 100644
index 0000000000000000000000000000000000000000..b3de56d18afdb6ea7f99ee582db3f53d45c84db1
--- /dev/null
+++ b/utils.ml
@@ -0,0 +1,14 @@
+(**************************************************************************)
+(*                                                                        *)
+(*  This file is part of Caisar.                                          *)
+(*                                                                        *)
+(**************************************************************************)
+
+let remove_on_app_mode filename =
+  let is_app =
+    match Logs.level () with
+    | Some App -> true
+    | _ -> false
+  in
+  if is_app
+  then Sys.remove filename
diff --git a/utils.mli b/utils.mli
new file mode 100644
index 0000000000000000000000000000000000000000..be657a8c58139d7982b6153fa285ae7ede89441c
--- /dev/null
+++ b/utils.mli
@@ -0,0 +1,9 @@
+(**************************************************************************)
+(*                                                                        *)
+(*  This file is part of Caisar.                                          *)
+(*                                                                        *)
+(**************************************************************************)
+
+(** [remove_on_app_mode filename] removes the given file from the file system
+    when caisar is run in application mode only. *)
+val remove_on_app_mode: string -> unit