I'm fairly new both as a DM and a roleplayer. I got into it a year ago and not a long time after that i started my own campaign. We have been at it for about a year or so, 5 players and me, and it's going relatively smoothly. I make a lot of mistakes, of course, mainly forgetting things or having to improvise (to varying deggrees of success) things i should have planned for.
We play a story-focused cinematic adventure based on the Curse of Strahd module for 5e.
Last saturday we were playing one of the final dungeons. The session got long and some of the players had to leave in the middle of the climax battle. We all agreed to end the session there, so i concluded the combat with a really cool scene and a grand reveal: Two long time friendly NPCs betrayed the party, suddenly becoming the Big Bad of the adventure, foreshadowing a cool final boss. It was not intended to affect the party mechanically, they lost nothing for it and they were properly rewarded for the dungeon exploration and the combat. It was only ment to change their objectives and made them rethink past events. Everyone was really happy with that, except for the rogue, that claims i shoud have allowed him to make an insight roll to discern intentions or lies, even tough he never even tried to talk or get to know the npcs.
Over the course of the adventure i tried to avoid Npc lies, playing them outright evasive or ambiguous, throwing some hints here and there that they were more than meets the eye, but had anyone tried to actually talk to them or suspected them i would have allowed for an insight roll and revealed the deceit early. But no one did.
Four of my five players were really excited about the sudden twist ("I expected so little about that NPC that i did not see it coming"), but the rogue was unhappy. He claims his character is a master in deceit (+9 decieve +9 insight) so he shoud have been given the chance to detect the lie. He claims i shoud have him throw insight when talking to a lying character, even if he as a player has no clue about it, completely giving away the secret and breaking the surprise for everyone.
I am not concerned about the rogue's behavior, it's not the first time and i can handle it. But it got me thinking about how the mechanics and narrative mix toghether, should i have given them more clues about the betrayal? How do i handle NPC's lying to the party to build up a plot twist? The only thing that comes to mind is doing the insight rolls in secret, but i don't think that would solve the issue.