diff --git a/Syncbase/Source/AccessList.swift b/Syncbase/Source/AccessList.swift
index 5cb2032..5710c0c 100644
--- a/Syncbase/Source/AccessList.swift
+++ b/Syncbase/Source/AccessList.swift
@@ -73,8 +73,25 @@
     }
   }
 
+  static func applyDeltaForCollection(permissions: Permissions, delta: AccessList) throws -> Permissions {
+    let parsed = try applyDeltaParsed(permissions, delta: delta)
+    var filtered: Permissions = [:]
+    filtered[Tags.Read.rawValue] = parsed[Tags.Read.rawValue]
+    filtered[Tags.Write.rawValue] = parsed[Tags.Write.rawValue]
+    filtered[Tags.Admin.rawValue] = parsed[Tags.Admin.rawValue]
+    return filtered
+  }
+
+  static func applyDeltaForSyncgroup(permissions: Permissions, delta: AccessList) throws -> Permissions {
+    let parsed = try applyDeltaParsed(permissions, delta: delta)
+    var filtered: Permissions = [:]
+    filtered[Tags.Read.rawValue] = parsed[Tags.Read.rawValue]
+    filtered[Tags.Admin.rawValue] = parsed[Tags.Admin.rawValue]
+    return filtered
+  }
+
   /// Applies delta to perms, returning the updates permissions.
-  static func applyDelta(permissions: Permissions, delta: AccessList) throws -> Permissions {
+  static func applyDeltaParsed(permissions: Permissions, delta: AccessList) throws -> Permissions {
     var perms = permissions
     for (userId, level) in delta.users {
       let bp = try blessingPatternFromAlias(userId)
diff --git a/Syncbase/Source/Collection.swift b/Syncbase/Source/Collection.swift
index ece4d19..43fb4a5 100644
--- a/Syncbase/Source/Collection.swift
+++ b/Syncbase/Source/Collection.swift
@@ -113,7 +113,7 @@
       try SyncbaseError.wrap {
         let vCx = try db.collection(self.collectionId).coreCollection
         let perms = try vCx.getPermissions()
-        try AccessList.applyDelta(perms, delta: delta)
+        try AccessList.applyDeltaForCollection(perms, delta: delta)
         try vCx.setPermissions(perms)
       }
     }
diff --git a/Syncbase/Source/Syncgroup.swift b/Syncbase/Source/Syncgroup.swift
index 615de16..cbb8803 100644
--- a/Syncbase/Source/Syncgroup.swift
+++ b/Syncbase/Source/Syncgroup.swift
@@ -114,7 +114,7 @@
     try SyncbaseError.wrap {
       // TODO(sadovsky): Make it so SyncgroupSpec can be updated as part of a batch?
       let versionedSpec = try self.coreSyncgroup.getSpec()
-      let permissions = try AccessList.applyDelta(versionedSpec.spec.permissions, delta: delta)
+      let permissions = try AccessList.applyDeltaForSyncgroup(versionedSpec.spec.permissions, delta: delta)
       let oldSpec = versionedSpec.spec
       try self.coreSyncgroup.setSpec(VersionedSpec(
         spec: SyncgroupSpec(description: oldSpec.description,
