I occasionally put together a game where I vassal one AI at the start and then just "steer" that AI by picking their techs and targets, forcing them into wars at advantageous times etc. and just watch them play while I'm WB in the corner of the map. Let me tell you what I've observed.
The AI will eventually put together a campaign to take the city you've told them to target. Since the AI is so god-awful slow at mobilizing and moving its stack any distance, it takes forever for anything noticeable to happen. And they do weird things in AI vs AI warfare like get stuck around peaks and stand in spots 2 tiles away from a city indefinitely. Let me tell you, if the AI was as incompetent moving against humans as they seem to be against each other, they'd be entirely hopeless without the element of surprise DoW stacks with their perfect vision through the fog of war.
Note that the AI won't follow this direction until it resolves whatever mission it already had its stack on. So it either won't listen to you until after the stack gets to where it was already going and stops, or if you catch it without a mission. This makes the best time to give an AI ally a target is the very first turn they enter a war or the same turn their stack takes a city, as the AI will spend the next turn consolidating into the city before putting together another mission package.
This doesn't override any of their localized routines (AI_Counter, Pillage, Escort/Settle, etc) or taking potshots at free units. They also will still move units not assigned to their main stack(s) freely, so they can end up moving sizable amounts of units elsewhere and even take cities.