A coding agent is a language model connected to tools for reading files, editing code, running commands, and observing results. It works in a loop until it reaches a stopping condition or needs a person. The category has four practical shapes: IDE agents for continuous steering, CLI agents for repository-level delegation, autonomous software engineers for asynchronous tickets, and agent workbenches for operating several visible sessions. Choose by supervision model, not by benchmark, and give every parallel editing agent its own branch and git worktree.
- A coding agent is a model plus a harness plus tools, running a read, act, observe loop.
- The four useful categories are IDE agent, CLI agent, autonomous engineer, and agent workbench.
- Context determines what the agent knows. Permissions determine what it can damage.
- Use agents for work with a testable finish line. Keep subjective decisions and high-blast-radius changes supervised.
- Parallel agents need separate worktrees, explicit ownership, and a bounded review queue.
- A workbench coordinates agents. It does not make the underlying model more capable.
What is a coding agent?
A coding agent is software that gives a language model a goal, a view of a codebase, and tools it can use to pursue that goal. The tools usually include file search, file reads, edits, a shell, git, and sometimes a browser or external systems through Model Context Protocol. After each action, the result goes back to the model. The model then chooses another action, asks for help, or stops.
That last sentence is the category boundary. A chatbot can write a function when you paste enough context. Autocomplete can predict the next lines at the cursor. A coding agent can run the function, read the exception, find the caller, change two files, rerun the test, and report the diff. If you want the deeper mechanics, the agentic coding guide follows the loop turn by turn. The broader AI coding agents guide maps the current tool landscape.
goal
-> assemble context
-> choose a tool
-> execute within permissions
-> return the observation
-> update the plan
-> repeat, ask, or stop
-> human reviews the result
The word agent does not imply that the system is reliable, independent, or entitled to merge. It describes a control loop. Autonomy is a separate setting: how long the loop may run, which tools it may use without approval, and who accepts the result. Keeping those ideas separate prevents most category confusion.
The four kinds of coding agent
Products overlap, but their primary work surface exposes the bargain they make about supervision. A feature checklist hides that difference. The taxonomy below starts with where the person sits while the agent works.
Four product shapes, ordered from continuous steering to operational oversight.
| Type | Primary surface | Supervision model | Best fit |
|---|---|---|---|
| IDE agent | Editor beside the code | Continuous steering | Small and medium changes while you remain in the implementation loop |
| CLI agent | Terminal in a repository | Bounded delegation | Repository work with commands, tests, and explicit acceptance criteria |
| Autonomous engineer | Cloud queue, ticket, or chat integration | Delegate, then review | Independent asynchronous work that can return as a pull request |
| Agent workbench | Board or control plane across sessions | Orchestration and review | Several agents, branches, accounts, hosts, or providers |
IDE agents
An IDE agent keeps the human close to the cursor. It sees open files and editor state, applies multi-file edits, and usually has a terminal tool. Cursor Agent is a representative shape: search, edit, terminal, web, and MCP tools sit inside the editor. This is the strongest category for work where the desired result changes as you see it, such as a UI pass, an unfamiliar refactor, or debugging that depends on taste. The cost is attention. You are still operating one conversation and one working tree unless the product adds a separate background-agent path.
CLI agents
A CLI agent starts in a directory and treats the repository as its workspace. Claude Code, Codex, Aider, OpenCode, and similar tools are strongest when the task can be stated as an outcome: fix this regression, add this endpoint without changing the public type, or explain why this test flakes. The terminal is not cosmetic. It gives the agent the same build, test, git, and search commands a developer uses. Read the category comparison before treating every terminal harness as interchangeable.
Autonomous software engineers
An autonomous engineer moves the start of work out of the repository and into the backlog. You assign a ticket or send a message; the platform provisions an environment, plans, implements, tests, and returns a pull request. Devin is the defining example and is unusually clear about the tasks it wants: focused work with explicit success criteria, available context, and tests. This category buys asynchronous capacity and managed infrastructure. It also delays feedback, so a bad brief can consume a full run before the mismatch becomes obvious. The autonomous software engineer guide covers that fork without pretending it is just a longer CLI session.
Agent workbenches
A workbench is not another coding model. It is the operational layer around native agents: sessions, worktrees, status, permissions, diffs, pull requests, quota state, and a review queue. Conductor and Continuum are examples with different breadth. This category becomes useful after the second or third simultaneous session, when remembering which terminal owns which branch becomes a real problem. Before that point, it is extra surface.
How the loop works
A coding-agent turn begins before the model sees your prompt. The harness assembles a system instruction, tool definitions, repository instructions such as CLAUDE.md or AGENTS.md, environment details, and recent conversation. It may add git status, editor state, memories, skills, or a repository map. That packet is the agent's current view of the world.
- Interpret the goal. The model converts the request into a tentative plan or an immediate information need.
- Select a tool. It may search for a symbol, read a file, run a test, edit code, call an MCP service, or delegate research.
- Apply the policy. The harness allows, denies, sandboxes, or asks you to approve the proposed action.
- Observe. Tool output enters the conversation: file contents, command output, a compiler error, a diff, or an external response.
- Revise. The model updates its plan from the observation and chooses another tool.
- Stop. It declares completion, reaches a configured limit, encounters a blocked action, or asks a person to decide.
The loop is why verification can happen inside the task. A generator emits plausible code once. An agent can discover that the package does not compile, then make a second attempt. That is a large improvement, but it is not proof of correctness. The agent chooses what to test unless the brief names the gate, and it can stop after a narrow test while a broader regression remains.
Loops also explain the economics. Context accumulates and is sent again so the model can choose the next action. More exploration means more turns; more turns mean more input processing and a longer transcript to review. Precise filenames, a bounded task, and a named validation command are therefore cost controls, not merely prompting style. See agentic coding for the arithmetic and context engineering for what belongs in the window.
Tools, context, and permissions
Model comparisons attract attention because model names are easy to rank. In practice, three harness decisions often matter more: what the agent can do, what it can see, and what it can do without stopping.
| Control | Question it answers | Typical failure |
|---|---|---|
| Tools | Which actions exist? | The agent cannot verify the result, or gets a powerful external tool it did not need |
| Context | Which facts are visible now? | It guesses conventions, follows stale discussion, or wastes turns searching |
| Permissions | Which proposed actions may execute? | A low-risk task stalls constantly, or a high-risk task reaches too far |
Tools are capabilities
Read, search, edit, and shell tools form the basic coding set. Browser tools add visual checks. MCP tools can reach issue trackers, databases, design files, and production-adjacent systems. Each addition makes more tasks possible and enlarges the trust boundary. A tool should be present because the task needs it, not because the integration was easy to install.
Context is working memory, not a knowledge dump
Agents need repository facts that are specific and surprising: the test command, generated-file boundary, dependency policy, architecture constraint, and definition of done. They do not need a long essay describing TypeScript or clean code. Every irrelevant file competes with the relevant one and is likely to be processed again on later turns. Give the smallest useful map, point at concrete symbols, and clear the session between unrelated tasks.
Permissions are the real autonomy dial
Read-only or plan modes are appropriate for diagnosis, unfamiliar repositories, and proposed migrations. Workspace-write modes fit ordinary reviewed implementation. Unattended broad access belongs in an isolated environment with scoped credentials, not on a normal laptop because the prompt sounds harmless. The relevant security principle is capability, not intention: an agent reading untrusted content should not also possess a route to act on it. The full threat model is in AI coding agent security.
When to use which kind
Choose by feedback latency and environment ownership before price or benchmark. Ask how soon you expect to correct the work and where the necessary tools already live.
| Situation | Start with | Reason |
|---|---|---|
| You are designing the change while implementing it | IDE agent | The loop stays beside the code and accepts frequent steering |
| The task has files, tests, and a crisp finish line | CLI agent | Repository tools and bounded delegation fit the work |
| The ticket can run elsewhere and return as a PR | Autonomous engineer | Asynchronous capacity matters more than mid-run correction |
| Several native agents are already active | Agent workbench | The problem is state, isolation, cost, and review routing |
| You only need a small function or explanation | Chat or autocomplete | An agent loop adds cost and authority without adding proof |
Use an IDE agent when the implementation itself is how you discover the requirement. Visual polish, API exploration, and local refactors benefit from a person noticing the wrong direction within minutes. Use a CLI agent when you can specify the outcome and the repository contains a cheap machine-checkable signal. A failing test with a named command is nearly ideal.
Use an autonomous engineer when the asynchronous handoff is the product you need. Backlog cleanup, dependency changes, focused migrations, test additions, reproducible bugs, and CI repairs can fit if the environment can be provisioned and the acceptance criteria are explicit. Do not choose autonomy merely because the task is large. Large, ambiguous work is the case most likely to need frequent decisions.
Use a workbench when operations become the bottleneck: multiple terminals, agents on different hosts, worktrees whose owners are unclear, plans awaiting approval, provider limits, or a growing queue of diffs. A workbench can make that state visible. It cannot rescue a vague task or review code for you.
What coding agents are good and bad at
Agents do best when the repository contains evidence that distinguishes done from plausible. Tests, type checks, linters, build commands, snapshots, and a concrete reference implementation all turn the loop into a search against a visible finish line.
| Usually good | Usually poor unless closely supervised |
|---|---|
| Fix a reproducible test failure | Diagnose an intermittent production issue with missing telemetry |
| Apply a known migration pattern across files | Invent a new architecture from a vague business goal |
| Add tests around established behavior | Decide which behavior the product should have |
| Update a dependency and repair bounded breakage | Run a destructive data migration against a live system |
| Trace call sites and explain a subsystem | Make taste-heavy visual changes with no reference |
| Implement a narrow endpoint from an existing pattern | Change authorization rules without a written policy and adversarial tests |
The left column shares three properties: examples exist, the scope can be bounded, and a machine can check a meaningful part of the answer. The right column contains missing information, irreversible consequences, or subjective judgment. A stronger model can narrow the gap; it does not remove the structure of the problem.
Research is a good agent task when it remains read-only and the deliverable requires evidence. Let a focused worker search a repository, collect exact file locations, or compare official documentation. Claude Code subagents are useful here because verbose exploration stays in a separate context and returns a summary. They are less useful when the parent then accepts that summary without opening the cited code.
Implementation should be sized by reviewability, not by how long the agent can remain busy. A 2,000-line diff produced overnight is not necessarily more valuable than a 200-line diff produced in twenty minutes. If nobody can explain the larger change and inspect its deletion paths, the saved writing time has become review debt. Read reviewing AI-generated code before increasing task size.
How to run several coding agents at once
Parallelism starts with task design, not with opening more terminals. Two tasks are safe to run concurrently when they can land in either order, or when their dependency is explicit and scheduled. “One agent does the API and another does the UI” is not independent if both invent the wire contract. Define the contract first, then split production and consumption around it.
- Bound each task. Give it one owner, acceptance gate, forbidden surface, and proof command.
- Create one branch and worktree per editing agent. A worktree gives each session its own checkout and index while sharing repository history.
- Isolate shared runtime state. Allocate ports, databases, simulator devices, caches, test accounts, and temporary directories per lane.
- Keep authority narrow. Agents may prepare commits or pull requests; merge and production authority stay with a person unless a separately reviewed policy says otherwise.
- Cap work in progress. Run no more editing lanes than the team can review promptly.
- Integrate through one queue. Rebase or update, run the named gates against the combined state, review, then merge one change at a time.
Git worktrees are the file-level primitive. They prevent checkout fights and make one diff attributable to one task. They are not containers: git configuration, credentials, processes, ports, and external services may still be shared. Start with the practical git worktrees guide, then use the worktree definition when the shared and separate state needs to be precise.
Subagents solve a different problem. A subagent delegates a focused side task inside a parent session and returns a result. Independent worktree sessions remain visible to you as separate owners. Agent teams add peer coordination and a shared task list. Choose based on who coordinates and whether workers edit, not on which name sounds more advanced.
A first-week operating model
Start smaller than the product demo. The purpose of a first week is to learn which work transfers cleanly and how much review it creates, not to maximize the number of running sessions.
Pick one bounded task
Choose an existing failure, a small feature following an established pattern, or a documentation change with exact source references. Write the files in scope, what must not change, and the command that defines success.
Begin read-only
Ask the agent to explain the current behavior and propose a plan with file locations. Correct its model of the repository before granting write access.
Let one agent implement
Use an IDE or CLI agent in one clean branch. Keep the first diff small enough to read fully, including deletions and generated files.
Review the proof and the diff
Rerun the named command yourself when risk warrants it. Check authorization, error paths, dependencies, migration order, and any surface the agent did not mention.
Add a second independent lane
Create a separate worktree and choose a task with no overlapping contract. Do not add a third lane until both diffs move through review without waiting.
Record four numbers
Track elapsed time to accepted change, review minutes, rework after review, and provider cost or quota consumed. Those numbers decide whether parallelism helped.
A healthy workflow reduces time to an accepted, understood change. Raw lines written, agents launched, and tasks marked complete by the model are activity measures. They can all rise while delivery slows because the human review queue grows.
Once the first week works, standardize the task brief, permission profile, worktree lifecycle, and proof bundle. Keep exceptions visible. The goal is not to make the agent look like a colleague; it is to build a process where its speed remains legible, reversible, and useful.
Questions people ask
A coding agent is a language model inside a harness that can inspect a repository, use tools such as file editing and a shell, observe the results, and choose the next action. The action and observation loop separates it from chat and autocomplete.
A generator emits code in one pass and leaves verification to you. A coding agent can run the output, read errors or test failures, and iterate. An agent can still stop with a wrong answer, so its loop is a capability rather than a correctness guarantee.
Four product shapes are useful: IDE agents for continuous steering, CLI agents for bounded repository delegation, autonomous software engineers for asynchronous tickets, and agent workbenches for orchestrating several visible sessions.
They can be, but agent and autonomous are not synonyms. Agent describes the tool-use loop. Autonomy describes how long it may run, which actions execute without approval, where it runs, and who may accept or merge the result.
Use one when the task has a bounded scope, relevant context in the repository, and a meaningful validation signal such as a test, build, type check, or reference implementation. Use closer supervision for subjective, irreversible, or under-specified work.
Yes. Give each editing agent a separate branch and git worktree, isolate ports and other shared runtime state, make ownership explicit, and cap active lanes at the number of diffs the team can review promptly.
No. A worktree isolates checked-out files, the index, and branch state. It can still share credentials, network access, processes, ports, git configuration, and external services with other sessions. Use a sandbox or container for a security boundary.
Only when operating several sessions creates a real state problem. A workbench helps with ownership, worktrees, plans, diffs, pull requests, quota, and review queues. If one native agent session is enough, use it directly.
Sources
Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.