SpawnWithClientAuthority does not work

This code successfully spawns a object when a new player connects but hasAuthority is false the same as if it was create using the normal network spawn.

public override void OnServerConnect(NetworkConnection conn)
{
base.OnServerConnect(conn);
//playerBehaviour
var p = GameObject.Instantiate(playerBehaviour);
NetworkServer.SpawnWithClientAuthority(p.gameObject, conn);
}

So apparently SpawnWithClientAuthority only works if localPlayerAuthority is false

Half of my confusion learning unet is with local player authority and client authority being completely separate systems with separate rules.

EDIT:

so having it flagged to false gives a error message but works while true gives no error message but does not work