CCAR-F domain - 27% of the exam

Agentic Architecture & Orchestration

Agentic Architecture & Orchestration is 27% of the CCAR-F exam. These are the objectives it covers, each with practice questions, with every answer explained.

The domain in numbers

92
Practice questions
7
Objectives
59
Medium
33
Hard

Where people go wrong

  • Using a PostToolUse hook as a gate

    The wrong answers place a blocking check in a PostToolUse hook, or use one to report a violation. PostToolUse fires after the tool has executed, so the shell write, the settled refund or the applied Edit has already happened, and the hook can only shape what the agent is told next. A matcher selects which tools the hook sees, but the event decides when it runs. Preventing the effect needs a PreToolUse hook, which runs before the call and can refuse it.

    See it in a sample question
  • Assuming a subagent inherits the coordinator's context

    The wrong answers treat a dispatched subagent as if it shared the coordinator's conversation. They offer a larger context window, a retry or an instruction to ask before assuming. A subagent runs in a separate context and receives only the prompt it was dispatched with, so a customer record, two failing tests or a set of intervals held by the coordinator are invisible to it. A retry starts from the same empty input. The facts must be written into the delegation prompt.

    See it in a sample question
  • Ending the agentic loop on the wrong signal

    The wrong answers end the loop on an iteration ceiling, the first assistant text block, or a tool result that reports success. The loop continues while the response carries stop_reason tool_use and ends when it returns end_turn, which is the model's own statement that it is finished. An iteration ceiling is a backstop that truncates work. A message can carry text and tool_use blocks together, so returning on the first text block delivers a plan instead of findings.

    See it in a sample question
  • Reading an empty result as a failure

    The wrong answers read a successful empty result as a failure or an outage. They retry the same query, mark the result with is_error, or leave the model to infer the meaning from a bare empty structure. A lookup that matches no orders or no documents is a valid answer, so a retry returns the same empty set and is_error asserts something untrue. The result should state what the empty outcome means, and is_error stays reserved for genuine failures.

    See it in a sample question

Objectives in this domain

Sample questions from this domain

Free sampleAgentic Architecture & Orchestrationmedium

An engineering enablement team at Northbank gives its legacy-migration agent the Bash tool so it can run build and test commands inside a scratch checkout. To stop the agent running commands that write outside that checkout, an engineer writes a hook that inspects the command string and returns a blocking response when a target path lies outside the checkout, and registers it as a PostToolUse hook matching Bash. During a rehearsal the agent issues a command that writes a file outside the checkout. What will happen?

  • AThe command is intercepted before the shell starts and the agent receives a denial, because a hook matching Bash is consulted ahead of execution whichever event it is registered on.
  • BThe command runs and the hook cannot evaluate it, because a PostToolUse hook receives the tool name and the result rather than the arguments that were submitted.
  • CThe command runs and the harness reverts it, because a hook that rejects a tool result causes the runtime to undo the work that produced that result before continuing.
  • DThe command runs and writes the file, and the hook's blocking response only shapes what the agent is told afterwards, so the side effect has already taken place on disk. Correct
PreToolUse can prevent a tool call, whereas PostToolUse runs after execution and can only shape what the agent is told next. The two hook events differ in when they are invoked relative to the tool call, and that timing is what determines whether prevention is possible at all. A PreToolUse hook is consulted before the tool runs, so a denial stops the call. A PostToolUse hook is invoked once the result exists, meaning the shell command has already run and any file write has already landed, so the blocking response can only affect the agent's subsequent reasoning.

Why A is wrong: Tempting because the matcher genuinely does select the Bash tool and the hook logic is written as a gate. It is wrong because the event, not the matcher, decides when the hook runs, and PostToolUse runs after execution.

Why B is wrong: Tempting because it sounds like a reasonable privacy boundary between events. It is wrong because the hook does see the call details, so it evaluates the command correctly and still cannot undo the write.

Why C is wrong: Tempting because transactional rollback is a familiar guarantee elsewhere in engineering. It is wrong because the harness has no general mechanism to undo arbitrary shell side effects, and no such rollback exists.

Why D is correct: Correct because PostToolUse fires after the tool has executed, so a blocking response there can influence the agent's next step but cannot prevent an effect that has already occurred.

Free sampleAgentic Architecture & Orchestrationhard

A coordinator Claude Code session in the CI pipeline for a payments service has already read the pull request diff, captured the output of two failing integration tests and resolved the module ownership map. It then dispatches a specialist reviewer with the Task tool, using the prompt "Assess the risk of these changes to the billing module". Logs show the subagent opening with a repository-wide Grep and eleven Read calls, adding four minutes to a job whose build-time budget is six minutes, and its written summary never mentions either failing test. The pattern repeats on most delegated reviews. Which change most effectively addresses it?

  • AMove the pipeline to a model configuration with a larger context window, so the material the coordinator gathered earlier in the job remains available to the reviewer it dispatches later in the same run.
  • BWrite an explicit handoff payload into the Task prompt carrying the changed file paths, the two failing test outputs, the ownership map and the review criteria, so the subagent starts with the material rather than rediscovering it. Correct
  • CRestrict the subagent through allowedTools so it can call Read but not Grep, which removes the repository-wide scan and brings the delegated step back inside the remaining build-time budget.
  • DHave the coordinator detect a summary that omits the failing tests and re-dispatch the same specialist prompt a second time, keeping the delegated review while raising the chance of a complete assessment.
A subagent starts with an empty context, so every fact it needs must travel in its dispatch prompt as an explicit handoff payload. Delegation through the Task tool creates an isolated context that holds only the prompt text passed to it. The coordinator's earlier tool results, files and reasoning are not visible to it, so an under-specified prompt forces the subagent to rediscover context through its own tool calls and to omit anything it cannot find. Packaging the evidence into the dispatch prompt fixes the cost and the quality defect together.

