diff --git a/frontend/src/TaskPanel.svelte b/frontend/src/TaskPanel.svelte
index b96149a..8ff7689 100644
--- a/frontend/src/TaskPanel.svelte
+++ b/frontend/src/TaskPanel.svelte
@@ -37,6 +37,12 @@ import TaskDisplay from "./TaskDisplay.svelte";
             behavior: 'smooth'
         }), 100)
     }
+
+    function handleKeydown(e: KeyboardEvent) {
+        if (e.key === "Escape") {
+            close()
+        }
+    }
 </script>
 
 <style>
@@ -68,6 +74,8 @@ import TaskDisplay from "./TaskDisplay.svelte";
     .panel.full .closeButton { display: inherit }
 </style>
 
+<svelte:window on:keydown={handleKeydown} />
+
 <div class="panel {heightClass}"
      on:click={() => selectedTask && select(selectedTask)}>
     <TaskDisplay taskId={selectedTask?.id} />