diff --git a/src/ClientServer/Config/Constants.cs b/src/ClientServer/Config/Constants.cs
index 074938eef6efc8bd65733589e5f9d5faf72fef6b..49bf7043e0a8321394c2b8049e246899c81a0b5a 100644
--- a/src/ClientServer/Config/Constants.cs
+++ b/src/ClientServer/Config/Constants.cs
@@ -13,7 +13,7 @@ namespace ClientServer.Helpers
     /// </summary>
     public static class Constants
     {
-        public static string VersionString = "2.6.3";
+        public static string VersionString = "2.6.4";
 
         /// <summary>
         /// this is only set once at program.cs!!
diff --git a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs
index 26e4658a401a960d9f8de41f7609da555d710737..ef7e935ff8a73e78dbe90428a1c6f8fa2ca43d9f 100644
--- a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs
+++ b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs
@@ -575,10 +575,18 @@ namespace ClientServer.Controllers.Core.Exercises
 
             int userId = GetUserId();
 
-            await _GetSolutionForExercise(generatedCode, pLangId, userId);
+            await _GetSolutionForExercise(generatedCode, pLangId, userId, false);
         }
 
-        internal async Task _GetSolutionForExercise(string generatedCode, int pLangId, int targetUserId)
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="generatedCode"></param>
+        /// <param name="pLangId"></param>
+        /// <param name="targetUserId"></param>
+        /// <param name="asTutor">true: tutors need the hidden file content because currently tutor editors are not stored yet so only the frontend gives data to run tests for tutors... false: a student, so hide hidden files</param>
+        /// <returns></returns>
+        internal async Task _GetSolutionForExercise(string generatedCode, int pLangId, int targetUserId, bool asTutor)
         {
             int userId = targetUserId;
 
@@ -715,8 +723,22 @@ namespace ClientServer.Controllers.Core.Exercises
                 return;
             }
 
-            //template files should be loaded 
-            var errorMsg = UserSolutionHelper.ReplaceReadonlyFiles(userSolution, template, true, false);
+            //template files should be loaded
+
+            string errorMsg;
+            
+            if (asTutor)
+            {
+                //currently tutor editors are not persistent so the frontend needs all data to run a test
+                //this includes the hidden file contents...
+                errorMsg = UserSolutionHelper.ReplaceReadonlyFiles(userSolution, template, false, true);
+            }
+            else
+            {
+                //normal student, replace hidden files with empty content
+                errorMsg = UserSolutionHelper.ReplaceReadonlyFiles(userSolution, template, true, false);
+            }
+            
 
             if (errorMsg != null)
             {
diff --git a/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs b/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs
index 4c359f73d024a506a1ce0560a8a1d7fd465d7959..66f5a46b83f181b46b2766876d018814a8fd9e4d 100644
--- a/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs
+++ b/src/ClientServer/Controllers/Core/Exercises/TutorViewAssessmentController.cs
@@ -361,7 +361,7 @@ namespace ClientServer.Controllers.Core.Exercises
             if (exerciseRelease == null) return;
 
             var doExerciseController = new DoExerciseController(_context) {ControllerContext = this.ControllerContext};
-            await doExerciseController._GetSolutionForExercise(exerciseRelease.GeneratedCode, pLangId, userId);
+            await doExerciseController._GetSolutionForExercise(exerciseRelease.GeneratedCode, pLangId, userId, true);
         }
 
         [HttpGet("testresults/{exerciseReleaseId}/{userId}/{pLangId}")]