Why A is wrong: Tempting because attention dilution over long inputs is a real problem and a larger window sounds like it would carry more history forward. It is wrong because the subagent runs with its own separate context and receives only its prompt, so window size changes nothing about what it can see.

Why B is correct: Correct because a subagent inherits nothing from the coordinator's conversation and can only work from the prompt it is given, so stating the gathered evidence in that prompt removes both the exploratory scanning and the omission of the failing tests.

Why C is wrong: Tempting because it directly attacks the measured overrun and tool restriction is a legitimate control on a delegated agent. It is wrong because the scanning is a symptom of missing information; with no diff and no test output supplied, a narrowed toolset produces a faster review that is still blind to the failures.

Why D is wrong: Tempting because retrying is cheap to implement and does sometimes recover a variable output. It is wrong because a retry cannot supply information that was never present in the subagent's input, so the second attempt starts from the same empty context and doubles the time overrun.

Free sampleAgentic Architecture & Orchestrationmedium

The same team bounds cost on the research coordinator by stopping the loop after 10 model calls per run. Over one month, 14 percent of runs end at that ceiling with the synthesis subagent never invoked. The report handed back looks finished apart from an absent citations section, so reviewers accept it, and the truncated runs surfaced only during a quarterly audit. Which change most effectively addresses this?

  • ALet a run finish on stop_reason end_turn, demote the call ceiling to a runaway backstop that fails the run with an explicit incomplete signal, and state the research budget in the coordinator prompt so it narrows scope itself. Correct
  • BRaise the ceiling to 40 model calls, which gives the coordinator enough turns to reach synthesis on the runs that currently stop early while still bounding the cost of the worst case at a known figure.
  • CMove the coordinator onto a request with a much larger context window so that more subagent findings fit into the conversation before the loop reaches the configured call ceiling on a long research run.
  • DAdd a routing classifier ahead of the coordinator that predicts how many subagent calls a question will need and sets a per-run ceiling from that prediction before the first model call is issued.
Cap iterations as a safety backstop that fails loudly, and let a healthy agentic run terminate on end_turn. A call ceiling cannot distinguish a run that has finished its work from one interrupted mid-task, so using it as the normal exit turns an unfinished run into an apparently complete answer. The healthy termination signal is stop_reason end_turn, which the model emits when it has nothing further to request. A ceiling still earns its place as protection against a loop that will not settle, but it must fail the run explicitly rather than return whatever text happens to exist at that point.

Why A is correct: Correct because it restores model-driven termination as the normal exit, keeps a bound on pathological runs, and converts a silent truncation into a visible failure that a reviewer cannot mistake for a finished report.

Why B is wrong: Tempting because it would clear most of the 14 percent immediately, but it keeps an iteration cap as the primary termination mechanism and leaves the real defect untouched: a truncated run is still delivered as though it were complete.

Why C is wrong: Tempting because long research runs do accumulate large tool results, but the ceiling counts model calls rather than tokens. A larger window does not add a single turn to a run that is stopped by call count.

Why D is wrong: Tempting because a per-question budget sounds more precise than one fixed number, but it is a trained component added before the simpler fix has been tried, and a wrong prediction reproduces the same silent truncation.

Free sampleAgentic Architecture & Orchestrationhard

The lookup_order MCP tool used by a support resolution agent takes a single order_id argument, and its description reads, in full, that it looks up an order. Logs from one week show the agent passing the customer's email address as order_id in 12 percent of contacts. The tool returns an empty result set, the agent then tells the customer that the order system is unavailable, and it calls escalate_to_human. Which change most effectively addresses the logged behaviour?

  • ARewrite the tool description to state the exact order identifier format, that the value must come from the order list returned by get_customer, and that an empty result means no matching order rather than an unavailable system. Correct
  • BWrap lookup_order in a retry with exponential backoff so that a lookup returning nothing is attempted twice more before the agent draws any conclusion about the state of the underlying order system.
  • CSet is_error on the tool result whenever the result set comes back empty, so that the agent is told clearly that the lookup did not produce a usable answer and can react to that condition instead of guessing.
  • DAdd few-shot examples to the system prompt showing well-formed lookup_order calls with a real order identifier, alongside a worked example of the agent recovering after a lookup returns no matching rows.
Fix malformed tool calls and misread empty results at the tool description, which defines both argument format and result semantics. The agent is making two distinct errors that share one cause: it does not know what an order identifier looks like or where to obtain one, and it does not know what an empty result set means. Both facts belong in the tool description, which is the contract the model reads before every call and the only description-level surface shared by all callers of that tool. Retries, error flags and prompt examples each address a symptom while leaving the contract as ambiguous as it was.

Why A is correct: Correct because both halves of the failure trace back to a description that defined neither the argument nor the meaning of an empty result, and the description is the only place the agent can learn either fact.

Why B is wrong: Tempting because retries are the standard remedy for a flaky dependency and the agent's own message blames availability. It is wrong because the lookup succeeded and simply matched nothing, so repeating a well-formed query with the wrong identifier returns the same empty set.

Why C is wrong: Tempting because it does give the agent an unambiguous signal to react to. It is wrong because it labels a valid empty result as a failure, entrenching the incorrect availability story and escalating genuine no-such-order cases as outages.

Why D is wrong: Tempting because examples do teach call shape and would probably reduce the malformed calls. It is wrong because it patches around a thin tool description from the prompt, leaving every other caller of that tool with the same ambiguity.

Other domains in this exam

See also the CCAR-F cert hub, the study guide, and the cheat sheet.

Examworthy is not affiliated with or endorsed by Anthropic. Original, blueprint-aligned practice material only.