<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Agents on Prskavec.Net</title><link>https://www.prskavec.net/tags/agents/</link><description>Personal site of Ladislav Prskavec — Software Engineer &amp; Site Reliability Engineer in Prague. Writing, conference talks, an OnCall design guide, and the You Build It You Run It podcast.</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>ladislav@prskavec.net (Prskavec.Net)</managingEditor><webMaster>ladislav@prskavec.net (Prskavec.Net)</webMaster><copyright>&amp;copy; {year} Ladislav Prskavec</copyright><lastBuildDate>Tue, 02 Jun 2026 09:00:00 +0100</lastBuildDate><atom:link href="https://www.prskavec.net/tags/agents/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent Harnesses: Why You Shouldn't Bet Your Company on Claude Code or Codex</title><link>https://www.prskavec.net/post/agent-harnesses/</link><pubDate>Tue, 02 Jun 2026 09:00:00 +0100</pubDate><author>ladislav@prskavec.net (Prskavec.Net)</author><guid>https://www.prskavec.net/post/agent-harnesses/</guid><description>Coding agents are great, but locking your company into Claude Code or Codex is a strategic mistake. Here is why agent harnesses matter and what to do instead.</description><content:encoded>&lt;p&gt;In less than two years, coding agents went from novelty to daily driver. &lt;a href="https://www.anthropic.com/claude-code"&gt;Claude Code&lt;/a&gt; and &lt;a href="https://openai.com/codex/"&gt;OpenAI Codex&lt;/a&gt; read your repo, run commands, edit files, and finish real work. I use them every day. You probably do too.&lt;/p&gt;
&lt;p&gt;Using a tool is one thing. Standardizing your whole company on a single vendor&amp;rsquo;s closed agent is another. That decision is easy to make and very expensive to walk back, so it is worth thinking through before you make it.&lt;/p&gt;
&lt;h2 id="what-is-an-agent-harness"&gt;What is an agent harness?&lt;/h2&gt;
&lt;p&gt;When people say &amp;ldquo;Claude Code&amp;rdquo; or &amp;ldquo;Codex,&amp;rdquo; they usually mean two things glued together:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The model&lt;/strong&gt;, the LLM that does the reasoning (Claude, GPT, and so on).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The harness&lt;/strong&gt;, everything around the model: the tool-calling loop, file editing, command execution, context management, permissions, prompts, and the UI.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The harness is what turns a chat model into an &lt;em&gt;agent&lt;/em&gt;. It decides which tools exist, how context is assembled, when to ask for permission, and how errors get recovered. The model is a commodity you rent by the token. The harness is where your actual workflow lives.&lt;/p&gt;
&lt;p&gt;And the harness is the valuable part. The vendor owns it.&lt;/p&gt;
&lt;h2 id="the-case-against-vendor-lock-in"&gt;The case against vendor lock-in&lt;/h2&gt;
&lt;h3 id="1-you-couple-your-workflow-to-someone-elses-roadmap"&gt;1. You couple your workflow to someone else&amp;rsquo;s roadmap&lt;/h3&gt;
&lt;p&gt;Adopt Claude Code or Codex wholesale and your engineers&amp;rsquo; muscle memory, your CI integrations, your custom commands, and your prompts all get shaped by that one harness. When the vendor changes pricing, drops a feature, throttles your usage, or pivots, you pay for it. You don&amp;rsquo;t control the roadmap and you can&amp;rsquo;t fork it.&lt;/p&gt;
&lt;h3 id="2-the-model-is-the-easy-part-to-swap-if-the-harness-lets-you"&gt;2. The model is the easy part to swap, if the harness lets you&lt;/h3&gt;
&lt;p&gt;A new best model shows up every few months. The model that fits your codebase best in Q1 may be second-best by Q3. A good setup lets you switch when the price/performance curve moves. A closed vendor harness ties you to their model family, and that costs you the biggest lever you have: picking the best model for the task at the best price.&lt;/p&gt;
&lt;h3 id="3-data-and-compliance-boundaries-are-not-negotiable-for-many-companies"&gt;3. Data and compliance boundaries are not negotiable for many companies&lt;/h3&gt;
&lt;p&gt;Where does your code go? What gets logged, retained, and used for training? With a closed harness you take the vendor&amp;rsquo;s answers as given. For regulated industries, air-gapped environments, or anyone with serious IP concerns, that is not enough. An open harness lets you choose providers, route to self-hosted or enterprise endpoints, and keep an audit trail you actually own.&lt;/p&gt;
&lt;h3 id="4-lock-in-is-cheap-to-enter-and-expensive-to-leave"&gt;4. Lock-in is cheap to enter and expensive to leave&lt;/h3&gt;
&lt;p&gt;The start is great. Then you have hundreds of engineers with vendor-specific habits, internal tooling built against a proprietary CLI, and no abstraction layer. Migrating later means retraining people and rebuilding integrations. That switching cost is exactly what gives the vendor pricing power over you.&lt;/p&gt;
&lt;h3 id="5-your-competitive-edge-should-not-be-a-saas-subscription"&gt;5. Your competitive edge should not be a SaaS subscription&lt;/h3&gt;
&lt;p&gt;If everyone in your industry runs the same off-the-shelf agent the same way, where is your advantage? The leverage is in &lt;em&gt;how&lt;/em&gt; you wire agents into your codebase, your domain knowledge, your tests, and your review process. That belongs in something you control.&lt;/p&gt;
&lt;h2 id="the-alternative-own-the-harness-rent-the-model"&gt;The alternative: own the harness, rent the model&lt;/h2&gt;
&lt;p&gt;This is not an argument against AI coding agents. It is an argument for putting the boundary in the right place. Here is the setup I recommend.&lt;/p&gt;
&lt;h3 id="own-the-harness-with-pi"&gt;Own the harness with pi&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://pi.dev"&gt;pi&lt;/a&gt; is a minimal, extensible terminal coding harness. The idea is to adapt the tool to your workflow instead of the other way around, and you do that without forking the agent&amp;rsquo;s internals. You extend it with TypeScript extensions, skills, prompt templates, and themes, then package and share them across your team over npm or git.&lt;/p&gt;
&lt;p&gt;That gives you what you want from a company harness:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your custom tools, prompts, permissions, and skills become version-controlled artifacts in your repo, not settings trapped in a vendor&amp;rsquo;s cloud.&lt;/li&gt;
&lt;li&gt;It runs in interactive, print/JSON, RPC, and SDK modes, so the same harness powers your engineers&amp;rsquo; terminals and your CI pipelines and internal apps.&lt;/li&gt;
&lt;li&gt;It ships with sensible defaults but stays small, so you add only the complexity you need.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You get the ergonomics of Claude Code or Codex, but the workflow logic is yours and travels with your codebase.&lt;/p&gt;
&lt;h3 id="rent-the-model-through-a-gateway"&gt;Rent the model through a gateway&lt;/h3&gt;
&lt;p&gt;Keep the model pluggable. The simplest path is &lt;a href="https://openrouter.ai"&gt;OpenRouter&lt;/a&gt;, a model gateway that gives you access to basically every model worth using behind one interface. Swap Anthropic, OpenAI, Google, and open-weight models on price/performance without rewriting anything.&lt;/p&gt;
&lt;p&gt;If your data or compliance requirements are stricter, and for many companies they are, go through a cloud provider gateway instead. &lt;a href="https://aws.amazon.com/bedrock/"&gt;Amazon Bedrock&lt;/a&gt; and &lt;a href="https://azure.microsoft.com/en-us/products/ai-foundry"&gt;Azure AI Foundry&lt;/a&gt; give you the same model menu inside your existing cloud account, with your org&amp;rsquo;s networking, IAM, logging, and data-residency guarantees already in place. For regulated or IP-sensitive work, that is often the right answer.&lt;/p&gt;
&lt;p&gt;Either way, standardize on the &lt;a href="https://platform.openai.com/docs/api-reference"&gt;OpenAI-compatible API&lt;/a&gt; shape as the lowest common denominator, so swapping providers is a config change and not a migration.&lt;/p&gt;
&lt;h3 id="measure-and-route"&gt;Measure and route&lt;/h3&gt;
&lt;p&gt;Once the model is a swappable component, you can benchmark cost and quality per task and route on purpose: a cheap fast model for boilerplate, a strong one for tricky refactors. With pi owning the loop and a gateway in front, that routing is yours to tune.&lt;/p&gt;
&lt;h2 id="but-claude-code--codex-is-just-better-right-now"&gt;&amp;ldquo;But Claude Code / Codex is just better right now&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Maybe today. The gap between the leading harness and the open ones is closing fast, and the open ones are built out in the open. Optimizing for &amp;ldquo;best this quarter&amp;rdquo; while you lock yourself in for years is a bad trade, especially for something as foundational as how your company writes software.&lt;/p&gt;
&lt;p&gt;Use the good tools. Just don&amp;rsquo;t let one of them become the thing you can&amp;rsquo;t leave.&lt;/p&gt;
&lt;h2 id="takeaways"&gt;Takeaways&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The harness, not the model, is where your workflow lives, and closed vendors own it.&lt;/li&gt;
&lt;li&gt;Treat the model as a swappable commodity. Lock-in takes that lever away.&lt;/li&gt;
&lt;li&gt;Data, compliance, and cost control all get harder when the harness is a black box.&lt;/li&gt;
&lt;li&gt;Use an extensible harness like &lt;a href="https://pi.dev"&gt;pi&lt;/a&gt; and keep your prompts, tools, and skills version-controlled in your own repo.&lt;/li&gt;
&lt;li&gt;Rent models through a gateway: &lt;a href="https://openrouter.ai"&gt;OpenRouter&lt;/a&gt; for breadth, or &lt;a href="https://aws.amazon.com/bedrock/"&gt;Bedrock&lt;/a&gt; / &lt;a href="https://azure.microsoft.com/en-us/products/ai-foundry"&gt;Azure AI Foundry&lt;/a&gt; when compliance and data residency matter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Adopt agents fast, but keep the boundary, the harness and the choice of model, in your own hands.&lt;/p&gt;</content:encoded></item></channel></rss>