I think it’s because StarterPlayer script and StarterCharacter scripts move to player by using clone, so you just got that script that is getting cloned - the og script. In other words, your script was just staying there and it can’t be seen by server, like server can’t see what client script do, and it’s true, just checked it:
print(script.Parent.Parent)
And if you change it to client side, becames local script, and changes it’s icon. But og local script can’t change their runcontext.
Every day learing something new