Most confusion about agentic AI starts in the same place: treating the model as the whole system. It isn't. A large language model predicts the next chunk of output based on whatever is sitting in front of it right now. That's genuinely powerful, but powerful and able to finish a real piece of work unattended are two different things. For Australian businesses weighing up whether Claude Code can actually run unattended on invoicing, reporting or customer support tasks, that gap is where most of the disappointment lives. Everything that makes Claude Code, or any coding agent, dependable is a layer built on top of the model to close it.
The model is not the whole system
Ask most business owners what an AI agent is and you'll get a description of the model: smart, fast, occasionally strange. That's only the ignition switch. A working Claude Code agent, the kind that can be trusted to touch a real codebase or a real workflow without someone hovering over it, is a stack. The model sits at the bottom. Everything above it is engineering, and it's the engineering that decides whether the agent finishes the job correctly or quietly makes a mess you find a week later. Sydney teams that skip straight from "we tried ChatGPT once" to "let's build an agent" tend to miss this. There isn't one thing to build. There are five.
The five layers, in order
Each layer solves a different failure mode. Skip one and the agent fails in a specific, predictable way, which is actually good news, because it means the fix is usually obvious once you know where to look.
Prompt engineering tells the model where to go: the goal, the role, the format and the constraints. Necessary, but a destination without a map is still a guess.
Context engineering shows the model where it currently stands: conversation history, project files, tool specs and prior results, selected and trimmed to fit the context window. Too little and it guesses; too much and it drowns in irrelevant detail.
Harness engineering is the runtime wrapped around the model: tool access, permissions, sandboxing, memory, logs, tests and validators. This is where you stop hoping the model acts smart and start using external structure to contain mistakes and produce evidence.
Loop engineering turns one output into a closed feedback cycle: observe, judge, act, check, repeat. This is the actual line between an agent and a chatbot. An agent keeps working based on what happened after it acted, rather than stopping the moment it produces something plausible.
Graph engineering is the layer needed once a single loop isn't enough: multiple actors, parallel workstreams and interdependent outcomes that one agent working alone can't hold in its head at once.
Why this framing matters for a business, not just a hobbyist
Most disagreements about whether a Claude Code setup is working are actually disagreements about which layer is missing, not whether the model is good enough. That distinction matters, because it changes what you fix and how much it costs to fix it.
"It doesn't understand our business" usually means a context problem: the agent isn't being shown the files, history or product detail it actually needs to make a good call.
"It does risky things" usually means a harness problem: permissions and validation are too loose, not that the model needs to be smarter or more cautious by nature.
"It gets stuck on anything hard" usually means a loop problem: there's no observe-judge-act-check cycle, so the agent stops at the first plausible-looking answer instead of checking its own work and trying again.
These aren't abstract categories. They're the three complaints we hear most often from Australian small and mid-sized businesses in the first fortnight after standing up a Claude Code agent, and in every case the fix sits in a different layer, not in a bigger model or a longer prompt. Treating all three as the same problem, "the AI needs to be smarter", is the single most common reason a promising pilot stalls.
Where CLAUDE.md and Skills actually sit
If you've set up Claude Code for your business, you've already touched some of these layers without necessarily naming them. Your CLAUDE.md file and system instructions are the prompt layer: they set the goal and the guardrails every session starts from. Context engineering is the ongoing decision about what to load into a conversation and, just as important, what to deliberately leave out, so the agent isn't drowning in irrelevant files when it needs to focus on one task. The harness is tool permissions, hooks and sandboxed execution, the machinery that stops a mistake from becoming a disaster. The loop is the agentic run itself, checking its own output against tests or a verification step before calling something done, rather than declaring victory on the first draft. Graph engineering is what agent teams and multi-subagent orchestration are for, once a single task needs several coordinated workers rather than one long-running agent grinding through everything alone.
What this looks like in practice
In practice this plays out in ordinary business tasks. An agent asked to reconcile invoices needs context (the right ledger and history), a harness (it shouldn't be able to post a transaction without a check) and a loop (it should verify totals before marking the job done), well before it needs a smarter model. An agent handling customer support tickets across email and chat is often a graph problem in disguise: one worker triaging, another drafting replies, a third checking tone and accuracy, coordinated rather than crammed into a single pass. None of this is exotic. It's ordinary software engineering applied to a new kind of runtime.
The practical takeaway: diagnose before you rebuild
When a Claude Code rollout underperforms, the instinctive fix is almost always "use a better prompt" or "try a newer model". It's rarely the right one. In most of the setups we review, the problem is a missing or under-built layer, most often context or harness, not a model capability gap at all. Diagnosing which layer is broken is usually a half-day conversation, something we scope from around $1,500 AUD, and it's a far cheaper fix than the alternative most businesses default to: re-platforming the whole setup from scratch because "the AI isn't smart enough". It almost always is smart enough. It's the scaffolding around it that's thin.
A quick check before you call anyone
Does the agent have the right files and history in front of it, or is it guessing from a half-loaded picture? That's a context question.
Can it accidentally do something risky, like pushing to production or touching customer data, without a human checkpoint in the way? That's a harness question.
Does it stop after one attempt, or does it check its own work and retry when something's off? That's a loop question.
Does one task actually need several coordinated agents working in parallel, or is a single well-built agent being asked to do too much at once? That's a graph question.
None of this requires ripping out what you've already built. Most Claude Code setups we've reviewed across Sydney, Melbourne and Brisbane offices are one or two layers away from working the way the business actually needs them to. The fastest way to find out which ones is a short, focused conversation rather than another round of prompt tweaking. If you want a second set of eyes on your setup, get in touch and we'll walk through where your agent is strong and where it's thin.



