Workflow
Code owns the sequence, the branches, and the stop condition. Claude is called inside a stage.
Exam context: A fixed path is cheaper, faster, and easier to test than a model choosing the path. When: You can write the steps before the run, and a known branch is an if in code. When not: The next action depends on facts the system has not seen yet and cannot list in advance.
See also: 1.1 Agent Architecture
Agent
The model chooses the next tool and when to stop. A single tool-use loop qualifies.
Exam context: Open-ended investigation cannot be encoded as a stable procedure. When: The route is data-dependent and that variability is acceptable. When not: The steps are the same on every run, or a wrong autonomous step is unacceptable and you have not put a code gate in front of it.
See also: 1.1 Agent Architecture
Supervisor
The agent that decomposes work, delegates, and aggregates. It is the only component that sees every result.
Exam context: Someone has to decide coverage, order, and the final answer. Peer-to-peer chatter duplicates work and splits accountability. When: The job splits into specialists, or one transcript would be flooded by intermediate tool output. When not: The task is one tool loop with one concern. A supervisor with a single worker is overhead.
See also: 1.1 Agent Architecture
Subagent
A worker with its own context, a narrow tool list, and a prompt that contains only the context it was given.
Exam context: Isolation keeps search logs and file bodies out of the parent window. When: A slice is self-contained and its intermediate trace is not something the parent must quote. When not: The worker needs the full parent history, or the parent must inspect every intermediate tool call. Pass a summary, or do the work in the parent.
See also: 1.1 Agent Architecture
Sequential execution
Stage N starts after stage N−1 returns, and it consumes that output.
Exam context: A later decision made on missing input is a wrong decision. When: There is a real data dependency, including a check that must pass before a side effect. When not: The slices do not read each other's output. Waiting then adds latency for no correctness gain.
See also: 1.1 Agent Architecture
Parallel execution
Independent slices run at the same time. A later fan-in combines them.
Exam context: Wall-clock time is the sum of the slowest slice, not the sum of all slices. When: No slice needs another's result, and you can tolerate the concurrent token spend. When not: One slice writes state that another reads, or the combination itself is the task and cannot start early.
See also: 1.1 Agent Architecture
Claude Agent SDK
A library that runs the agent loop, dispatches tools, and handles session state on top of the Messages API, inside your process.
Exam context: Most agents need that machinery and do not need a novel harness. When: You want supported loop behaviour and you still execute tools in your environment. When not: You need a stop rule, a trace, or a retry policy the SDK does not expose. Build the loop, or use hooks if the gap is only enforcement.
See also: 1.2 Agent Construction with Claude
Custom harness
Your loop: history, stop_reason, tool execution, hooks, budgets, and traces.
Exam context: You can see and test every transition. When: Integration with existing telemetry, unusual stopping conditions, or a gate the managed runtime cannot express. When not: You are about to reimplement ordinary tool dispatch. That is the SDK's job.
See also: 1.2 Agent Construction with Claude
Managed Agents
Anthropic runs the harness. You choose an Anthropic-hosted sandbox or a self-hosted sandbox.
Exam context: Long-running sessions, scheduled runs, and a sandbox you do not want to build. When: The product value is the task, not the loop, and the data-handling terms fit the sandbox you pick. When not: You must keep every token and file inside a process you already operate, or you need ZDR/BAA terms the hosted service does not offer.
See also: 1.2 Agent Construction with Claude
Hook
Deterministic code around a tool call. PreToolUse can block the call. PostToolUse can only shape the result.
Exam context: A prompt cannot guarantee an irreversible action. When: The rule is "never" or "only when this precondition holds." When not: The rule is a style preference. Put that in the prompt.
See also: 1.2 Agent Construction with Claude
Human approval
The harness pauses and waits for a person before continuing.
Exam context: Some choices are policy judgments, not predicates you can code completely. When: The worst case of an unattended step is unacceptable, and a fixed deny would block legitimate work. When not: A code rule already decides the case. An approval dialog for every read is latency, not safety.
See also: 1.2 Agent Construction with Claude
Tool-use loop
Repeat model calls until end_turn, executing tools when stop_reason is tool_use.
Exam context: It is the smallest agent, and the piece every framework still runs. When: The model must choose among a few tools and the path is short. When not: You already know the sequence. Then the loop is a workflow with model calls inside stages.
See also: 1.3 Agent Patterns and Frameworks
Context isolation
A subagent's transcript is separate. Only the designated return value joins the parent.
Exam context: Intermediate tool output would otherwise evict the parent's instructions and goal. When: Exploration is verbose and the parent needs a conclusion, not the search log. When not: The parent must reason over every intermediate observation. Then do that work in the parent, or return those observations explicitly and accept the cost.
See also: 1.3 Agent Patterns and Frameworks
Working context
The tokens you send on this call: instructions, history, and tool results.
Exam context: The API is stateless. Unsent facts do not exist for that turn. When: You are deciding what this call needs. When not: You are deciding what the business should remember next month. That is durable memory, loaded later on purpose.
See also: 1.3 Agent Patterns and Frameworks
Durable memory
State stored outside the transcript and retrieved into a later turn.
Exam context: Some facts should survive compaction and new sessions. When: A preference, a decision, or a case summary will be needed again and is small enough to load selectively. When not: You are trying to fix a window that is already full of today's tool logs. Write a summary, but prune the logs. Do not also paste the summary plus the logs.
See also: 1.3 Agent Patterns and Frameworks
Agentic framework
A library that expresses multi-step agents as a graph or typed state. Strands, LangGraph, and PydanticAI are the named examples.
Exam context: Loop control, state passing, and branching stop being copy-pasted per project. When: The orchestration is complex enough that the framework's pattern removes real code. When not: A single tool loop, or when the goal is a smarter model. Frameworks do not change model capability.
See also: 1.3 Agent Patterns and Frameworks