Last week the story was defection: Fable 5 went metered, Sol sat one point behind at half the price, and the rational move was to leave. This week’s move is quieter and more subversive. You don’t have to leave. You can keep the tool you like and swap the model underneath it, meter and all.

The Coupling Is the Product

Every lab sells you two things and pretends they’re one: a model and a harness. Anthropic sells Claude and Claude Code. OpenAI sells GPT and Codex. The subscription is scoped to the harness: a Claude plan only spends inside Claude Code, a ChatGPT plan only spends inside Codex. Try to use one lab’s subscription in the other’s tool and it simply doesn’t fit.

That scoping is the actual lock-in. Not the model: the frontier converged to a rounding error months ago. Not the harness features: they copy each other’s within a fortnight. What holds you is the wiring that says this login only works in this app. It’s a business rule wearing the costume of a technical constraint.

A Translation Layer Thick

Underneath, both harnesses just speak HTTP to a model API. Claude Code sends the Anthropic Messages API; Codex sends OpenAI’s Responses API. The shapes differ (system prompts live in different fields, tool calls are structured differently, the streaming events don’t match) but they’re the same idea with different spelling.

So you write the dictionary. A couple hundred lines that accept Anthropic-shaped requests, translate them to OpenAI-shaped ones, attach your own token, and translate the answer back. Point Claude Code at that instead of Anthropic’s servers, and GPT-5.6 Sol answers inside Claude Code: same keybindings, same tools, same muscle memory, different brain. I’ve been building this translation into claude-launcher since December, a backend at a time; this week it learned to ride a ChatGPT subscription, and that’s the step that made the whole shape obvious. The load-bearing part was never the code. It was the realization that the coupling was never enforced anywhere but the base URL.

The subscription doesn’t buy you a model. It buys you a model wired to one app. Rewire it.

The Asymmetry: One Lab Shrugged

Here’s where it gets pointed. Doing this with an API key is unambiguous: pay per token, everyone’s fine. Doing it with your subscription means carrying the OAuth token your official login already minted into a tool the lab didn’t ship. And the two labs treat that very differently.

  • Anthropic drew a line. It walled its garden early this year, amending its terms to prohibit using OAuth tokens from Pro/Max accounts in any other product, tool, or service. Enforcement followed.
  • OpenAI shrugged. There’s no equivalent clause. Asked point-blank in their own repo whether a third-party tool using ChatGPT sign-in complies, an OpenAI engineer declined to say no: their terms and license are “quite permissive,” open-source projects are already doing it, consult a lawyer.

So the lab that clamped down loses the tinkerers, and the open one collects them, the same way it’s collecting the defectors. When your model lead is one point wide, being the platform people can build on is worth more than being the platform people are locked into.

The Harness Fights Back

The harness isn’t entirely defenceless. Claude Code quietly caps any non-Anthropic model to a 200k context window, no matter what the model actually supports: a soft moat around its own tier. But it’s soft. A pair of undocumented environment variables lift it, at the cost of turning off auto-compaction. The lock-in is real and it’s shallow, which is the pattern for all of this. The moat was never the code, and it turns out it was never the harness either. It was the base URL, and the base URL is a string you can change.

What you actually give up

The bridge is lossy. The receiving backend rejects request shapes the sending one emits: a system-role message that has to become a “developer” one, tool-call formats that don’t line up. And the system prompt shipped with each harness is tuned for its model, not the one you swapped in. You keep the ergonomics and lose some of the polish. It works; it isn’t free.

What This Doesn’t Solve

  • It’s a gray area, not a green light. Riding a subscription token through a foreign harness is tolerated where it isn’t banned, not blessed. The permissive lab can turn restrictive overnight, and Anthropic already did once.
  • You inherit a meter, not escape one. Bringing Sol into Claude Code still spends Sol’s quota, or its API bill. The proxy changes which meter runs, not whether one does.
  • The tuning gap is real. A model driven through a harness written for a different model underperforms its native tool on the hardest agentic work. For most tasks you won’t notice; on the frontier you will.

The meter was supposed to be a wall: pay more, use less, or leave. What it actually exposed is how thin the walls are. When every frontier model is a rounding error apart, you stop being loyal to a model and start being loyal to a harness: the keybindings, the file tree, the way it thinks about a task. And a harness, it turns out, is portable. The labs coupled it to their billing to make it feel fixed. It was a string in an environment variable the whole time.

Last week the move was to walk out the door. This week’s is to keep the door, the room, and the furniture, and quietly swap out the electricity.