An assistant answers. A copilot suggests while you decide. An agent acts on its own once you've set the goal. That one-sentence distinction is the whole reason this comparison matters: the label a product uses determines what it can do without a human in the loop, and what it can do without a human in the loop is exactly what should determine your controls.
Three definitions, three sentences
An AI assistant is conversational and typically stateless between turns — it answers a question or holds a conversation, but it does not carry out actions on your behalf once the conversation ends (Dust, "AI Copilot vs AI Agent"). A copilot responds to prompts and offers suggestions inside a single application while the human stays in control of every decision — reactive assistance embedded in one tool, not autonomous execution (Dust). An AI agent plans and executes multi-step tasks with minimal human input once a goal is set, and can take real actions — clicking, sending, searching, executing — rather than only generating text for a human to act on (Dust). Each definition implies a different answer to one question: what happens between the system producing an output and something in the real world changing.
Assistant: conversational, stateless between turns
An assistant's job ends at the response. Ask it a question, get an answer; ask it to summarize something, get a summary. Nothing in the world changes as a direct result of that interaction unless a human reads the output and acts on it themselves. Most assistants also do not carry meaningful state between sessions by default — each conversation largely starts fresh, which is part of why the category has historically needed the lightest governance: the blast radius of a bad assistant response is a wrong answer, not a wrong action.
Copilot: reactive, human decides every step
A copilot sits inside a specific application — a code editor, a document tool, a spreadsheet — and offers suggestions in response to what you're doing: a code completion, a rewritten paragraph, a formula. The defining property is not where it lives but who decides: every suggestion a copilot makes requires a human to accept it before anything changes (Dust). A copilot can be wrong, even confidently wrong, but it cannot act wrongly on your data or your systems without a human choosing to accept its suggestion first. That human-accepts-every-step property is what keeps a copilot's risk profile closer to an assistant's than to an agent's, even though it feels more integrated into your workflow.
Agent: plans and executes, takes real actions
An agent breaks from both patterns at the point where a goal, not a single prompt, is handed off. Give an agent an objective and it plans a sequence of steps toward that objective and executes them with minimal further input — searching, calling tools, sending messages, writing to systems, taking the next step based on what the previous one returned (Dust). The defining property here is not sophistication, it's the action surface: an agent can change something in the real world as a direct consequence of its own decision, without a human approving that specific step first. That is the property assistants and copilots are architecturally prevented from having and agents are specifically designed to have.
Comparison table
| Assistant | Copilot | Agent | |
|---|---|---|---|
| Autonomy | None — responds per turn | Suggests; human accepts each step | Plans and executes multi-step tasks |
| State | Typically stateless between sessions | Session-scoped to one application | Can persist and act across a task's full lifecycle |
| Action surface | None — output only | None — suggestion requires human acceptance | Real: can call tools, send data, trigger workflows |
| Credential need | Minimal, read-mostly | Scoped to the host application | Often needs access across multiple systems |
| Audit need | Conversation logs | Suggestion/acceptance logs | Full action-level audit trail |
| Control owner | Whoever reads the output | The human accepting each suggestion | The system design itself, since no human gates each step |
The governance test: can it independently trigger a real-world action?
Everything above collapses into one practical test: can this system, on its own, cause something to change outside itself — send an email, move money, modify a record, call an API with side effects — without a human approving that specific step first? If the answer is no, you're looking at an assistant or copilot risk profile, where the control burden sits mostly with output quality and the human who reads or accepts it. If the answer is yes, you're looking at an agent risk profile, where the control burden shifts to the system itself: what can it reach, under what identity, logged how, and reversible how fast.
This test matters more than the vendor's own label, because "agent" has become a marketing term applied loosely to products that are architecturally copilots — reactive, human-gated, single-application. Apply the action-surface test to the product's actual behavior, not its name, before deciding which control set it needs.
Run the test at the feature level, not the product level, because a single product often mixes categories. A coding tool that suggests a line and waits for you to accept it is behaving as a copilot in that moment; the same tool, given a task like "fix the failing tests across the repo and open a pull request," is planning steps and executing them with far less per-step human gating — that's agent behavior, inside a product most people still call a "coding assistant." Governing the product by its marketing name instead of by what each feature actually does is how an agent-grade action surface ends up running under copilot-grade controls.
Why the confusion is not accidental
Vendors have commercial reasons to blur these labels. One plausible reading is that "agent" implies more capability, while "assistant" and "copilot" sound safer and lower-friction to adopt — so products migrate toward calling themselves agents as they gain autonomy, without always disclosing exactly which actions became autonomous in the process. Whatever the underlying incentive, the observable pattern is that label and action surface drift apart over a product's lifecycle, which is precisely why a governance program cannot rely on the label a vendor chooses — the only reliable signal is the action-surface test applied to what the system can actually do once deployed in your environment, re-checked whenever the vendor ships a capability update, since "still called a copilot" is not evidence that the action surface hasn't grown.
What each label should change in your control set
Once you know which category a system actually is, the controls should follow directly:
- Assistants need conversation-level logging and content controls (what it's allowed to say, what data it can be shown) — the same governance you'd apply to any text-generation surface handling sensitive input.
- Copilots need scoped access to the single application they're embedded in, plus a record of what was suggested versus what was accepted — the acceptance step is the actual point of human accountability and should be logged as such.
- Agents need the full control set: a distinct, attributable non-human identity per agent, scoped and least-privilege authorization to only the tools and systems the task requires, a tamper-evident audit trail of every action taken, and — for consequential action types — a human approval gate before execution rather than after.
Treating an agent like a copilot — assuming a human is implicitly gating every step because that's how the category used to behave — is the single most common governance gap teams walk into, precisely because the terminology shift from copilot to agent happened faster than the control model did. Zero-trust principles for AI agents and excessive-agency controls under OWASP's LLM06 are the two starting points once you've confirmed a system belongs in the agent category rather than assumed it. Non-human identity is the specific mechanism that makes an agent's actions attributable in the first place, which is the precondition for every other control on the list. The AI agent security guide and what an AI control plane actually does cover how those controls fit together once a system has crossed the line from suggesting into acting.