diff --git a/clive/__private/ui/app.py b/clive/__private/ui/app.py
index 9a25ab2a5df3c4a298c9d34203767b97553b50a8..eac92904ba43df7210c426e42e3b2347af112355 100644
--- a/clive/__private/ui/app.py
+++ b/clive/__private/ui/app.py
@@ -13,6 +13,7 @@ from textual.app import App
 from textual.binding import Binding
 from textual.notifications import Notification, Notify, SeverityLevel
 from textual.reactive import var
+from textual.worker import WorkerCancelled
 
 from clive.__private.core.constants.terminal import TERMINAL_HEIGHT, TERMINAL_WIDTH
 from clive.__private.core.constants.tui.bindings import APP_QUIT_KEY_BINDING
@@ -242,12 +243,21 @@ class Clive(App[int]):
     def trigger_app_state_watchers(self) -> None:
         self.world.mutate_reactive(TUIWorld.app_state)  # type: ignore[arg-type]
 
-    def update_alarms_data_asap_on_newest_node_data(self) -> Worker[None]:
+    def update_alarms_data_asap_on_newest_node_data(self, *, suppress_cancelled_error: bool = False) -> Worker[None]:
         """Update alarms on the newest possible node data."""
+
         async def update_alarms_data_on_newest_node_data() -> None:
-            await self.update_data_from_node().wait()
-            await self.update_alarms_data().wait()
-        return self.run_worker(update_alarms_data_on_newest_node_data())
+            try:
+                await self.update_data_from_node().wait()
+                await self.update_alarms_data().wait()
+            except WorkerCancelled as error:
+                logger.warning("Update alarms data on newest node data cancelled.")
+                if not suppress_cancelled_error:
+                    logger.warning(f"Re-raising exception: {error}")
+                    raise
+                logger.warning(f"Ignoring exception: {error}")
+
+        return self.run_worker(update_alarms_data_on_newest_node_data(), exclusive=True)
 
     @work(name="alarms data update worker", group="alarms_data", exclusive=True)
     async def update_alarms_data(self) -> None:
diff --git a/clive/__private/ui/forms/create_profile/finish_profile_creation_mixin.py b/clive/__private/ui/forms/create_profile/finish_profile_creation_mixin.py
index ad69c5f655815fafae63112b750894c1be0b8e7b..52fd14c8a5c87d2a16e5171c838978c9617357e9 100644
--- a/clive/__private/ui/forms/create_profile/finish_profile_creation_mixin.py
+++ b/clive/__private/ui/forms/create_profile/finish_profile_creation_mixin.py
@@ -14,7 +14,8 @@ class FinishProfileCreationMixin(FormScreenBase[CreateProfileContext]):
 
     async def _finish(self) -> None:
         self._owner.add_post_action(
-            self.app.update_alarms_data_asap_on_newest_node_data, self.app.resume_refresh_alarms_data_interval
+            lambda: self.app.update_alarms_data_asap_on_newest_node_data(suppress_cancelled_error=True),
+            self.app.resume_refresh_alarms_data_interval,
         )
 
         profile = self.context.profile
diff --git a/clive/__private/ui/screens/unlock/unlock.py b/clive/__private/ui/screens/unlock/unlock.py
index 194b55e9caf5441fe8eeabd253810a13beebf7ee..44f1eff6eb82486251f581d2aff3fba5156e7c81 100644
--- a/clive/__private/ui/screens/unlock/unlock.py
+++ b/clive/__private/ui/screens/unlock/unlock.py
@@ -123,7 +123,7 @@ class Unlock(BaseScreen):
         await self.world.load_profile_based_on_beekepeer()
         await self.app.switch_mode("dashboard")
         self._remove_welcome_modes()
-        self.app.update_alarms_data_asap_on_newest_node_data()
+        self.app.update_alarms_data_asap_on_newest_node_data(suppress_cancelled_error=True)
         self.app.resume_refresh_node_data_interval()
         self.app.resume_refresh_alarms_data_interval()