diff --git a/api_proto/kill_switch_objects.pb.go b/api_proto/kill_switch_objects.pb.go
index 825047f..f449ce6 100644
--- a/api_proto/kill_switch_objects.pb.go
+++ b/api_proto/kill_switch_objects.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.17.3
+// 	protoc-gen-go v1.26.0
+// 	protoc        v3.17.1
 // source: api_proto/kill_switch_objects.proto
 
 package api_proto
@@ -348,8 +348,8 @@
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	KillSwitchFrom *KillSwitch `protobuf:"bytes,1,opt,name=kill_switch_from,json=killSwitchFrom,proto3" json:"kill_switch_from,omitempty"`
-	KillSwitchTo   *KillSwitch `protobuf:"bytes,2,opt,name=kill_switch_to,json=killSwitchTo,proto3" json:"kill_switch_to,omitempty"`
+	Old *KillSwitch `protobuf:"bytes,1,opt,name=old,proto3" json:"old,omitempty"`
+	New *KillSwitch `protobuf:"bytes,2,opt,name=new,proto3" json:"new,omitempty"`
 }
 
 func (x *KillSwitchTransformation) Reset() {
@@ -384,16 +384,71 @@
 	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{3}
 }
 
-func (x *KillSwitchTransformation) GetKillSwitchFrom() *KillSwitch {
+func (x *KillSwitchTransformation) GetOld() *KillSwitch {
 	if x != nil {
-		return x.KillSwitchFrom
+		return x.Old
 	}
 	return nil
 }
 
-func (x *KillSwitchTransformation) GetKillSwitchTo() *KillSwitch {
+func (x *KillSwitchTransformation) GetNew() *KillSwitch {
 	if x != nil {
-		return x.KillSwitchTo
+		return x.New
+	}
+	return nil
+}
+
+type AuthorizedUserTransformation struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Old *KillSwitchAuthorizedUser `protobuf:"bytes,1,opt,name=old,proto3" json:"old,omitempty"`
+	New *KillSwitchAuthorizedUser `protobuf:"bytes,2,opt,name=new,proto3" json:"new,omitempty"`
+}
+
+func (x *AuthorizedUserTransformation) Reset() {
+	*x = AuthorizedUserTransformation{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AuthorizedUserTransformation) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthorizedUserTransformation) ProtoMessage() {}
+
+func (x *AuthorizedUserTransformation) ProtoReflect() protoreflect.Message {
+	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AuthorizedUserTransformation.ProtoReflect.Descriptor instead.
+func (*AuthorizedUserTransformation) Descriptor() ([]byte, []int) {
+	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *AuthorizedUserTransformation) GetOld() *KillSwitchAuthorizedUser {
+	if x != nil {
+		return x.Old
+	}
+	return nil
+}
+
+func (x *AuthorizedUserTransformation) GetNew() *KillSwitchAuthorizedUser {
+	if x != nil {
+		return x.New
 	}
 	return nil
 }
@@ -413,13 +468,16 @@
 	// Types that are assignable to Description:
 	//	*KillSwitchAuditLogEntry_KillSwitchEnabled_
 	//	*KillSwitchAuditLogEntry_KillSwitchDisabled_
+	//	*KillSwitchAuditLogEntry_AuthorizedUserAdded_
+	//	*KillSwitchAuditLogEntry_AuthorizedUserUpdated_
+	//	*KillSwitchAuditLogEntry_AuthorizedUserDeleted_
 	Description isKillSwitchAuditLogEntry_Description `protobuf_oneof:"description"`
 }
 
 func (x *KillSwitchAuditLogEntry) Reset() {
 	*x = KillSwitchAuditLogEntry{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[4]
+		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[5]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -432,7 +490,7 @@
 func (*KillSwitchAuditLogEntry) ProtoMessage() {}
 
 func (x *KillSwitchAuditLogEntry) ProtoReflect() protoreflect.Message {
-	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[4]
+	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[5]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -445,7 +503,7 @@
 
 // Deprecated: Use KillSwitchAuditLogEntry.ProtoReflect.Descriptor instead.
 func (*KillSwitchAuditLogEntry) Descriptor() ([]byte, []int) {
-	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{4}
+	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{5}
 }
 
 func (x *KillSwitchAuditLogEntry) GetTimestamp() *timestamppb.Timestamp {
@@ -483,6 +541,27 @@
 	return nil
 }
 
+func (x *KillSwitchAuditLogEntry) GetAuthorizedUserAdded() *KillSwitchAuditLogEntry_AuthorizedUserAdded {
+	if x, ok := x.GetDescription().(*KillSwitchAuditLogEntry_AuthorizedUserAdded_); ok {
+		return x.AuthorizedUserAdded
+	}
+	return nil
+}
+
+func (x *KillSwitchAuditLogEntry) GetAuthorizedUserUpdated() *KillSwitchAuditLogEntry_AuthorizedUserUpdated {
+	if x, ok := x.GetDescription().(*KillSwitchAuditLogEntry_AuthorizedUserUpdated_); ok {
+		return x.AuthorizedUserUpdated
+	}
+	return nil
+}
+
+func (x *KillSwitchAuditLogEntry) GetAuthorizedUserDeleted() *KillSwitchAuditLogEntry_AuthorizedUserDeleted {
+	if x, ok := x.GetDescription().(*KillSwitchAuditLogEntry_AuthorizedUserDeleted_); ok {
+		return x.AuthorizedUserDeleted
+	}
+	return nil
+}
+
 type isKillSwitchAuditLogEntry_Description interface {
 	isKillSwitchAuditLogEntry_Description()
 }
@@ -495,22 +574,40 @@
 	KillSwitchDisabled *KillSwitchAuditLogEntry_KillSwitchDisabled `protobuf:"bytes,4,opt,name=kill_switch_disabled,json=killSwitchDisabled,proto3,oneof"`
 }
 
+type KillSwitchAuditLogEntry_AuthorizedUserAdded_ struct {
+	AuthorizedUserAdded *KillSwitchAuditLogEntry_AuthorizedUserAdded `protobuf:"bytes,5,opt,name=authorized_user_added,json=authorizedUserAdded,proto3,oneof"`
+}
+
+type KillSwitchAuditLogEntry_AuthorizedUserUpdated_ struct {
+	AuthorizedUserUpdated *KillSwitchAuditLogEntry_AuthorizedUserUpdated `protobuf:"bytes,6,opt,name=authorized_user_updated,json=authorizedUserUpdated,proto3,oneof"`
+}
+
+type KillSwitchAuditLogEntry_AuthorizedUserDeleted_ struct {
+	AuthorizedUserDeleted *KillSwitchAuditLogEntry_AuthorizedUserDeleted `protobuf:"bytes,7,opt,name=authorized_user_deleted,json=authorizedUserDeleted,proto3,oneof"`
+}
+
 func (*KillSwitchAuditLogEntry_KillSwitchEnabled_) isKillSwitchAuditLogEntry_Description() {}
 
 func (*KillSwitchAuditLogEntry_KillSwitchDisabled_) isKillSwitchAuditLogEntry_Description() {}
 
+func (*KillSwitchAuditLogEntry_AuthorizedUserAdded_) isKillSwitchAuditLogEntry_Description() {}
+
+func (*KillSwitchAuditLogEntry_AuthorizedUserUpdated_) isKillSwitchAuditLogEntry_Description() {}
+
+func (*KillSwitchAuditLogEntry_AuthorizedUserDeleted_) isKillSwitchAuditLogEntry_Description() {}
+
 type KillSwitchAuditLogEntry_KillSwitchEnabled struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Transformation *KillSwitchTransformation `protobuf:"bytes,1,opt,name=transformation,proto3" json:"transformation,omitempty"`
+	KillSwitch *KillSwitch `protobuf:"bytes,1,opt,name=kill_switch,json=killSwitch,proto3" json:"kill_switch,omitempty"`
 }
 
 func (x *KillSwitchAuditLogEntry_KillSwitchEnabled) Reset() {
 	*x = KillSwitchAuditLogEntry_KillSwitchEnabled{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[5]
+		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[6]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -523,7 +620,7 @@
 func (*KillSwitchAuditLogEntry_KillSwitchEnabled) ProtoMessage() {}
 
 func (x *KillSwitchAuditLogEntry_KillSwitchEnabled) ProtoReflect() protoreflect.Message {
-	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[5]
+	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[6]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -536,12 +633,12 @@
 
 // Deprecated: Use KillSwitchAuditLogEntry_KillSwitchEnabled.ProtoReflect.Descriptor instead.
 func (*KillSwitchAuditLogEntry_KillSwitchEnabled) Descriptor() ([]byte, []int) {
-	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{4, 0}
+	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{5, 0}
 }
 
-func (x *KillSwitchAuditLogEntry_KillSwitchEnabled) GetTransformation() *KillSwitchTransformation {
+func (x *KillSwitchAuditLogEntry_KillSwitchEnabled) GetKillSwitch() *KillSwitch {
 	if x != nil {
-		return x.Transformation
+		return x.KillSwitch
 	}
 	return nil
 }
@@ -557,7 +654,7 @@
 func (x *KillSwitchAuditLogEntry_KillSwitchDisabled) Reset() {
 	*x = KillSwitchAuditLogEntry_KillSwitchDisabled{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[6]
+		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[7]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -570,7 +667,7 @@
 func (*KillSwitchAuditLogEntry_KillSwitchDisabled) ProtoMessage() {}
 
 func (x *KillSwitchAuditLogEntry_KillSwitchDisabled) ProtoReflect() protoreflect.Message {
-	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[6]
+	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[7]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -583,7 +680,7 @@
 
 // Deprecated: Use KillSwitchAuditLogEntry_KillSwitchDisabled.ProtoReflect.Descriptor instead.
 func (*KillSwitchAuditLogEntry_KillSwitchDisabled) Descriptor() ([]byte, []int) {
-	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{4, 1}
+	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{5, 1}
 }
 
 func (x *KillSwitchAuditLogEntry_KillSwitchDisabled) GetTransformation() *KillSwitchTransformation {
@@ -593,6 +690,147 @@
 	return nil
 }
 
+type KillSwitchAuditLogEntry_AuthorizedUserAdded struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	User *KillSwitchAuthorizedUser `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserAdded) Reset() {
+	*x = KillSwitchAuditLogEntry_AuthorizedUserAdded{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserAdded) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KillSwitchAuditLogEntry_AuthorizedUserAdded) ProtoMessage() {}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserAdded) ProtoReflect() protoreflect.Message {
+	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KillSwitchAuditLogEntry_AuthorizedUserAdded.ProtoReflect.Descriptor instead.
+func (*KillSwitchAuditLogEntry_AuthorizedUserAdded) Descriptor() ([]byte, []int) {
+	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{5, 2}
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserAdded) GetUser() *KillSwitchAuthorizedUser {
+	if x != nil {
+		return x.User
+	}
+	return nil
+}
+
+type KillSwitchAuditLogEntry_AuthorizedUserUpdated struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Transformation *AuthorizedUserTransformation `protobuf:"bytes,1,opt,name=transformation,proto3" json:"transformation,omitempty"`
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserUpdated) Reset() {
+	*x = KillSwitchAuditLogEntry_AuthorizedUserUpdated{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserUpdated) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KillSwitchAuditLogEntry_AuthorizedUserUpdated) ProtoMessage() {}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserUpdated) ProtoReflect() protoreflect.Message {
+	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KillSwitchAuditLogEntry_AuthorizedUserUpdated.ProtoReflect.Descriptor instead.
+func (*KillSwitchAuditLogEntry_AuthorizedUserUpdated) Descriptor() ([]byte, []int) {
+	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{5, 3}
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserUpdated) GetTransformation() *AuthorizedUserTransformation {
+	if x != nil {
+		return x.Transformation
+	}
+	return nil
+}
+
+type KillSwitchAuditLogEntry_AuthorizedUserDeleted struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	OldUser *KillSwitchAuthorizedUser `protobuf:"bytes,1,opt,name=old_user,json=oldUser,proto3" json:"old_user,omitempty"`
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserDeleted) Reset() {
+	*x = KillSwitchAuditLogEntry_AuthorizedUserDeleted{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_proto_kill_switch_objects_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserDeleted) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KillSwitchAuditLogEntry_AuthorizedUserDeleted) ProtoMessage() {}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserDeleted) ProtoReflect() protoreflect.Message {
+	mi := &file_api_proto_kill_switch_objects_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KillSwitchAuditLogEntry_AuthorizedUserDeleted.ProtoReflect.Descriptor instead.
+func (*KillSwitchAuditLogEntry_AuthorizedUserDeleted) Descriptor() ([]byte, []int) {
+	return file_api_proto_kill_switch_objects_proto_rawDescGZIP(), []int{5, 4}
+}
+
+func (x *KillSwitchAuditLogEntry_AuthorizedUserDeleted) GetOldUser() *KillSwitchAuthorizedUser {
+	if x != nil {
+		return x.OldUser
+	}
+	return nil
+}
+
 var File_api_proto_kill_switch_objects_proto protoreflect.FileDescriptor
 
 var file_api_proto_kill_switch_objects_proto_rawDesc = []byte{
@@ -642,51 +880,89 @@
 	0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
 	0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x41,
 	0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x44, 0x4d, 0x49,
-	0x4e, 0x10, 0x02, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74,
-	0x63, 0x68, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x35, 0x0a, 0x10, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f,
-	0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4b, 0x69, 0x6c,
-	0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x0e, 0x6b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69,
-	0x74, 0x63, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x0e, 0x6b, 0x69, 0x6c, 0x6c, 0x5f,
-	0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x0b, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x6b, 0x69,
-	0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x6f, 0x22, 0x81, 0x04, 0x0a, 0x17, 0x4b,
-	0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f,
-	0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x2d, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
-	0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f,
-	0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12,
-	0x5c, 0x0a, 0x13, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65,
-	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x4b,
-	0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f,
-	0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63,
-	0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x11, 0x6b, 0x69, 0x6c, 0x6c,
-	0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x5f, 0x0a,
-	0x14, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x69, 0x73,
-	0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x4b, 0x69,
-	0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
-	0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x6b, 0x69, 0x6c, 0x6c,
-	0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x56,
-	0x0a, 0x11, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62,
-	0x6c, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4b, 0x69,
-	0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72,
-	0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72,
-	0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x57, 0x0a, 0x12, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77,
+	0x4e, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x18, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63,
+	0x68, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x1d, 0x0a, 0x03, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4b,
+	0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x1d,
+	0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4b, 0x69,
+	0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x22, 0x78, 0x0a,
+	0x1c, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x54,
+	0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a,
+	0x03, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4b, 0x69, 0x6c,
+	0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65,
+	0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x03, 0x6e, 0x65,
+	0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77,
+	0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73,
+	0x65, 0x72, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x22, 0x99, 0x08, 0x0a, 0x17, 0x4b, 0x69, 0x6c, 0x6c,
+	0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2d, 0x0a,
+	0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4b, 0x69,
+	0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a,
+	0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x13,
+	0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62,
+	0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x4b, 0x69, 0x6c, 0x6c,
+	0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e,
+	0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x11, 0x6b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69,
+	0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x5f, 0x0a, 0x14, 0x6b, 0x69,
+	0x6c, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
+	0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53,
+	0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69, 0x73,
+	0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x6b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69,
+	0x74, 0x63, 0x68, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x15, 0x61,
+	0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61,
+	0x64, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x4b, 0x69, 0x6c,
+	0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55,
+	0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x13, 0x61, 0x75, 0x74, 0x68,
+	0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12,
+	0x68, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x75, 0x73,
+	0x65, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2e, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64,
+	0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f,
+	0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+	0x48, 0x00, 0x52, 0x15, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73,
+	0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x68, 0x0a, 0x17, 0x61, 0x75, 0x74,
+	0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x6c,
+	0x65, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x4b, 0x69, 0x6c,
+	0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55,
+	0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x15, 0x61, 0x75,
+	0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x64, 0x1a, 0x41, 0x0a, 0x11, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63,
+	0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x6b, 0x69, 0x6c, 0x6c,
+	0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
+	0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x0a, 0x6b, 0x69, 0x6c, 0x6c,
+	0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0x57, 0x0a, 0x12, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77,
 	0x69, 0x74, 0x63, 0x68, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x0e,
 	0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
 	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63,
 	0x68, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42,
-	0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x2e,
-	0x5a, 0x2c, 0x67, 0x6f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x61, 0x76, 0x6d, 0x39,
-	0x39, 0x39, 0x36, 0x33, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x77, 0x70, 0x74, 0x2d, 0x73, 0x65,
-	0x72, 0x76, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a,
+	0x44, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65,
+	0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63,
+	0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52,
+	0x04, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x5e, 0x0a, 0x15, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
+	0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x45,
+	0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
+	0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x4d, 0x0a, 0x15, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
+	0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x34,
+	0x0a, 0x08, 0x6f, 0x6c, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x75, 0x74,
+	0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x07, 0x6f, 0x6c, 0x64,
+	0x55, 0x73, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x6f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
+	0x2e, 0x61, 0x76, 0x6d, 0x39, 0x39, 0x39, 0x36, 0x33, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x77,
+	0x70, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -702,38 +978,50 @@
 }
 
 var file_api_proto_kill_switch_objects_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_api_proto_kill_switch_objects_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_api_proto_kill_switch_objects_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
 var file_api_proto_kill_switch_objects_proto_goTypes = []interface{}{
-	(Feature_Type)(0),                                  // 0: Feature.Type
-	(KillSwitchAuthorizedUser_AccessLevel)(0),          // 1: KillSwitchAuthorizedUser.AccessLevel
-	(*Feature)(nil),                                    // 2: Feature
-	(*KillSwitch)(nil),                                 // 3: KillSwitch
-	(*KillSwitchAuthorizedUser)(nil),                   // 4: KillSwitchAuthorizedUser
-	(*KillSwitchTransformation)(nil),                   // 5: KillSwitchTransformation
-	(*KillSwitchAuditLogEntry)(nil),                    // 6: KillSwitchAuditLogEntry
-	(*KillSwitchAuditLogEntry_KillSwitchEnabled)(nil),  // 7: KillSwitchAuditLogEntry.KillSwitchEnabled
-	(*KillSwitchAuditLogEntry_KillSwitchDisabled)(nil), // 8: KillSwitchAuditLogEntry.KillSwitchDisabled
-	(Environment_Browser)(0),                           // 9: Environment.Browser
-	(*timestamppb.Timestamp)(nil),                      // 10: google.protobuf.Timestamp
+	(Feature_Type)(0),                                     // 0: Feature.Type
+	(KillSwitchAuthorizedUser_AccessLevel)(0),             // 1: KillSwitchAuthorizedUser.AccessLevel
+	(*Feature)(nil),                                       // 2: Feature
+	(*KillSwitch)(nil),                                    // 3: KillSwitch
+	(*KillSwitchAuthorizedUser)(nil),                      // 4: KillSwitchAuthorizedUser
+	(*KillSwitchTransformation)(nil),                      // 5: KillSwitchTransformation
+	(*AuthorizedUserTransformation)(nil),                  // 6: AuthorizedUserTransformation
+	(*KillSwitchAuditLogEntry)(nil),                       // 7: KillSwitchAuditLogEntry
+	(*KillSwitchAuditLogEntry_KillSwitchEnabled)(nil),     // 8: KillSwitchAuditLogEntry.KillSwitchEnabled
+	(*KillSwitchAuditLogEntry_KillSwitchDisabled)(nil),    // 9: KillSwitchAuditLogEntry.KillSwitchDisabled
+	(*KillSwitchAuditLogEntry_AuthorizedUserAdded)(nil),   // 10: KillSwitchAuditLogEntry.AuthorizedUserAdded
+	(*KillSwitchAuditLogEntry_AuthorizedUserUpdated)(nil), // 11: KillSwitchAuditLogEntry.AuthorizedUserUpdated
+	(*KillSwitchAuditLogEntry_AuthorizedUserDeleted)(nil), // 12: KillSwitchAuditLogEntry.AuthorizedUserDeleted
+	(Environment_Browser)(0),                              // 13: Environment.Browser
+	(*timestamppb.Timestamp)(nil),                         // 14: google.protobuf.Timestamp
 }
 var file_api_proto_kill_switch_objects_proto_depIdxs = []int32{
 	0,  // 0: Feature.type:type_name -> Feature.Type
 	2,  // 1: KillSwitch.feature:type_name -> Feature
-	9,  // 2: KillSwitch.browsers:type_name -> Environment.Browser
+	13, // 2: KillSwitch.browsers:type_name -> Environment.Browser
 	1,  // 3: KillSwitchAuthorizedUser.access_level:type_name -> KillSwitchAuthorizedUser.AccessLevel
-	3,  // 4: KillSwitchTransformation.kill_switch_from:type_name -> KillSwitch
-	3,  // 5: KillSwitchTransformation.kill_switch_to:type_name -> KillSwitch
-	10, // 6: KillSwitchAuditLogEntry.timestamp:type_name -> google.protobuf.Timestamp
-	4,  // 7: KillSwitchAuditLogEntry.user:type_name -> KillSwitchAuthorizedUser
-	7,  // 8: KillSwitchAuditLogEntry.kill_switch_enabled:type_name -> KillSwitchAuditLogEntry.KillSwitchEnabled
-	8,  // 9: KillSwitchAuditLogEntry.kill_switch_disabled:type_name -> KillSwitchAuditLogEntry.KillSwitchDisabled
-	5,  // 10: KillSwitchAuditLogEntry.KillSwitchEnabled.transformation:type_name -> KillSwitchTransformation
-	5,  // 11: KillSwitchAuditLogEntry.KillSwitchDisabled.transformation:type_name -> KillSwitchTransformation
-	12, // [12:12] is the sub-list for method output_type
-	12, // [12:12] is the sub-list for method input_type
-	12, // [12:12] is the sub-list for extension type_name
-	12, // [12:12] is the sub-list for extension extendee
-	0,  // [0:12] is the sub-list for field type_name
+	3,  // 4: KillSwitchTransformation.old:type_name -> KillSwitch
+	3,  // 5: KillSwitchTransformation.new:type_name -> KillSwitch
+	4,  // 6: AuthorizedUserTransformation.old:type_name -> KillSwitchAuthorizedUser
+	4,  // 7: AuthorizedUserTransformation.new:type_name -> KillSwitchAuthorizedUser
+	14, // 8: KillSwitchAuditLogEntry.timestamp:type_name -> google.protobuf.Timestamp
+	4,  // 9: KillSwitchAuditLogEntry.user:type_name -> KillSwitchAuthorizedUser
+	8,  // 10: KillSwitchAuditLogEntry.kill_switch_enabled:type_name -> KillSwitchAuditLogEntry.KillSwitchEnabled
+	9,  // 11: KillSwitchAuditLogEntry.kill_switch_disabled:type_name -> KillSwitchAuditLogEntry.KillSwitchDisabled
+	10, // 12: KillSwitchAuditLogEntry.authorized_user_added:type_name -> KillSwitchAuditLogEntry.AuthorizedUserAdded
+	11, // 13: KillSwitchAuditLogEntry.authorized_user_updated:type_name -> KillSwitchAuditLogEntry.AuthorizedUserUpdated
+	12, // 14: KillSwitchAuditLogEntry.authorized_user_deleted:type_name -> KillSwitchAuditLogEntry.AuthorizedUserDeleted
+	3,  // 15: KillSwitchAuditLogEntry.KillSwitchEnabled.kill_switch:type_name -> KillSwitch
+	5,  // 16: KillSwitchAuditLogEntry.KillSwitchDisabled.transformation:type_name -> KillSwitchTransformation
+	4,  // 17: KillSwitchAuditLogEntry.AuthorizedUserAdded.user:type_name -> KillSwitchAuthorizedUser
+	6,  // 18: KillSwitchAuditLogEntry.AuthorizedUserUpdated.transformation:type_name -> AuthorizedUserTransformation
+	4,  // 19: KillSwitchAuditLogEntry.AuthorizedUserDeleted.old_user:type_name -> KillSwitchAuthorizedUser
+	20, // [20:20] is the sub-list for method output_type
+	20, // [20:20] is the sub-list for method input_type
+	20, // [20:20] is the sub-list for extension type_name
+	20, // [20:20] is the sub-list for extension extendee
+	0,  // [0:20] is the sub-list for field type_name
 }
 
 func init() { file_api_proto_kill_switch_objects_proto_init() }
@@ -792,7 +1080,7 @@
 			}
 		}
 		file_api_proto_kill_switch_objects_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KillSwitchAuditLogEntry); i {
+			switch v := v.(*AuthorizedUserTransformation); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -804,7 +1092,7 @@
 			}
 		}
 		file_api_proto_kill_switch_objects_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KillSwitchAuditLogEntry_KillSwitchEnabled); i {
+			switch v := v.(*KillSwitchAuditLogEntry); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -816,6 +1104,18 @@
 			}
 		}
 		file_api_proto_kill_switch_objects_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*KillSwitchAuditLogEntry_KillSwitchEnabled); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_proto_kill_switch_objects_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*KillSwitchAuditLogEntry_KillSwitchDisabled); i {
 			case 0:
 				return &v.state
@@ -827,10 +1127,49 @@
 				return nil
 			}
 		}
+		file_api_proto_kill_switch_objects_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*KillSwitchAuditLogEntry_AuthorizedUserAdded); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_proto_kill_switch_objects_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*KillSwitchAuditLogEntry_AuthorizedUserUpdated); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_proto_kill_switch_objects_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*KillSwitchAuditLogEntry_AuthorizedUserDeleted); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
 	}
-	file_api_proto_kill_switch_objects_proto_msgTypes[4].OneofWrappers = []interface{}{
+	file_api_proto_kill_switch_objects_proto_msgTypes[5].OneofWrappers = []interface{}{
 		(*KillSwitchAuditLogEntry_KillSwitchEnabled_)(nil),
 		(*KillSwitchAuditLogEntry_KillSwitchDisabled_)(nil),
+		(*KillSwitchAuditLogEntry_AuthorizedUserAdded_)(nil),
+		(*KillSwitchAuditLogEntry_AuthorizedUserUpdated_)(nil),
+		(*KillSwitchAuditLogEntry_AuthorizedUserDeleted_)(nil),
 	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
@@ -838,7 +1177,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_api_proto_kill_switch_objects_proto_rawDesc,
 			NumEnums:      2,
-			NumMessages:   7,
+			NumMessages:   11,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
