The pathfinder will generally point towards the next corner to wrap around. If all your npcs are extremely small dots, then those dots will basically hug these corners. However, if your npcs are large, then the pathfinder will pull the centers of those npcs towards their next corner, causing them to be stuck:
How can I update the testing place , to use a player character instead of a part?
11:31:03.106 Can only call BulkMoveTo on BaseParts, partList[1] is a Model. - Client - Main:250
11:31:03.106 Stack Begin - Studio
11:31:03.106 Script ‘Players.Lord_BradyRocks.PlayerScripts.Main’, Line 250 -
The testing place updates the cframes of every unit every frame (for context, each unit is a singular part, not a model). Although we can just loop through these parts and set their .CFrame property individually, Roblox provides the workspace:BulkMoveTo(partList, CFrameList) method to optimize this exact use case (it moves partList[i] to CFrameList[i] for all i).
BulkMoveTo only works for BaseParts, not models. So partList should not be a list of your player characters, it should be a list of their humanoidrootparts. The same way you would not do model.CFrame = abc, but rather model.humanoidrootpart.CFrame = abc.