diff --git a/package_manager/src/Event/PreOperationStageEvent.php b/package_manager/src/Event/PreOperationStageEvent.php
index 64f975fb097d72dfac19e3410d7a4cfb4c50dc7f..c493c2a44a17eccf2d0354d39026f7b3a3c11002 100644
--- a/package_manager/src/Event/PreOperationStageEvent.php
+++ b/package_manager/src/Event/PreOperationStageEvent.php
@@ -6,6 +6,7 @@ namespace Drupal\package_manager\Event;
 
 use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\package_manager\ValidationResult;
+use Drupal\system\SystemManager;
 
 /**
  * Base class for events dispatched before a stage life cycle operation.
@@ -63,4 +64,14 @@ abstract class PreOperationStageEvent extends StageEvent {
     $this->results[] = ValidationResult::createErrorFromThrowable($throwable, $summary);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function stopPropagation(): void {
+    if (empty($this->getResults(SystemManager::REQUIREMENT_ERROR))) {
+      $this->addErrorFromThrowable(new \LogicException('Event propagation stopped without any errors added to the event. This bypasses the package_manager validation system.'));
+    }
+    parent::stopPropagation();
+  }
+
 }
diff --git a/package_manager/tests/src/Kernel/StageEventsTest.php b/package_manager/tests/src/Kernel/StageEventsTest.php
index 06161dccd4c838cb068fe9d832ee4ce7cbb2f83c..21abdab1050144263741bbc13e7a6a70d896438e 100644
--- a/package_manager/tests/src/Kernel/StageEventsTest.php
+++ b/package_manager/tests/src/Kernel/StageEventsTest.php
@@ -194,4 +194,19 @@ class StageEventsTest extends PackageManagerKernelTestBase implements EventSubsc
     (new PreApplyEvent($stage))->excludePath('/junk/drawer');
   }
 
+  /**
+   * Tests exception is thrown if error is not added before stopPropagation().
+   */
+  public function testExceptionIfNoErrorBeforeStopPropagation(): void {
+    $listener = function (PreCreateEvent $event): void {
+      $event->stopPropagation();
+    };
+    $this->addEventTestListener($listener, PreCreateEvent::class);
+
+    $this->expectException(TestStageValidationException::class);
+    $this->expectExceptionMessage('Event propagation stopped without any errors added to the event. This bypasses the package_manager validation system.');
+    $stage = $this->createStage();
+    $stage->create();
+  }
+
 }