A: The question here is, when your opponent played the Steal a Keeper Action, would they immediately gain possession of the Batcave, thereby protecting them from being Surprised? Or would the Surprise successfully prevent Steal a Keeper?
We would rule that the Surprise would work to prevent the Steal a Keeper Action, since, at the time the Action was played, your opponent did not yet have any protection. Assuming you played the Surprise quickly enough to stop the Action, i.e. before anything else happens (like another card being played), then the Surprise will be able to undo the Steal a Keeper Action. You’d better be playing that Surprise in a timely manner, though!
The issue here will arise if you think too long deciding whether to play that Surprise, because the Batcave may have already been moved to your opponent, and the longer it sits there, the longer it feels like it’s “theirs” and that it’s too late to undo the Action. Our official ruling on this is that, as long as the next game action has not occurred, your Surprise play should be sufficiently “surprising” to work.
Although we often talk about things being “instantaneous” in Fluxx, some things are “more instantaneous” than others. So, for example, a Surprise, when played for it’s out-of-turn function directly after a given card-play is so much “more instantaneous” that it retroactively cancels that previous card play.
It’s because it’s actually surprising the person it’s being played against. If the surprised player then counter-Surprises, by playing their own Surprise to cancel the immediately-previous Surprise, the counter-Surprise is always considered to be “even more surprising” as it were.
(If you have any doubt of this, just listen to a game where this happens, and you’ll hear the group exclaim louder and louder each time as each subsequent Surprise is played to counter a previous Surprise.) Another way to think of this is that the last Surprise played is effectively the “most surprising” and is therefore the “winning” effect.
See also: If multiple Surprises are canceled by each other, how do you figure out what happens in the end?
⟫⟫ The only exception to the rule of out-of-turn Surprises canceling the previous play is the playing of the actual Batcave itself.
See: Can I use That’s Mine to cancel the play of the Batcave?