{"slug": "you-re-optimizing-the-part-of-your-agent-you-don-t-own", "title": "You're Optimizing the Part of Your Agent You Don't Own", "summary": "A developer argues that the AI model is a rental, while the harness—the scaffolding around it—is what developers actually own and should optimize. Citing LangChain's Terminal-Bench results, where harness-only changes moved an agent from rank 30 to top 5 without changing the model, the post advocates for harness engineering as the discipline where real leverage lies.", "body_md": "Disclosure up front: I build\n\n[agentproto], one of the\n\ntools in this market. Every fact below is dated and sourced; the tool-by-tool\n\nreview lives in\n\n[9 coding-agent orchestrators, compared]where\n\ncompetitors' strengths are named. Corrections welcome — file an issue.\n\nOpen any dev feed this week and count how many arguments are about the model.\n\nWhich one codes best. Which one dropped. Which benchmark moved two points.\n\nIt's the wrong fight. Here's the receipt that should end it:\n\nThe receipt.LangChain took a coding agent fromrank 30 to the top 5 on— the wins came from the scaffolding\n\nTerminal-Bench without changing the model\n\naround it, not a better brain. Same weights, thirty places, harness only.\n\nSit with that. The single biggest jump they got came from the part you can\n\nactually edit — and most people spend their attention on the part they can't.\n\nYou did not train the model. You can't change its weights, you can't see its\n\ntraining data, and next quarter the vendor swaps it for a new one and your\n\ncarefully-tuned prompts quietly stop meaning what they meant. The model is a\n\n**rental**. It's a good rental — but it's not yours, and it moves under you.\n\nThe *harness* is everything you wrap around that rental to turn a raw\n\ntoken-predictor into something that ships work: the system prompt, the tools, the\n\nmemory, the loop, the checks, the sandbox it runs in. Anthropic's own harness\n\nteam defines it exactly this way — the harness is \"everything wrapped around a\n\nmodel that turns raw capability into completed work.\"\n\nThe one idea, if you remember nothing else:\n\nYou rent the model. You own the harness. Stop optimizing the rental.\n\nAnd it turns out the harness is the bigger lever anyway. LangChain's own writeup\n\nis one data point; the broader pattern is that harness-only changes repeatedly\n\nbeat model swaps. The field even has a name for the discipline now —\n\n\"harness engineering\" — with a whole awesome-list of tools for it. The model got\n\ncommoditized while you weren't looking. The scaffolding is where the craft moved.\n\nThere's a clean way to place yourself, and it's basically the history of this job\n\nin three steps. Anthropic's context-engineering post lays out the first two; the\n\nlong-running-agent writeups add the third. Find the one that sounds like your\n\nweek.\n\n**Era 1 — prompt engineering.** You get better results by wording the ask\n\nbetter. Few-shot examples, \"think step by step,\" role-play framing. This still\n\nmatters, but it's table stakes now, and it's the most fragile layer — a model\n\nupgrade can silently rewrite what your clever phrasing does.\n\n**Era 2 — context engineering.** You realized the bottleneck isn't the wording,\n\nit's *what's in the window*. Anthropic's framing: treat context as a finite\n\nattention budget, because recall degrades as the window fills — \"context rot,\"\n\nwhere attention spreads thinner across every added token. You curate what the\n\nmodel sees, load facts just-in-time, and keep state on disk instead of in the\n\ntranscript.\n\n**Era 3 — harness engineering.** You stopped tuning any single call and started\n\ndesigning the *system* the model runs inside: the loop, the tools, the roles, the\n\ngates, the sandbox. The model became one swappable component in a machine you\n\nbuilt.\n\nWhere are you?If your honest answer is\"I write really good prompts,\"\n\nyou're in Era 1 — doing real work on the most rented, most fragile layer. Every\n\nrung past here is about moving leverage into the part you keep.\n\nMost teams are stuck somewhere in Era 1, blaming the model for failures the\n\nharness was supposed to catch. So let's climb.\n\nThe minimal harness is almost embarrassingly small. Anthropic's \"Building\n\neffective agents\" reduces it to one line: an agent is a tool-using model in a\n\nloop, grounded in feedback from the real environment. Not a framework. A loop\n\nthat checks reality.\n\nStart there and resist the urge to add. The same post is blunt about it: begin\n\nwith the simplest thing and add complexity **only when it measurably helps**,\n\nbecause frameworks bury the actual prompts and responses under abstraction and\n\nmake failures harder to debug. Most \"my agent is dumb\" bugs are a harness that\n\ngrew faster than it earned.\n\nThe tell.If you can't name what each piece of your scaffolding isfor—\n\nwhich specific model weakness it patches — that piece is probably cargo. The\n\nloop grounded in ground truth is the only part you always need.\n\nOnce the loop works, the next failure is the model drowning in its own history.\n\nThis is the Era-2 move made structural. The long-running-agent playbooks compress\n\nit to three verbs — **Reduce, Offload, Isolate**:\n\n`NOTES.md`\n\n, a task list), not the transcript. State outside the context\nwindow survives a reset; state inside it evaporates.The knowledge you feed it is part of this budget too — and *whose* knowledge\n\ndecides how much of the internet's average you're stuck with, which is\n\n[its own piece](https://dev.to/agentiknet/your-coding-agent-knows-the-internets-average-heres-how-to-make-it-know-yours-1aeg). The rule underneath all of it:\n\nthe best context is the *smallest* set of high-signal tokens that lets the model\n\ntake its next step — even when the window could hold a thousand times more.\n\nHere's the harness component people skip, and it's the one that fails silently.\n\nAn agent asked *\"are you done?\"* says yes too early — models grade their own\n\noutput too leniently, seeing a button render and calling the feature shipped.\n\nAnthropic's harness team found the fix isn't a smarter prompt; it's a\n\n**structural split**, a generator-and-evaluator loop where the two roles are\n\nseparate and the evaluator is tuned to be skeptical.\n\nThe mature version splits three ways — planner, generator, evaluator — because\n\neach targets a *different* failure: the planner fixes under-scoping, the generator\n\ndoes the work, the evaluator catches the lie. This is the whole spine of the\n\n[supervision ladder](https://dev.to/agentiknet/your-agent-says-the-tests-passed-it-didnt-run-them-15j); the point here is narrower —\n\n**the evaluator is a harness component you install, not a mood the model gets\ninto.** Bolt it outside the working agent's loop, or it grades itself and passes.\n\nReceipt.This is also why \"just loop until done\" isn't reliability. A loop\n\ngives the agent persistence, not correctness — the completion check has to live\n\noutsidethe loop or it rubber-stamps a wrong turn fifty times. That argument\n\nhas[its own piece].\n\nThe resilient harness treats the model as a component, not the center of gravity.\n\nAddy Osmani's long-running-agent writeup names the split cleanly — **decouple the\nBrain, the Hands, and the Session**:\n\nDecoupled, each part upgrades on its own clock. Your rented Brain changes every\n\nquarter; your Hands and Session don't have to. This is also what makes cost\n\nrouting possible at all — plan on an expensive Brain, execute on a cheap one, and\n\n[the routing math](https://dev.to/agentiknet/cheaper-per-token-is-not-cheaper-per-outcome-3b9b) only works because the harness let you\n\nswap the engine without rebuilding the car.\n\nThere's an interop tax hiding here, though: today every tool speaks its own\n\ndialect of \"agent behavior as files\" — `CLAUDE.md`\n\n, `AGENTS.md`\n\n, `SKILL.md`\n\n, all\n\nmutually invisible — so a capability you built for one Brain doesn't travel to the\n\nnext. Fixing that with contracts instead of yet another framework is\n\n[a companion piece](https://dev.to/agentiknet/your-claude-skill-is-invisible-to-codex-heres-how-to-fix-it-3l74).\n\nNow the counterintuitive top of the ladder, and the part almost nobody says out\n\nloud. **Every piece of your harness encodes an assumption that the model is bad at\nsomething. When the model gets good at it, that piece becomes dead weight.**\n\nMultiple harness writers land on the same warning independently — it's the Bitter\n\nLesson arriving at the application layer. The context resets, the sprint\n\ndecomposition, the elaborate verification dance: each one exists to patch a\n\nweakness in *this* model generation. LangChain's own history shows it — the same\n\nscaffolding that lifted an agent to the top 5 becomes drag once a stronger model\n\nships and no longer needs it.\n\nThe move most teams miss.On every model upgrade, don't just enjoy the\n\nbump —re-audit your harness and rip out the scaffolding the new model madeThe harness that wins in 2026 is lighter than the one that won in\n\npointless.\n\n- Growing your harness forever is how you end up slower than someone running a plain loop on a better model.\n\nThat's the discipline in one sentence: build the scaffolding the model needs\n\ntoday, and be ruthless about deleting it the day it doesn't.\n\nHere's the fair part, because the whole argument depends on it. The model vendors\n\nare shipping harnesses too, and they're good. Claude Code *is* a harness. Managed\n\nAgents is Anthropic's hosted meta-harness — session, sandbox, and loop\n\nvirtualized behind a stable interface, April 2026. If you want the harness to be\n\nsomeone else's problem, that is a genuine, less-work answer, and I won't pretend\n\notherwise.\n\nTwo things you're trading away, though, and they're exactly the two the whole\n\npiece has been about. A hosted harness is **their** harness, wrapped around\n\n**their** model, on **their** plan — so you can't prune it (Rung 5 isn't yours to\n\ndo), and you can't swap the Brain for a cheaper or open one (Rung 4 is off the\n\ntable). You've rented the model *and* the harness. The one part that was supposed\n\nto be yours went back to being a rental.\n\nThe alternative is to own the harness as portable infrastructure — the checks,\n\nthe contracts, the roles living in *your* repo and running on *your* machine,\n\naround any model. That's the whole design of what I build:\n\n[agentproto](https://agentproto.sh) is a local daemon with adapters for Claude\n\nCode, Codex, and open models via OpenRouter or Hermes, so the harness you tune\n\ntravels when you swap the engine, and no vendor holds the keys. Concede the\n\nhosted route is less setup. Just know what you gave up to skip it.\n\nSo the feed has it backwards. The model you're all arguing about is the one thing\n\nin the whole system you can't change and won't keep. The harness — the loop, the\n\ncontext budget, the evaluator, the swappable parts, the scaffolding you're brave\n\nenough to delete — is the part that's yours, the part that moved a coding agent\n\nthirty places without a new model, and the part your competitors are ignoring\n\nwhile they refresh the benchmark leaderboard.\n\nTwo questions turn this into Monday's work. When your agent fails, do you reach\n\nfor a better prompt, or do you ask which harness component was supposed to catch\n\nit? And when the next model drops, do you just feel faster — or do you open your\n\nharness and delete what it made obsolete?\n\nRent the best engine you can. Then go build a car worth putting it in.\n\nIf your harness beats this framing — or you've found a scaffold worth keeping that\n\nI'd have told you to cut — tell me where. I'll fix the piece.\n\nTen pieces, one argument. Start anywhere; each one cross-links the rest.\n\n| Piece | The one idea | |\n|---|---|---|\n| 1 |\n|\n\n*Written by the maintainer of agentproto (Apache-2.0, source). Same contract as our /compare page — dated facts, named strengths, corrections by issue. Got something wrong? File an issue.*\n\n*Building agentproto in the open — follow @theagentproto and @agentik_ai on X.*", "url": "https://wpnews.pro/news/you-re-optimizing-the-part-of-your-agent-you-don-t-own", "canonical_source": "https://dev.to/agentiknet/youre-optimizing-the-part-of-your-agent-you-dont-own-b69", "published_at": "2026-07-14 01:36:40+00:00", "updated_at": "2026-07-14 01:57:16.475132+00:00", "lang": "en", "topics": ["ai-agents", "ai-infrastructure", "developer-tools", "large-language-models", "ai-research"], "entities": ["LangChain", "Anthropic", "Terminal-Bench", "agentproto"], "alternates": {"html": "https://wpnews.pro/news/you-re-optimizing-the-part-of-your-agent-you-don-t-own", "markdown": "https://wpnews.pro/news/you-re-optimizing-the-part-of-your-agent-you-don-t-own.md", "text": "https://wpnews.pro/news/you-re-optimizing-the-part-of-your-agent-you-don-t-own.txt", "jsonld": "https://wpnews.pro/news/you-re-optimizing-the-part-of-your-agent-you-don-t-own.jsonld"}}