Pass moves are not played in the play-out phase of the simulations as long as there are still moves for which GoUctUtil::GeneratePoint returns true, which are mainly moves that don't fill single point eyes (see GoUctUtil::GeneratePoint and GoBoardUtil::IsCompletelySurrounded for an exact definition). Therefore, it is a requirement on GoUctPlayoutPolicy::GenerateMove, not to return pass moves earlier.
This requirement ensures that all simulated games terminate (as long as there is no super-ko cycle, because for speed reasons only simple ko's are checked) and that the terminal position after two passes in a row is a position that can be quickly evaluated with GoBoardUtil::ScoreSimpleEndPosition.
In the in-tree-phase of the game, pass moves are always allowed to avoid zugzwang situations, if there is a seki on the board. After two passes the game is terminated and scored with GoBoardUtil::TrompTaylorScore.