I realize it might feel awkward, but this is how it was intentionally coded. When you start an extrude it chooses a constraint automatically. It then behaves like any constraint you set in transform, which requires you to cycle through the options. Try regular ‘grab’ to experiment a bit with all constrainting shortcuts. Issue of “consistent” versus “expectations”…
Not a bug. Ton is right in his description.Transform constraints cycle between the following states: off, global axis, user selected axisWhen extruding an edge or two vertices, the user selected orientation is replaced with normal orientation and transformation is constrained to the plane perpendicular to that edge (locking normal Z), as such, it’s now at the “user selected axis” step in the cycle.
Pressing Z cycles to the next option which is Off.Pressing any other axis turns off the current constraint and cycles the selected one. So if you press X, it will cycle to global X axis constrained (or locked if you pressed Shift-X).
Another time will cycle to normal axis X and another time to Off.
Extruding faces does the same thing except it constrains to normal Z instead of locking it. That is, pressing Z again will cycle to Off.Moreover, the two axis are not determined in a random fashion. First, the Z axis is aligned with the edge and the Y axis is aligned opposite to the average of the normal of both vertices making the edge. The X axis follows logically. This means that for a normal surface, Z and X will be the tangent and the binormal, respectively.