Are you confident that the three points lie on a circle and not an ellipse? That has been an issue I have seen in the past, when I did not have the points on an actual circle it did some funny stuff. Have you tried just teaching 3 known points that lie on a circle and see if the issue remains?

Basically, no it would not try to follow the green line, it would try to follow the black line, maintaining tangency to the 3 points. I recommend reading this UR support site topic about using a circle move to create a 360 degree circle, maybe it will provide some clarification.
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/circle-using-movec-16270/
I wrote a program that has a MoveP with a CircleMove with three waypoints.
The three points are variable waypoints that are defined by dimensional inputs, some math, and a pose_trans function from a manually define starting waypoint. I have no problem moving between these waypoints with a MoveL command, so I know my math is correct. However, I run into two issues when I try to use the MoveP with the CircleMove:
- The TCP does not pass through the second waypoint (cornern1_mid) as I intend. Also, it seems to deviate more noticeably when the corner radius decreases. I do not have this issue with MoveL commands. What could be causing this issue?
- Wrist 3 over-rotates a consistent amount. As part of the pose_trans function, I specify a 90 degree (1.5708 radian) turn (e.g. p[x,y,0,0,0,-1.5708]). However, it will over-rotate about 10 degrees, so I have to set the last value to -1.4 radians to compensate for the over-rotation.
Again, I have no issues hitting those three way-points with a MoveL command, so I am highly confident that there is nothing wrong with the math. There must be something that I don't understand about the MoveP function that I am missing.