Why am I getting 2 different results with RotateAround? Trying to move cubes on surface of sphere.

I have the following line in a script on cubes that are spawned as children on the surface of a sphere.
transform.RotateAround (Vector3.zero, -Vector3.up, -5);

It works relatively well however I want the cubes to rotate around an axis parallel to their forward vector that goes through the center of the sphere they are on. I tried the following

transform.RotateAround (Vector3.zero, transform.forward, 5);

This makes the cubes rotate about an axis going through THEIR center and doesn’t move them along the sphere.
With the second approach I feel that the behavior of RotateAround is somehow changing. Regardless of where the cube is on the sphere they are only rotating about their own axes.

Am I missing something about how this works? Please let me know if I can clarify.

A couple of things. Position matters. If you place your block on top of the sphere to start, then your rotation should work. Next, if the sphere is not rotated during the game, consider using Vector3.forward instead of transorm.forward. Also you should be multiplying by Time.deltaTime to keep your code frame rate independent.

transform.RotateAround (Vector3.zero, Vector.forward, 50 * Time.deltaTime);