An "agent" is just an LLM in for loop.

Exactly. And all it takes for an agent to "take initiative" is to not block the loop on user input at the very beginning.