The defining difference: autonomy and the loop
An AI assistant is something you consult: it answers questions about your code and hands you a snippet, and you decide where it goes and paste it in. A coding agent is something you direct: you give it a goal, and it decomposes that goal, edits a dozen files coherently in one pass, runs the tests, and presents a finished end state. The capability that matters is not access to your files — filesystem-aware editing tools existed and changed little. It is the ability to carry a task across many edits without losing the thread. That is the line between an assistant that answers questions about your code and a worker that changes your code.
A concrete way to tell them apart
Ask who closes the loop. With an assistant, you close it: you run the build, see the error, and feed it back. With an agent, the agent closes it: it runs the build, reads the failure, and iterates — you govern the outcome rather than drive each step. Suggestion versus execution is the whole distinction in one test.
Does one replace the other?
No. The assistant mode is still useful for advice and exploration; the agent mode is what lets one person ship structural work at a volume they could never author by hand. The shift from one to the other is exactly the shift from reviewing every line to governing the systems that grade the output.
How to actually run the agent mode safely — why conversation alone plateaus, how to constrain agents, and how the human role changes — is in the pillar guide: agentic software development, as I actually practice it.