So, the 5e Wish spell is effectively the "win the game" spell. I mean, one could wish that all evil in the world is gone, that the dark gods be destroyed, that reality itself unravel. Yeah, there are drawbacks, but for the potential gains, the drawbacks of wish are meaningless – heck, the players could wish that the drawbacks of wish were nonexistent, the spell is so powerful and loosely defined. However, I do want to let players cast it, if for no other reason then to see what the heck they wish for. Is there any way to balance or restrict Wish so that it doesn't automatically break the campaign, without rendering the spell pointless?
As far as I can see, there are a few main ways to "limit" the limitless spell. One way is the traditional "monkey's paw" method – give the players their wish, but in a way which renders it inneffective, useless, or even harmful to the players. For example, if a player wishes for a billion gold pieces, the gold spawns on top of them and crushes them to death. If the player wishes for their dead family to come back, they come back as zombies. This is generally the most consistent method, but my problem is that players can work around it – all they have to do is word their wish in a way where it's impossible for the genie or magic or whatever to twist their words. In other words, while more difficult, players can stil wish for pretty much anything they want even with the restriction.
Another method I myself thought of was based off a moment from the old "wishmaster" horror movies (evil genie who twists wishes, yadda yadda). Some girl wishes that the genie would be gone, but the genie can't do that, because, and I quote, "wishes can't change that which is eternal". I thought about sort of modifying this into a game thing. Like, the players COULD wish that Tiamat was obliterated, but because she's a literal god and gods are eternal, Tiamat could effectively counterspell the wish, resulting in the wish being wasted and the party having a VERY angry Tiamat on their ass.
Also, I could just ban the Wish spell altogether – but that just feels like railroading, and I mean, if a wizard gets to 9th level, you can't just tell him "you can't cast this spell" – by that logic, you may as well tell him he can't cast meteor storm or time warp or any of the other fun spells.
Finally, I could try and just give the players a list of things they couldn't wish for, a la "Aladdin" where the genie says how you can't wish for more wishes, etc etc. However, with the potential to break the campaign being so prevalent in wish, I'd have to extend the list to a ridiculous amount – "no wishing away gods", "no wishing gods couldn't affect mortals", "no wishing gods were feebleminded", etc etc. That would be boring and unfun for both me and the players, and subsequently pretty much defeat the point of Wish.
My question to fellow DM's of higher level games – what do you use to ensure that players don't totally break your campaign by just wishing the BBEG away?