I’ve searched everywhere, seriously, about this issue. Has anyone made a non authoritative networking setup with their player prefabs having character controllers? I have two different prefabs, the normal player (with camera, etc.) and a “dummy” prefab that has what it needs. When the user logs on, a prefab of the normal player spawns as well as the corresponding dummies to the other players (Not using Network.Instantiate, just an RPC). Collision is fine until two characters decide to “joust” with one another, aka head straight towards each other at full speed. Either one or both fly in the air on impact. I’m assuming it’s because they’re getting into each others colliders, but no matter how much I change skin width/step offset, nothing changes. I’ve been trying to figure out if just restructuring the character to have a rigidbody instead would help, but the characters really don’t need physics interactions to be honest. Not to mention having a rigidbody and a character controller on each character would be more costly than no rigidbodies at all.
I saw a few posts about OnControllerColliderHit, tried a couple of things with no luck. Has anyone else had the same issues? Also, I’m sorry if this is in the wrong area >_<
Tried again with OnControllerColliderHit. I thought of stopping the interpolation for the dummies if they collided with a player or one another. My only issue right now is OnControllerColliderHit is never being called when i ram the dummy and player at one another. Collision over network information seems very sparse. Does anyone have any ideas? 
Hopefully this helps someone in the future. For the transform interpolation, there was the issue of the collider working the way it is supposed to, but the interpolation still moving char into the collider (if that makes sense). So, I ended up having a list on the dummies checking the distance between every player. If the player was too close, the dummy did not update it’s transform. This causes a slight pop (only seen by another character watching, the two jousting don’t notice). Not perfect, but it works.Keep track of the other players and before updating the transform, check for their distance. This way, when you don’t update, the dummy is static and collision happens fine.
I’ve had similar problems, and have decided to keep all collisions monitored by whichever player is the server. My game revolves around players recieving physic forces from certain objects around the game world, and players can instantiate these objects as the game progresses. I found the only way to create consistent forces being added to all players is i) Having the server instantiate and track everything, sending the positions of objects to other players. ii) Having the server detect collisions and then RPC to other players the correct forces when being hit by something.
This may however be completely wrong for your needs, and in general, im quite new to multiplayer :P. Thought i’d just share :).
Good luck!
are you using unity networking for this? i tested different servers and so far haven’t seen this, maybe it’s the scripts?