diff --git a/src/applications/maniphest/editor/ManiphestTransactionEditor.php b/src/applications/maniphest/editor/ManiphestTransactionEditor.php
--- a/src/applications/maniphest/editor/ManiphestTransactionEditor.php
+++ b/src/applications/maniphest/editor/ManiphestTransactionEditor.php
@@ -324,14 +324,13 @@
     $actor_phid = $actor->getPHID();
 
     $results = parent::expandTransactions($object, $xactions);
-
     $is_unassigned = ($object->getOwnerPHID() === null);
 
-    $any_assign = false;
+    $any_xassign = null;
     foreach ($xactions as $xaction) {
       if ($xaction->getTransactionType() ==
         ManiphestTaskOwnerTransaction::TRANSACTIONTYPE) {
-        $any_assign = true;
+        $any_xassign = $xaction;
         break;
       }
     }
@@ -353,17 +352,26 @@
       $is_closing = ManiphestTaskStatus::isClosedStatus($new_status);
     }
 
+    // Automatically claim the task if the status is configured as such.
     // If the task is not assigned, not being assigned, currently open, and
     // being closed, try to assign the actor as the owner.
-    if ($is_unassigned && !$any_assign && $is_open && $is_closing) {
-      $is_claim = ManiphestTaskStatus::isClaimStatus($new_status);
-
-      // Don't assign the actor if they aren't a real user.
-      // Don't claim the task if the status is configured to not claim.
-      if ($actor_phid && $is_claim) {
+    // Don't assign the actor if they aren't a real user.
+    $is_claim = ManiphestTaskStatus::isClaimStatus($new_status);
+    if ($is_unassigned && $is_open && $is_closing && $is_claim && $actor_phid) {
+      if ($any_xassign === null) {
+        // Green light for automatic auto-claim since nothing is manually set.
         $results[] = id(new ManiphestTransaction())
           ->setTransactionType(ManiphestTaskOwnerTransaction::TRANSACTIONTYPE)
           ->setNewValue($actor_phid);
+      } else if ($any_xassign->getNewValue() === null) {
+        // We have an explicit <"Assign / Claim" = nothing> in the frontend.
+        // The user has probably tried to "undo" the above automatic auto-claim.
+        // When saving, this would cause the "no effect" warning.
+        // So we suppress that confusing warning.
+        // https://we.phorge.it/T15164
+        if ($any_xassign->getNewValue() === null) {
+          $any_xassign->setIgnoreOnNoEffect(true);
+        }
       }
     }