Index: src/services/ActivityPubService.js
===================================================================
--- src/services/ActivityPubService.js	(revision 4f15f67e63db354140cf9c47d228433f046f00a6)
+++ src/services/ActivityPubService.js	(revision 0a686a01435223f44a4aab1f0ddbc04502aa2fd2)
@@ -1412,6 +1412,10 @@
       const followObj = { id: followId, type: 'Follow', actor: who, object: wardActor };
       for (const g of wardGuardians) {
-        const gslug = slugFromActorUrl(g);
-        if (gslug) {
+        // Local ONLY when the guardian lives on THIS instance: slugFromActorUrl
+        // ignores the host (an /ap/users/x path on a remote host is someone
+        // else's actor), so also require our base + an existing local site.
+        const gslug = g.startsWith(`${base}/`) ? slugFromActorUrl(g) : null;
+        const isLocal = gslug && db.prepare('SELECT 1 FROM sites WHERE slug = ?').get(gslug);
+        if (isLocal) {
           const L = pushLang(gslug);
           pushEvent(gslug, { type: 'guardian', title: i18nT(L, 'push.n_guard_cog_t'), body: i18nT(L, 'push.n_guard_cog_b', { who: fi.name || fi.handle || i18nT(L, 'notif.someone') }), url: `${pushPrefix(gslug)}/guardian2` });
