How to pick a coding agent you can leave
Separate the model, the harness and your own instructions so that switching coding agents costs you an afternoon rather than a rewrite of how you work.
on this page · 0 / 0 checked
Every few months an open-source project appears that does, in principle, what the coding agent you pay for does. It arrives with a licence badge, a star count and a chart, and the two available reactions are to ignore it or to lose a weekend migrating to it. Both decisions usually get made on the wrong evidence. A star count measures curiosity. A benchmark posted by the people who built the thing measures their choice of benchmark.
The useful question is narrower and it is worth answering before any of those projects show up. What you call “the tool” is three separate layers stacked together, and only one of them is the reason switching feels expensive. This guide is for freelancers and small teams who already run an agentic coding tool in a terminal or an editor and want to know how much of their setup would survive a move. It is not a product review, and it is not for anyone shipping code they do not read. If nobody on your side checks the output, which agent produced it is not your largest problem.
A coding agent is three layers with three different bills
Anthropic describes Claude Code as “an agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools”, available in the terminal, an IDE, a desktop app and the browser [1]. Sitting inside that one description are three things that can be bought, built and replaced independently.
The model does the reasoning. The harness runs the loop around it: gathering the right files, calling tools, retrying failures, holding the session together, enforcing what the agent is allowed to touch. The surface is the thing you type into, and each surface connects to the same underlying engine, which is why your repository’s CLAUDE.md files, settings and MCP servers work across all of them [1].
The bills separate along the same lines. Every paid Claude tier includes Claude Code: Pro at $20 a month billed monthly or $17 a month billed annually, Max from $100 a month, Team standard seats at $25 per seat billed monthly or $20 billed annually, and Enterprise at $20 per seat, with usage cost scaling with the model and the task [2]. That money buys model usage. The harness itself is not a separate line item: you install it with a shell script, Homebrew, WinGet or a Linux package manager, then sign in with the plan you already pay for [1]. Sit with that for a second, because it reframes the whole “open-source rival” conversation. The layer being opened up by a free project is the layer that was already free.
The harness is the one you can swap in an afternoon
Swapping the model under a harness is a configuration change, and both sides document it. Anthropic supports running Claude Code against Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry, Claude Platform on AWS or a self-hosted gateway, routed with ANTHROPIC_BASE_URL and the equivalent per-provider variables, with /status in a session showing which provider, base URL and proxy you are actually on [5]. DeepSeek publishes the mirror image: point Claude Code at https://api.deepseek.com/anthropic, set ANTHROPIC_AUTH_TOKEN to a DeepSeek key, and map the model aliases to deepseek-v4-pro and deepseek-v4-flash [6]. No fork, no plugin, no code.
Swapping the harness under a model is a download. DeepSeek Harness is MIT-licensed, built on an everything-is-a-plugin architecture on top of the Cordis framework, and had more than 210,000 GitHub stars when this was checked [7]. Running it takes one command, npx @deepseek-ai/dsh web, which starts a local web interface [7]. It also describes itself as being in developer preview and iterating rapidly, and states in capital letters that there will be compatibility-breaking changes [7]. That sentence, not the star count, is the one that should decide how you use it.
Neither of those swaps touches your repository. That is the good news and it is also the trap, because it means the switching cost you actually feel lives somewhere else entirely.
One thing does not travel with a harness swap, and it is the thing least often compared. The harness is where the guardrails are enforced. Anthropic draws the line explicitly: settings rules are enforced by the client regardless of what the model decides, while instruction files shape behaviour without being a hard enforcement layer, so blocking specific tools, commands or file paths is a settings job and not a wording job [4]. Changing harness therefore means changing what the agent is physically prevented from doing, not just what it is told. Work out what your current one is stopping before you assume a replacement stops the same things.
Your instruction file is the asset, and it should be one file
The thing that makes an agent useful on your codebase is not the agent. It is the accumulated file of “here is how this project works” that you built by writing down every correction twice. Anthropic’s guidance is to add to it when Claude makes the same mistake a second time, when a code review catches something the agent should have known, or when you type the same clarification you typed last session [4]. Six months of that is a real asset, and it is the only part of the setup that is genuinely expensive to rebuild.
It is also the part that is easiest to keep portable, if you decide to. AGENTS.md is “a simple, open format for guiding coding agents”, used by over 60,000 open-source projects, listed on its own site alongside more than 20 tools that read it, including Codex, Gemini CLI, Cursor, Zed, GitHub Copilot and Devin, and now stewarded by the Agentic AI Foundation under the Linux Foundation [8]. It is standard markdown with no required fields; the agent simply parses the text you provide [8].
Claude Code reads CLAUDE.md rather than AGENTS.md, and documents the two-line reconciliation rather than asking you to duplicate anything. Put @AGENTS.md at the top of your CLAUDE.md and add any Claude-specific instructions below it, or run ln -s AGENTS.md CLAUDE.md if you have nothing to add [4]. Either way one file is the source of truth and every agent reads it. Keep it under 200 lines, because longer files consume more context and reduce adherence [4].
DeepSeek’s own harness repository is the worked example. Its agent instructions sit in a 16 KB AGENTS.md at the repository root, and the CLAUDE.md beside it is 9 bytes long, which is exactly the length of the other file’s name [7].
MCP is the other piece that travels
The second half of your setup is the tools the agent can reach. Anthropic’s docs describe the Model Context Protocol as “an open standard for connecting AI tools to external data sources”, used to read design docs in Google Drive, update tickets in Jira, pull data from Slack or call your own custom tooling [1]. It is a protocol, not a product, so the servers you configure are not owned by whichever agent you happen to run this quarter.
The practical move is the one Anthropic recommends for organisations: have one central team configure the MCP servers and check a .mcp.json into the codebase so that all users benefit [5]. That file is portable in exactly the way an agent’s private settings directory is not. If you ever run a second agent alongside the first, the tools come with you and the only thing you reconfigure is the instruction file shim above.
There is a cost caveat worth knowing before you add servers enthusiastically. MCP tool definitions are deferred by default so only tool names and server instructions enter context until a specific tool is used, but Anthropic still recommends preferring ordinary command-line tools such as gh, aws or gcloud where they exist, because they add no per-tool listing at all, and disabling servers you are not actively using [3].
A free harness does not produce a smaller bill
Claude Code charges by API token consumption, and Anthropic publishes the range: across enterprise deployments the average is around $13 per developer per active day and $150 to $250 per developer per month, with costs staying below $30 per active day for 90% of users [3]. Those numbers describe the model doing work. Replacing the loop around the model with an MIT-licensed one does not change them.
What does change them is running a cheaper model, which is a configuration line rather than a migration. It comes with its own small print. DeepSeek’s own integration guide notes that invoking the web search tool generates additional API requests to summarise the retrieved content, which adds token cost [6], and that DeepSeek maps the Claude model names to its own, sending models starting with claude-opus to deepseek-v4-pro and models starting with claude-sonnet or claude-haiku to deepseek-v4-flash [6]. Your /model picker will keep showing names that no longer mean what they say.
Anthropic's docs put the enterprise average near $13 per developer per active day and $150–250 per month [3]. Computed in the page; nothing is sent anywhere.
The cost lever is context, not the badge on the tool
Token costs scale with context size, so the habits that make an agent cheap are the same on every harness and none of them involve switching. Clear between unrelated tasks, because stale context wastes tokens on every subsequent message [3]. Match the model to the job rather than leaving the largest one as the default [3]. Delegate verbose work such as running tests or processing log files to subagents, so the output stays in their context and only a summary returns [3]. Move detailed workflow instructions out of the always-loaded instruction file and into skills that load on demand [3].
The single most expensive habit is the least visible one. Claude Code sends your full conversation with every request, so a one-line question in a session that has been open all day still draws usage for the whole conversation, and the first message after a break longer than the cache lifetime misses the cache and reprocesses the lot [3]. If you are running several agents at once, note that Anthropic puts agent teams at roughly 7 times the tokens of a standard session when teammates run in plan mode, because each teammate maintains its own context window [3].
Measure this before you form an opinion on price. A week of your own spend per person is better evidence than any comparison someone else ran, and it is the only figure that tells you whether a cheaper model would save you real money or 40 cents.
What still goes wrong
Developer preview means what it says. DeepSeek Harness does not hedge the warning: it is iterating rapidly and there will be compatibility-breaking changes [7]. A plugin architecture makes that harder rather than easier, because the interfaces third-party plugins depend on are exactly the ones still moving. Prototyping against something in that state is cheap and sensible. Depending on it for work you have promised to a client is a different decision, and the honest version of it is that you are now maintaining a plugin.
Portability is real at the layer of instructions and tools, and thinner above it. Model aliases resolve differently on different providers, which is why Anthropic recommends pinning specific model versions on cloud-provider deployments, since without pinning an alias falls back to a built-in default that can lag the newest release and may not be enabled in your account [5]. Features do not map one to one either, which is why Anthropic maintains a feature-by-feature breakdown of what is available on each deployment option [5]. Budget for the swap itself to be the quick part and the tail of small differences to be the slow one.
And the instruction file is guidance, not a guarantee. Anthropic is direct about this: CLAUDE.md content is delivered as a user message after the system prompt rather than as enforced configuration, so there is no guarantee of strict compliance, and anything that must run at a fixed point, such as before every commit, belongs in a hook that executes regardless of what the model decides [4]. If your reason for wanting a particular agent is that it will reliably refuse to do something, read that sentence twice. No harness, open or closed, makes a model obedient. It only makes the rules easier to write down and cheaper to move.
- 01Anthropic — Claude Code overviewcode.claude.com
- 02Anthropic — Claude plans and pricingclaude.com
- 03Anthropic — Claude Code: manage costs effectivelycode.claude.com
- 04Anthropic — Claude Code: how Claude remembers your projectcode.claude.com
- 05Anthropic — Claude Code enterprise deployment overviewcode.claude.com
- 06DeepSeek — Using DeepSeek models in Claude Codeapi-docs.deepseek.com
- 07DeepSeek — DeepSeek Harness repositorygithub.com
- 08AGENTS.md — open format for guiding coding agentsagents.md