diff --git a/python/educational/interactive-learning/resources/META-INF/plugin.xml b/python/educational/interactive-learning/resources/META-INF/plugin.xml
index 57adbc2196e7..2849c0b01f8b 100644
--- a/python/educational/interactive-learning/resources/META-INF/plugin.xml
+++ b/python/educational/interactive-learning/resources/META-INF/plugin.xml
@@ -61,6 +61,9 @@
description="Show hint for answer placeholder"/>
+
diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRenameTaskFileAction.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRenameTaskFileAction.java
new file mode 100644
index 000000000000..6f1ca90a9a3f
--- /dev/null
+++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRenameTaskFileAction.java
@@ -0,0 +1,26 @@
+package com.jetbrains.edu.learning.actions;
+
+import com.intellij.openapi.actionSystem.CommonDataKeys;
+import com.intellij.openapi.actionSystem.DataContext;
+import com.intellij.psi.PsiElement;
+import com.intellij.refactoring.actions.RenameElementAction;
+import com.jetbrains.edu.learning.StudyUtils;
+import org.jetbrains.annotations.NotNull;
+
+public class StudyRenameTaskFileAction extends RenameElementAction {
+ @Override
+ protected boolean isEnabledOnDataContext(DataContext dataContext) {
+ PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
+ return super.isEnabledOnDataContext(dataContext) && !isTaskFile(element);
+ }
+
+ private static boolean isTaskFile(PsiElement element) {
+ return element != null && StudyUtils.getTaskFile(element.getProject(),
+ element.getContainingFile().getVirtualFile()) != null;
+ }
+
+ @Override
+ public boolean isEnabledOnElements(@NotNull PsiElement[] elements){
+ return !super.isEnabledOnElements(elements) && !isTaskFile(elements[0]);
+ }
+}