Why Every Model Lab Ships a Harness

DeepSeek released dsh this month: an open source agent harness, MIT licensed, in developer preview with a warning that there will be compatibility-breaking changes. That makes four model labs shipping their own harness. OpenAI has Codex CLI. Google has Gemini CLI. Anthropic has Claude Code. None of these companies is a developer tools company. So why does every lab that trains a frontier model end up building a terminal agent?

I think there are three reasons, and none of them is developer goodwill.

The harness picks the model

Whoever owns the harness owns the default model choice. OpenCode advertises support for 75+ providers, which is exactly why the labs don’t want you using it. A lab-owned harness ships with the lab’s model preselected, its auth flow first, and its subscription credits as the cheapest path.

The subscription lock is the sharpest version of this, and Anthropic spent this year demonstrating it. In February it banned OpenClaw and similar third-party harnesses from subscription use. In May it announced that Agent SDK, headless and third-party app usage would leave subscription pools for a separate monthly dollar credit, with the interactive Claude Code TUI exempt. In June it paused that change, per this timeline of the saga quoting Anthropic’s Help Center. Whatever the final shape, the pattern is consistent: pi and OpenCode users get worse Claude economics than Claude Code users. OpenCode lost its Claude login entirely after a dispute with Anthropic, per Pinggy’s roundup. The model is sold per token; the harness decides whose tokens.

Sessions are training data

A harness sees things an API never does: which suggestions get accepted, which diffs get reverted, how a long task decomposes, where the human intervenes. That is post-training data for agentic behaviour, and the labs act like they know it.

The Claude Code source leak in March made this concrete. Per Layer5’s write-up, the shipped source includes anti-distillation measures: fake tool definitions and signed reasoning summaries, machinery whose only purpose is to stop competitors training on Claude Code transcripts. You don’t build that unless you believe harness data is worth training on. I wrote up the rest of the leak separately.

Benchmarks score the harness

Terminal-Bench evaluates the model and the harness together, and the swing from the harness alone is large. Jock’s harness comparison cites an independent test where the same Opus model scored 77% inside Claude Code and 93% inside Cursor, and a CORE-Bench run that went from 42% to 78% moving from bare scaffold to full harness. OpenBench makes the isolation explicit: its Track A pins every harness to the same gpt-5.5-medium model and grades with an external checker, and on its early matrices the frontier harnesses all hit the correctness ceiling while wall-clock spread ran about 4x and token cost about 8x. Its author calls the sample a shakedown rather than a verdict, but the shape matches: once correctness saturates, the harness differences show up as speed and token bill. A lab that ships its own harness gets to tune the pairing that produces its headline number. Codex CLI currently leads Terminal-Bench 2.1 at 83.4%, per Morph’s tracker, and that is a GPT-plus-Codex-CLI score, not a GPT score.

This is not cheating. Harness engineering is real engineering, and the leak showed how much of Claude Code’s lead is context pipeline rather than model. But it does mean lab-published agent benchmarks are pairings, and comparing models across different harnesses tells you less than the headline suggests.

Open today is not open tomorrow

The recent history here is short and consistent. Google is retiring Gemini CLI in June for a closed-source successor, Antigravity CLI, per Pinggy’s roundup. Anthropic never opened Claude Code at all; the source got out through a packaging mistake. OpenCode’s Claude login went away when it got big enough to matter.

dsh is MIT licensed today, and MIT is hard to revoke: the code that exists stays free. But the things that make a lab harness worth using are not in the licence. Model access terms, subscription credit rules and the plugin registry all sit outside it, and each one has already been used as a lever by another lab. If dsh wins users, expect the pressure to arrive there.

Where that leaves independent harnesses

pi, OpenCode, Aider and Goose have no model to sell, which changes what they optimise for. Goose moved to the Linux Foundation. Aider stays deliberately narrow: git-first edits, any provider. pi’s whole design is that the harness should be small enough to bend to your workflow, which only makes sense if you aren’t trying to capture anyone.

The trade is straightforward. A lab harness gives you the best-tuned pairing for that lab’s model and takes your workflow hostage to that lab’s commercial decisions. An independent harness gives you provider freedom and leaves the context engineering to you. dsh is the newest entry in the first category wearing the licence of the second. Which one it really is will show up in the access terms over the next year.

The next post looks at the architecture side of the same comparison: dsh puts agent behaviour in a plugin framework, Claude Code puts it in the prompt, and pi hands it to the user.