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
@@ -4,6 +4,7 @@
   extends ManiphestTaskTransactionType {
 
   const TRANSACTIONTYPE = 'title';
+  private $maximumTaskTitleLength = 255;
 
   public function generateOldValue($object) {
     return $object->getTitle();
@@ -78,6 +79,13 @@
           $xaction);
         continue;
       }
+      if (mb_strlen($new) > $this->maximumTaskTitleLength) {
+        $errors[] = $this->newInvalidError(
+          pht('Task title must be less than %d characters.',
+            $this->maximumTaskTitleLength + 1),
+          $xaction);
+        continue;
+      }
     }
 
     if (!$errors) {