## Three Words That Get Thrown Around a Lot Someone on my team said "we need better prompt engineering" last month when what they actually meant was "our agent keeps forgetting what tool it just called." That's not a prompt problem. That's a harness problem wearing a prompt costume. This mix-up happens constantly right now, and honestly, I get why. All three terms sound similar. They all involve typing words into a box that eventually talks to a language model. But if you're building anything real with AI in 2026 — an agent, a copilot, a pipeline that touches production data — you need to know which layer you're actually working in. Otherwise you'll spend three weeks tweaking a system prompt to fix a bug that lives somewhere else entirely. Let me break down what each of these actually means, where the line sits, and why conflating them costs you time. ## Prompt Engineering: The Sentence-Level Problem Prompt engineering is the oldest of the three and the one everyone learned first, usually by accident, usually while messing around with ChatGPT at 11pm. It's the craft of phrasing a single instruction so the model does what you want. Word choice. Examples. Format constraints. Whether you say "be concise" or show it three examples of concise output. Chain-of-thought cues. Role framing like "you are a senior copywriter." Prompt engineering lives entirely inside one interaction. You write the prompt, the model responds, and that's the whole universe you're optimizing. It's real skill — a badly worded prompt genuinely produces worse output, and I've watched people burn an hour rewording a paragraph that just needed one clearer example dropped in. But prompt engineering has a ceiling. You can polish a sentence forever and it won't fix the fact that the model doesn't have the customer's order history, or doesn't know it already tried this approach five turns ago and failed. **Where it helps:** one-off tasks, writing assistants, single-turn classification, anything where the model's entire job fits in one message. ## Context Engineering: What the Model Actually Sees Context engineering is the layer above the sentence. It's about deciding what information the model has in front of it at the moment it generates a response — not how you phrase the ask, but what's actually loaded into the window. Think about a support bot answering a billing question. The prompt might be perfectly worded. Doesn't matter if the model doesn't have the user's actual invoice, their plan tier, and the last three support tickets sitting in context. Context engineering is the discipline of retrieving the right documents, summarizing long histories so they fit, deciding what to cut when the window gets tight, and structuring all of it so the model can actually use it instead of drowning in it. RAG systems are context engineering. Memory systems that decide what to keep from a conversation and what to forget are context engineering. So is the boring but critical work of chunking a PDF so the retrieval step actually pulls the right paragraph instead of a random header. Here's the thing people underestimate: a model with mediocre prompting but excellent context usually beats a model with a gorgeous prompt and garbage context. Every time. I'd bet money on it. **Where it helps:** anything involving retrieval, long conversations, multi-document reasoning, agents that need memory across sessions. ## Harness Engineering: The System Around the Model This is the one nobody talks about enough, and it's the one that actually breaks in production. A harness is the scaffolding that lets a model do things beyond just talking — call tools, check its own output, retry when something fails, loop until a task is done, decide when to stop. If context engineering is what the model sees, harness engineering is what the model can *do*, and what happens around it when it does something wrong. An agent that writes code needs a harness that runs the code, catches the error, and feeds that error back in a format the model can act on. An agent that books flights needs a harness that validates the booking before it commits, because the model will happily confirm a flight that doesn't exist if nothing stops it. None of that is prompting. None of it is context. It's plumbing — orchestration logic, error handling, state management, guardrails. Most of the AI failures I see in the wild aren't the model being dumb. They're a missing retry loop, no validation step, or an agent that has no way to know it already tried the same broken approach twice. That's a harness gap, not a model gap. **Where it helps:** autonomous agents, multi-step workflows, anything where the model takes actions with real consequences instead of just generating text. ## How They Actually Stack Together The cleanest way I've found to think about it: prompt engineering is what you say, context engineering is what the model knows, harness engineering is what the model can do and how it recovers when it can't. A good production agent needs real investment in all three, but they're not equal in cost. Prompt tweaks take an afternoon. Context pipelines take weeks. Harness infrastructure — the retries, the validation, the fallback logic — is the part teams consistently underbudget, and it's the part that determines whether your demo survives contact with real users. If your agent is confidently wrong, that's usually a context problem — it's missing information. If your agent gets stuck in loops or takes actions it shouldn't, that's a harness problem. If your agent just sounds off or misunderstands a single instruction, that's the prompt. Next time something breaks, ask which layer actually failed before you touch the system prompt again. Nine times out of ten, the prompt was never the problem.