This is still a tough one for me, and I find that my attitude toward it is rather inconsistent. It depends on my mood, which can also depend on how well I'm playing.
I'm very generous with obvious misclicks/UI-induced errors (like Crown with no actions).
I'll even allow undo after misclicks or mistakes that have revealed new information -- within reason.
The area I'm undecided on are cases where the player has simply changed their mind (for example, which buys to execute or which terminal to play) even if no new information has been revealed. I generally allow these, too, but I feel less okay with it. Not sure why that is.
In all cases where it's not obvious, I prefer that the Undo request is accompanied by a message explaining the reason.
Quoting myself to highlight a case that happened in a game yesterday which (to me) illustrates one of downsides of enforcing a strict Undo policy.
In a close game my opponent had several (6? I think) Wild Hunts and was likely going to play all of them, gain the last Estate and buy a Province.
After the fifth Wild Hunt was played for cards, my opponent had no actions left, and couldn't play the 6th Wild Hunt (presumably in hand) to gain the Estate and the points on the Wild Hunt pile. He/she requested an Undo. I pointedly asked if it was truly a misclick or a too-late realization that there weren't enough actions. He/she said it was a simple misclick. I then granted the 'Undo' and felt fine about it.
I bring this up because:
A) There was new information revealed by the terminal WIld Hunt, but it was hardly relevant. The decision to Undo could not have been influenced by that new information (in this case).
B) I chose to believe my opponent that this was a simple misclick; if the system had no means to allow this Undo, I would've felt terrible winning on such a misclick.