diff --git a/src/applications/maniphest/xaction/ManiphestTaskTitleTransaction.php b/src/applications/maniphest/xaction/ManiphestTaskTitleTransaction.php
--- a/src/applications/maniphest/xaction/ManiphestTaskTitleTransaction.php
+++ b/src/applications/maniphest/xaction/ManiphestTaskTitleTransaction.php
@@ -73,6 +73,7 @@
 
     foreach ($xactions as $xaction) {
       $new = $xaction->getNewValue();
+      $xaction->setNewValue(trim($new)); // Strip surrounding whitespace
       if (!strlen($new)) {
         $errors[] = $this->newInvalidError(
           pht('Tasks must have a title.'),
diff --git a/src/applications/project/xaction/PhabricatorProjectNameTransaction.php b/src/applications/project/xaction/PhabricatorProjectNameTransaction.php
--- a/src/applications/project/xaction/PhabricatorProjectNameTransaction.php
+++ b/src/applications/project/xaction/PhabricatorProjectNameTransaction.php
@@ -72,6 +72,7 @@
     $max_length = $object->getColumnMaximumByteLength('name');
     foreach ($xactions as $xaction) {
       $new_value = $xaction->getNewValue();
+      $xaction->setNewValue(trim($new_value)); // Strip surrounding whitespace
       $new_length = strlen($new_value);
       if ($new_length > $max_length) {
         $errors[] = $this->newInvalidError(