The problem of crashing at the top of Z axis upon retract (and then having the cut run too deep as a consequence) when zeroing on the surface of thick stock and using a too large retract height value, is a common pitfall.
There have been many discussions about why limit switches are only active during jogging, and not during the cut, due to the risk of them false-triggering and ruining a job for no good reason. That makes sense.
But couldn’t CM take the Z-limit switch into account during the initial retract move too, and interrupt the job with an error message pop-up ?
I have not looked at the technical implications (e.g. how CM would figure out where the retract move is in the G-code, when running G-code that has not been generated by CC), but I think it could be a way to foolproof things a bit.