Four products, all called "agents"
Four different things in Anthropic’s docs will build you an agent. They have overlapping names, overlapping diagrams, and one of them is explicitly not what its name suggests. Agent Architecture is 4.5% of the paper and this distinction is most of it.
The good news is that one question sorts all four, and it is not “which is most powerful”. It is who writes the loop?
The ladder, and what decides your rung
You already know this shape from build tooling. You can call tsc yourself and own every flag. You can put a task runner in front of it. You can adopt a framework that has already decided how the whole project is laid out. Or you can push to a service that does the build on someone else’s machine. Same compiler at the bottom of all four; wildly different amounts of your code involved.
The four agent products are that same ladder, and the rung is decided entirely by who owns the turn-by-turn loop. Once you sort them that way, the names stop fighting you.
The four, from most hand-rolled to least
Client SDK. You write the loop. You send messages, you read stop_reason, you execute the tool, you append the result, you go again. Total control, total responsibility, and you will get the termination condition wrong at least once. Every other option on this list is this one with something pre-built on top.
Tool Runner. client.beta.messages.tool_runner. The SDK runs the loop for you, but critically it loops over tools that you define. It is loop automation, not capability. If your agent needs to edit files, you still write the file-editing tool.
Claude Agent SDK. The docs describe it as Claude Code as a library. Not a loop helper: the entire harness, the tools, the subagents, the permission model, the MCP plumbing, packaged so you can run it inside your own program. Python and TypeScript only.
Managed Agents. Anthropic runs the whole thing server-side. Beta header managed-agents-2026-04-01, and it costs about $0.08 per session-hour on top of your tokens.
The classification nobody has stated
Here is a thing worth knowing precisely because it is missing: the documentation gives no GA or beta classification for the Claude Agent SDK. Managed Agents has a beta header. Computer use has a beta header. The Agent SDK just sits there, unlabelled.
So if a question hinges on the Agent SDK’s release status, the honest answer is that the docs do not say. Do not reason your way into “well it must be GA because it has no beta header”. That is an inference, not a fact, and it is the kind of inference that costs you a mark.
How to actually choose
Ask two questions in order, and stop at the first yes.
Do I want Claude Code’s behaviour? Yes means Agent SDK, assuming you are in Python or TypeScript. This is the biggest lever on the list and people skip past it because “SDK” sounds small.
Do I want to not run infrastructure? Yes means Managed Agents, and you are paying session-hours for it.
Otherwise you are in your own loop, and the only remaining question is whether you want to type it out. Tool Runner if no, Client SDK if yes or if you need to do something weird between turns: custom retries, injecting state, logging every tool call somewhere audited, rewriting the message list mid-run.
That last case is more common than it sounds. The moment you need to touch the conversation between turns, loop helpers become a wall rather than a shortcut, and going back to the raw Client SDK is a normal, boring, correct decision rather than an admission of defeat.
Try it yourself
Name all four, and who owns the loop
Cover the lesson. This is the highest-value card in the module, because every architecture question on the paper is secretly asking it.
Name the four Anthropic ways to build an agent, and for each one say who writes the tool loop.
Reveal answer
Claude Agent SDK: Anthropic writes the loop, and you get the whole Claude Code harness as a library (Python and TypeScript only). Client SDK: you write the loop yourself, turn by turn. Tool Runner (client.beta.messages.tool_runner): the SDK writes the loop, but it loops over tools you define. Managed Agents: Anthropic runs the loop server-side, and the docs call it a separate product from the Agent SDK, not a hosted version of it.
The separate-product trap
The names are close enough that the exam will absolutely lean on it.
Show answer
Correct answer: A — Managed Agents is a separate product from the Agent SDK, with its own beta header and its own session-hour cost
The docs say it in those words: Managed Agents is a separate product from the Agent SDK. The hosted-deployment-target answer is the tempting one because the naming genuinely implies it, and because every other cloud product on earth works that way, but there is no build-here-deploy-there relationship. Managed Agents carries the beta header managed-agents-2026-04-01 and adds roughly $0.08 per session-hour on top of tokens. The Agent SDK is a library you run yourself.
Pick the harness
You want an agent that behaves like Claude Code: file editing, subagents, permission prompts, the lot. You want it inside your own Node service and you do not want to reimplement any of that.
Show answer
Correct answer: A — Claude Agent SDK, because it ships the Claude Code harness as a library
The Agent SDK is literally described as Claude Code as a library, and it is available in Python and TypeScript, which covers Node. Tool Runner is the tempting wrong answer: it does loop for you, but it only loops over tools you defined yourself, so you would be rebuilding the file editor, the permission model and the subagent machinery by hand. Client SDK is even further from done.
The requirement that rules out the helpers
Compliance wants every tool invocation written to an append-only audit log before it executes. On a retry, you rewrite the message list to drop the failed attempt before resending.
Show answer
Correct answer: C — Client SDK, because you own the message list and every turn boundary
The requirement is not a capability, it is access to the space between turns, and only the Client SDK gives you that by construction. Tool Runner is the tempting wrong answer because it is the closest neighbour: it does loop for you and the tools are still yours, but the loop is precisely the thing you need opened up, and rewriting the message list mid-run is the case where a loop helper stops being a shortcut and becomes a wall. The Agent SDK's permission model decides whether a call proceeds, which is a different question from recording it and rewriting history around it. Managed Agents runs the loop on Anthropic's side, which is the furthest possible position from turn-by-turn control.
Two minutes, docs open, release status
The exam is semi-open-book. A question hinges on whether the Claude Agent SDK is GA or beta, and you do not remember.
Show answer
Correct answer: D — The beta headers reference, and if the SDK is absent, record that the docs do not classify it
A beta classification would show up as a beta header, so the headers reference is where the evidence lives, and its absence is itself the finding: the docs do not say. The changelog answer is the tempting one because a GA announcement genuinely would be published there, but you cannot establish an absence from a changelog in two minutes, and reading no announcement as not GA is the same inference error as reading no beta header as GA. Pricing pages and model comparison tables do not carry release status for SDKs at all.
Write the grid from memory
Ninety seconds, one scratch file, no network. This is what turns four names into a decision you can make at speed.
- Write four rows: Client SDK, Tool Runner, Claude Agent SDK, Managed Agents.
- Column one, who writes the loop, in three words or fewer.
- Column two, what you get for free that you would otherwise build yourself.
- Column three, the constraint: language support, beta header, or per-hour cost, whichever applies to that row.
- Under the grid, write the one sentence about Managed Agents that an exam question is most likely to invert.