diff --git a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
index 3d028196eda58290f738ef163d8ea61e41137948..002001d7e1be09390905538476e3b6b65eedf451 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
@@ -217,8 +217,10 @@ class ClientVersioningManagerImpl implements ClientVersioningManager, Client,
 			Map<ClientMajorVersion, Visibility> after =
 					getVisibilities(newLocalStates, newRemoteStates);
 			// Call hooks for any visibilities that have changed
-			Contact c = getContact(txn, m.getGroupId());
-			callVisibilityHooks(txn, c, before, after);
+			if (!before.equals(after)) {
+				Contact c = getContact(txn, m.getGroupId());
+				callVisibilityHooks(txn, c, before, after);
+			}
 		} catch (FormatException e) {
 			throw new InvalidMessageException(e);
 		}