diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1387,7 +1387,6 @@
     'HarbormasterBuildArtifactPHIDType' => 'applications/harbormaster/phid/HarbormasterBuildArtifactPHIDType.php',
     'HarbormasterBuildArtifactQuery' => 'applications/harbormaster/query/HarbormasterBuildArtifactQuery.php',
     'HarbormasterBuildAutoplan' => 'applications/harbormaster/autoplan/HarbormasterBuildAutoplan.php',
-    'HarbormasterBuildCommand' => 'applications/harbormaster/storage/HarbormasterBuildCommand.php',
     'HarbormasterBuildDependencyDatasource' => 'applications/harbormaster/typeahead/HarbormasterBuildDependencyDatasource.php',
     'HarbormasterBuildEngine' => 'applications/harbormaster/engine/HarbormasterBuildEngine.php',
     'HarbormasterBuildFailureException' => 'applications/harbormaster/exception/HarbormasterBuildFailureException.php',
@@ -7603,7 +7602,6 @@
     'HarbormasterBuildArtifactPHIDType' => 'PhabricatorPHIDType',
     'HarbormasterBuildArtifactQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
     'HarbormasterBuildAutoplan' => 'Phobject',
-    'HarbormasterBuildCommand' => 'Phobject',
     'HarbormasterBuildDependencyDatasource' => 'PhabricatorTypeaheadDatasource',
     'HarbormasterBuildEngine' => 'Phobject',
     'HarbormasterBuildFailureException' => 'Exception',
diff --git a/src/applications/harbormaster/step/HarbormasterAbortOlderBuildsBuildStepImplementation.php b/src/applications/harbormaster/step/HarbormasterAbortOlderBuildsBuildStepImplementation.php
--- a/src/applications/harbormaster/step/HarbormasterAbortOlderBuildsBuildStepImplementation.php
+++ b/src/applications/harbormaster/step/HarbormasterAbortOlderBuildsBuildStepImplementation.php
@@ -122,7 +122,7 @@
     foreach ($abort_builds as $abort_build) {
       $abort_build->sendMessage(
         $viewer,
-        HarbormasterBuildCommand::COMMAND_ABORT);
+        HarbormasterBuildMessageAbortTransaction::MESSAGETYPE);
     }
   }
 
diff --git a/src/applications/harbormaster/storage/HarbormasterBuildCommand.php b/src/applications/harbormaster/storage/HarbormasterBuildCommand.php
deleted file mode 100644
--- a/src/applications/harbormaster/storage/HarbormasterBuildCommand.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-final class HarbormasterBuildCommand
-  extends Phobject {
-
-  const COMMAND_PAUSE = 'pause';
-  const COMMAND_RESUME = 'resume';
-  const COMMAND_RESTART = 'restart';
-  const COMMAND_ABORT = 'abort';
-
-}
diff --git a/src/applications/harbormaster/storage/HarbormasterBuildableTransaction.php b/src/applications/harbormaster/storage/HarbormasterBuildableTransaction.php
--- a/src/applications/harbormaster/storage/HarbormasterBuildableTransaction.php
+++ b/src/applications/harbormaster/storage/HarbormasterBuildableTransaction.php
@@ -27,18 +27,22 @@
           $this->renderHandleLink($author_phid));
       case self::TYPE_COMMAND:
         switch ($new) {
-          case HarbormasterBuildCommand::COMMAND_RESTART:
+          case HarbormasterBuildMessageRestartTransaction::MESSAGETYPE:
             return pht(
               '%s restarted this buildable.',
               $this->renderHandleLink($author_phid));
-          case HarbormasterBuildCommand::COMMAND_RESUME:
+          case HarbormasterBuildMessageResumeTransaction::MESSAGETYPE:
             return pht(
               '%s resumed this buildable.',
               $this->renderHandleLink($author_phid));
-          case HarbormasterBuildCommand::COMMAND_PAUSE:
+          case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE:
             return pht(
               '%s paused this buildable.',
               $this->renderHandleLink($author_phid));
+          case HarbormasterBuildMessageAbortTransaction::MESSAGETYPE:
+            return pht(
+              '%s aborted this buildable.',
+              $this->renderHandleLink($author_phid));
         }
     }
     return parent::getTitle();
@@ -55,12 +59,14 @@
         return 'fa-plus';
       case self::TYPE_COMMAND:
         switch ($new) {
-          case HarbormasterBuildCommand::COMMAND_RESTART:
+          case HarbormasterBuildMessageRestartTransaction::MESSAGETYPE:
             return 'fa-backward';
-          case HarbormasterBuildCommand::COMMAND_RESUME:
+          case HarbormasterBuildMessageResumeTransaction::MESSAGETYPE:
             return 'fa-play';
-          case HarbormasterBuildCommand::COMMAND_PAUSE:
+          case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE:
             return 'fa-pause';
+          case HarbormasterBuildMessageAbortTransaction::MESSAGETYPE:
+            return 'fa-exclamation-triangle';
         }
     }
 
@@ -78,7 +84,7 @@
         return 'green';
       case self::TYPE_COMMAND:
         switch ($new) {
-          case HarbormasterBuildCommand::COMMAND_PAUSE:
+          case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE:
             return 'red';
         }
     }
diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuild.php b/src/applications/harbormaster/storage/build/HarbormasterBuild.php
--- a/src/applications/harbormaster/storage/build/HarbormasterBuild.php
+++ b/src/applications/harbormaster/storage/build/HarbormasterBuild.php
@@ -272,22 +272,22 @@
     foreach ($this->getUnprocessedMessages() as $message_object) {
       $message_type = $message_object->getType();
       switch ($message_type) {
-        case HarbormasterBuildCommand::COMMAND_RESTART:
+        case HarbormasterBuildMessageRestartTransaction::MESSAGETYPE:
           $is_restarting = true;
           $is_aborting = false;
           $apply_messages = array($message_object);
           break;
-        case HarbormasterBuildCommand::COMMAND_ABORT:
+        case HarbormasterBuildMessageAbortTransaction::MESSAGETYPE:
           $is_aborting = true;
           $is_restarting = false;
           $apply_messages = array($message_object);
           break;
-        case HarbormasterBuildCommand::COMMAND_PAUSE:
+        case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE:
           $is_pausing = true;
           $is_resuming = false;
           $apply_messages = array($message_object);
           break;
-        case HarbormasterBuildCommand::COMMAND_RESUME:
+        case HarbormasterBuildMessageResumeTransaction::MESSAGETYPE:
           $is_resuming = true;
           $is_pausing = false;
           $apply_messages = array($message_object);