diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index a518220d4752595a0e913e1ef123bf88932aebad..be7b4593ead507d4c711936e33d23ca748df641b 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -83,16 +83,25 @@ namespace armarx
 namespace armarx
 {
     void
-    SkillManagerMonitorWidgetController::prepareMenu(const QPoint& pos)
+    SkillManagerMonitorWidgetController::prepareAndRunMenu(const QPoint& pos)
     {
         QMenu* menu = new QMenu();
-        // TODO: gray out option if skill has finished
+
+        // Stop skill
         QAction* stopSkillAction = new QAction("Stop Skill", this);
+        skills::SkillStatus currentStatus =
+            skillStatusUpdates.at(selectedSkill.skillExecutionId).status;
+        stopSkillAction->setDisabled(currentStatus == skills::SkillStatus::Aborted ||
+                                     currentStatus == skills::SkillStatus::Failed ||
+                                     currentStatus == skills::SkillStatus::Succeeded);
+
+        // TODO: re-run with similar params; remove skill entry (if finished)
         menu->addAction(stopSkillAction);
         connect(stopSkillAction,
                 &QAction::triggered,
                 this,
                 &SkillManagerMonitorWidgetController::stopSkill);
+        // open menu
         menu->popup(widget.treeWidgetSkillExecutions->viewport()->mapToGlobal(pos));
     }
 
@@ -136,7 +145,7 @@ namespace armarx
         connect(widget.treeWidgetSkillExecutions,
                 &QTreeWidget::customContextMenuRequested,
                 this,
-                &SkillManagerMonitorWidgetController::prepareMenu);
+                &SkillManagerMonitorWidgetController::prepareAndRunMenu);
 
         connect(widget.doubleSpinBoxUpdateFreq,
                 &QDoubleSpinBox::editingFinished,
@@ -387,6 +396,9 @@ namespace armarx
                 auto executionId = skills::SkillExecutionID::FromIce(k);
                 auto statusUpdate = skills::SkillStatusUpdate::FromIce(v);
 
+                // update snapshot
+                skillStatusUpdates.insert_or_assign(executionId, statusUpdate);
+
                 SkillExecutionInfoTreeWidgetItem* found = nullptr;
                 for (int i = 0; i < widget.treeWidgetSkillExecutions->topLevelItemCount(); ++i)
                 {
@@ -509,8 +521,7 @@ namespace armarx
         }
         */
 
-        ARMARX_INFO << "Stopping skill from GUI: "
-                    << selectedSkill.skillExecutionId.skillId.skillName;
+        ARMARX_INFO << "Stopping skill from GUI: " << selectedSkill.skillExecutionId.toString();
 
         memory->abortSkill(selectedSkill.skillExecutionId.toManagerIce());
     }
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
index 6d35a527996a77536ee369a0061aab7915dc51e2..4a7d0e79efba5ad76d7de95ecf212b85c934f797 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
@@ -130,7 +130,7 @@ namespace armarx
         void pasteCurrentConfig();
         void resetCurrentConfig();
 
-        void prepareMenu(const QPoint& pos);
+        void prepareAndRunMenu(const QPoint& pos);
 
 
     private: