Software is an extension of human agency.
It has no agency of its own.
It is put in motion by the creator of the code (who created the potential energy) and the person who decided to run it this time (who converted the potential energy to kinetic energy).
Sometimes the creator and the runner are the same person.
Sometimes the code was written once, long ago, and is run trillions of time today by millions of people.
When code is executed, it is a vote that it is useful and worth keeping around and maintained.
This notion of agency affects plain old code, which does exactly what you said.
Code that can think for itself–like LLMs–is not a straightforward extension of human agency.
It can be, if it's a minor component of a larger system, the magical duct tape.
But if the LLM is in the driver's seat, if it's treated like an oracle, then it has absorbed some of the human's agency.