AddGameplayTags has no effect

Upon closer inspection of the source code it seems that GetOwnedGameplayTags returns a copy of the tags and is not suitable for editing them. In order to add tags without applying a gameplay effect, the only way is to use C++:

void ACharacterBase::AddGameplayAbilityTag(FGameplayTag tag)
{	
	GetAbilitySystemComponent()->AddLooseGameplayTag(tag);
}

I wonder if there is a way to use gameplay effects to add or remove tags based on character condition in the blueprint. If there is I would like to know, because this AddLoose function does not replicate and considering how basic of a use-case this is, I would have to implement all of the same replication logic that the ability system already has just to be able to do this.