Autonomy is not the product. Useful, observable, recoverable work is the product. Start with a deterministic baseline and add only the amount of agent behavior that improves the task inside explicit permissions and stop conditions.
An agent is not a vibe
The word “agent” now describes systems with very different behavior. A chatbot answers a message. A prompt chain runs known steps. A workflow automation follows rules. A tool-using assistant selects an action. An agent loop plans, acts, observes the result, and decides whether to continue.
The label matters less than the control surface. Ask:
| Question | Why it matters |
|---|---|
| Who chooses the next step? | Shows how much decision-making the model controls |
| Can the system change external state? | Separates advice from consequence |
| Can it continue without the user? | Determines timeout, budget, and approval needs |
| Can you replay what happened? | Determines whether failures are diagnosable |
A system does not become better because it takes more actions. It becomes harder to trust unless every additional action has a reason, a boundary, and an evaluation.
The decision test: workflow, assistant, or agent?
Use the simplest system that can solve the task.
| Situation | Prefer | Why |
|---|---|---|
| The same steps happen every time | Deterministic workflow | Cheaper, faster, and easier to test |
| The user needs suggestions but decides | Assistant | Model helps without owning action |
| Several safe tools can solve a variable route | Bounded agent | Tool selection adds useful flexibility |
| The action changes money, records, access, or communication | Agent with approval gate | Human remains accountable for consequence |
| Success is not defined | Do not automate yet | You cannot evaluate an unclear goal |
Build the deterministic baseline first. If the agent cannot improve task success, coverage, user effort, or recovery enough to justify its cost and risk, keep the baseline.
A worked decision: support triage
Consider a support workflow. A customer ticket arrives, needs a category, may need policy context, and may require a reply.
- Baseline: rules classify obvious keywords and route everything uncertain to a person.
- Assistant: a model suggests a category and drafts a reply; a human approves both.
- Bounded agent: the system can retrieve approved policy, ask one clarifying question, and prepare a draft, but cannot send messages or change account records.
The agent is justified only if variable tool selection reduces handling time or improves resolution without increasing unsafe drafts. The comparison should include the baseline, not just multiple agent designs.
The bounded agent architecture
A practical agent can be represented as a small state machine:
request -> plan -> choose tool -> validate -> execute -> observe -> stop or askGive every run:
- A clear goal and allowed outcome
- A limited context window and state budget
- A typed list of tools
- Permission checks outside the model
- Maximum steps and time
- Retry rules that are safe to repeat
- A human approval path
- A trace containing decisions and results
Stop conditions should be explicit: task complete, evidence insufficient, tool failure, budget reached, confidence below threshold, or approval required. “Keep going until it feels done” is not an operational policy.
Design tools as contracts, not shortcuts
A tool is an API with consequences. Keep its contract narrow enough to test.
{
"name": "create_draft_reply",
"description": "Prepare a reply for human approval. Does not send.",
"input": {
"ticketId": "string",
"body": "string",
"citations": "array"
},
"sideEffects": "draft_only",
"requiresApproval": false
}Validate arguments before execution. Use separate read and write operations. Make writes idempotent where possible. Return structured errors instead of raw stack traces. Tell the model what the tool does not do, especially when a name could imply a stronger action.
Do not expose a general shell, unrestricted database credential, or broad “do anything” tool to make a prototype faster. Broad tools hide the real safety boundary.
Permissions belong outside the model
A model can propose an action; it cannot grant itself permission to perform it.
| Action | Recommended control |
|---|---|
| Read public documentation | Allowlisted domains and request limits |
| Read private documents | Application authorization before retrieval |
| Create a draft | Scoped resource access and audit log |
| Send a message | Explicit user approval or tightly defined low-risk policy |
| Delete or modify records | Separate permission, confirmation, idempotency, and recovery |
Use least privilege. Keep secrets away from prompts and tool results. Partition tenants and workspaces at the data layer. A sentence saying “never reveal private data” is helpful behavior guidance, but it is not an authorization system.
Memory needs a lifecycle
Agents often fail because “memory” means an unbounded transcript. Separate state types:
| State | Example | Lifecycle |
|---|---|---|
| Run state | Current plan, tool results, retry count | Expires after the run |
| Session state | User preferences for a conversation | Expires or resets by session policy |
| Durable memory | Approved project preference or account setting | Explicit retention and deletion |
| Retrieved context | Documents relevant to this request | Request-scoped and access-filtered |
More context can increase cost, leak sensitive information, and make behavior difficult to reproduce. Store only what has a purpose, owner, retention rule, and deletion path.
Observe every meaningful run
A user report that “the agent did something strange” is not enough to debug a system. Record a trace with:
- Request and user or workspace identity
- Model and prompt versions
- Selected tools and validated arguments
- Tool results and errors, redacted as required
- Step count, retries, latency, and cost
- Stop reason and final outcome
- Human approvals, edits, and takeovers
Build a replayable test mode with synthetic data. Traces should help answer what the system saw, what it decided, what it was allowed to do, and why it stopped. Avoid logging secrets or full private documents when metadata is enough.
Threat model the agent, not just the prompt
Agents cross boundaries between untrusted content and trusted tools. Treat every web page, email, document, and tool result as data that may contain instructions.
| Threat | Control |
|---|---|
| Prompt injection in a document | Keep retrieved content separate from system rules; validate tools outside the model |
| Data exfiltration | Least-privilege tools, secret isolation, output checks, and tenant boundaries |
| Runaway loop | Maximum steps, time, spend, and repeated-action detection |
| Unsafe retry | Idempotency keys and confirmation for external effects |
| Memory poisoning | Require approval before durable memory changes |
| Overbroad tool result | Minimize returned fields and redact sensitive values |
Security controls must remain effective when the model is confused, manipulated, or simply wrong.
Evaluate the workflow, not the prose
Agent evaluation needs more than a final-answer rubric. Test whether the agent chose the right tool, used valid arguments, recovered from failure, stopped when it should, and avoided unnecessary actions.
| Measure | Question |
|---|---|
| Task success | Did the user’s goal complete? |
| Tool correctness | Were the right tools called with safe arguments? |
| Recovery rate | Did the system handle tool and provider failures? |
| Unnecessary action rate | Did it take steps that added risk or cost? |
| Human takeover | How often did a person need to intervene? |
| Cost and latency | Is the workflow better than the baseline? |
Include cases where the correct behavior is to ask, refuse, or stop. An agent that always acts may be less capable, not more.
Three useful patterns
Research assistant
The assistant searches approved sources, collects citations, and prepares a brief. It should show sources, distinguish draft synthesis from verified fact, and avoid treating retrieved instructions as permission.
Job-search assistant
It can filter roles, summarize requirements, and prepare a checklist. Editing personal materials, sending messages, or applying should require explicit user review.
Operations assistant
It can inspect dashboards, explain anomalies, and propose a next action. It should not mutate production state without a separate approval and audit path.
Each pattern benefits from bounded tool use. None needs unrestricted autonomy to be useful.
A safer implementation sequence
- Write the deterministic baseline.
- Define task success and unacceptable actions.
- Add one read-only tool.
- Log the proposed plan and tool call.
- Add a bounded write or draft-only tool.
- Require approval for consequential actions.
- Test prompt injection, malformed inputs, timeouts, and repeated runs.
- Compare against the baseline on task success, cost, latency, and takeover rate.
- Only then add another tool or more autonomy.
This sequence gives every increase in autonomy a reason and an acceptance test.
What this means for your career
Employers do not only need people who can attach the word “agent” to a demo. They need people who can decide whether autonomy is appropriate, design reliable tools, measure behavior, and protect users when the system is wrong.
A small bounded agent with clear permissions and evaluation is better career evidence than an impressive autonomous loop nobody can trust. Explain the baseline, the added value, and the boundary you refused to cross.
Frequently asked questions
What is the difference between an AI agent and a chatbot?
A chatbot generally responds to messages. An agent can select actions, use tools, observe results, and continue toward a goal. The exact boundary depends on the system design.
Do AI agents need multiple models?
No. One model can coordinate a bounded workflow. Multiple models may help with specialization, cost, or verification, but they add complexity and more failure surfaces.
Are agents safe without human approval?
Some low-risk, reversible actions may be automated after testing. Consequential actions should use authorization, validation, confirmation, and appropriate human review.
Should beginners build an agent first?
Usually start with a deterministic workflow. Add limited tool use only when you can explain why it improves the task and how you will detect failure.
How do I test prompt injection?
Put adversarial instructions in documents, web pages, emails, and tool results. Confirm that the agent treats them as untrusted data and cannot use them to bypass application permissions.
Earn autonomy with evidence
The strongest agent systems are not the most autonomous. They are the systems that make useful decisions inside a boundary people can understand, inspect, and recover from.
Start with a workflow. Add one tool. Measure it. Protect it. Then decide whether more autonomy is worth the added risk.
Frequently Asked Questions
A chatbot generally responds to messages. An agent can select actions, use tools, observe results, and continue toward a goal. The exact boundary depends on the system design.
No. One model can coordinate a bounded workflow. Multiple models may help with specialization, cost, or verification, but they add complexity and more failure surfaces.
Some low-risk, reversible actions may be automated after testing. Consequential actions should use authorization, validation, confirmation, and appropriate human review.
Usually start with a deterministic workflow. Add limited tool use only when you can explain why it improves the task and how you will detect failure.
Put adversarial instructions in documents, web pages, emails, and tool results. Confirm that the agent treats them as untrusted data and cannot use them to bypass application permissions.