Selection guide for engineering leads

DeepSeek Harness vs Claude Code:don't migrate yet, do run dsh in parallel

Keep shipping on Claude Code. Give DeepSeek Harness a throwaway branch and a week.

Short answer: keep Claude Code as the tool your team ships with, and run DeepSeek Harness beside it on work you can afford to throw away. dsh is one day into public life at 0.1.0-rc.6 and its own README promises compatibility-breaking changes. That is a reason to evaluate it early, and a reason not to move production work onto it this month.

This page compares what the two products actually are, not how fast they code. Everything here is traceable to an official document, a public repository or the npm registry, and every claim carries the link. If you only have thirty seconds, screenshot the matrix in the next section: it is written to be read on its own, out of context, in a team chat.

How this page is sourced. Every row below is a product fact taken from official documentation, the public repositories, or the npm registry, checked on 2026-08-14. This page contains no benchmark, no speed measurement and no success-rate claim, because we have not run one.

The decision in eight facts

dsh version
0.1.0-rc.6
dsh licence
MIT
dsh repo created
2026-08-13
Claude Code version
2.1.231
Codex CLI licence
Apache-2.0

The call

The migration verdict: keep Claude Code, run dsh on a branch

Do not migrate your team to DeepSeek Harness this month. Claude Code is a generally available product with a documented compliance posture; dsh is a developer preview whose README warns in capitals that breaking changes are coming. A parallel trial costs you a branch and a week. A migration costs you every plugin, prompt and habit your team has built.

Stay on Claude Code if any of these is true

  • Your team already ships with Claude Code and has CLAUDE.md, skills, hooks or subagents in the repository. None of that format ports to dsh, and there is no importer.
  • You need a supplier you can point procurement at. Anthropic publishes SOC 2 Type 2 and ISO 27001 material through its Trust Center; dsh, one day old, publishes no equivalent.
  • You need a public bug queue to search at two in the morning. The dsh repository has GitHub Issues turned off and routes feedback to Discussions.
  • You work over ssh or in tmux. dsh ships a local Web UI profile and a headless profile; a terminal UI is not among its shipped profiles.

Run dsh in parallel if any of these is true

  • You want to own the agent runtime rather than rent it. dsh is MIT-licensed and every part of it, including the agent loop, is a replaceable plugin.
  • You need to drive a model Claude Code will not drive. dsh takes any custom OpenAI-compatible base URL from its settings form.
  • You are building an internal agent product and were about to write your own harness anyway. That is the case dsh is explicitly designed for.
  • You want the option later. Learning a preview on a throwaway branch now is far cheaper than learning it under deadline in six months.

The screenshot table

DeepSeek Harness vs Claude Code vs Codex, in one table

DeepSeek Harness is a framework for building an agent harness. Claude Code and Codex are finished coding agents you extend from the outside. That single distinction decides most of this comparison: dsh gives you the runtime's source and asks you to assemble it, while Claude Code and Codex give you a working agent and a documented extension surface.

dsh

A harness you assemble, not an agent you install

An MIT-licensed agent harness built on Cordis. Model adapters, tools, session log, sandbox policy and the agent loop itself are all plugins, replaceable from configuration.

Teams building their own agent runtime who want the source of every layer.

Claude Code

A finished coding agent with a large extension surface

Anthropic's agentic coding tool, generally available since May 2025. Terminal, IDE, desktop and web surfaces, with CLAUDE.md, skills, subagents, agent teams, hooks, MCP and plugins as the extension layer.

Teams that need a supported coding agent today and want deterministic lifecycle automation.

Codex

A finished coding agent across CLI, IDE, desktop and cloud

OpenAI's coding agent. The CLI is Apache-2.0 and written in Rust; the product spans terminal, IDE extension, desktop app and a cloud surface, with AGENTS.md, rules, skills, plugins, MCP and subagents.

Teams already inside the OpenAI account and workspace-policy perimeter.

DeepSeek Harness vs Claude Code vs Codex — product positioning, compiled 2026-08-14Compiled 2026-08-14 from official documentation. Versions: dsh 0.1.0-rc.6 · Claude Code 2.1.231 · Codex CLI from github.com/openai/codex. No benchmark, speed or success-rate data appears in this table, because we have not run one.
DimensionDeepSeek Harness (dsh)Claude CodeCodex
What the product actually isThe boundary the vendor drew around the thing you installdsh architecture · Claude Code docs · Codex docsA framework for composing an agent harness. Every capability, including the agent loop, is a Cordis plugin mounted from configuration.A finished coding agent. You get the agentic loop, built-in file, search, execution and web tools, and extend it from the outside.A finished coding agent, distributed as a Rust CLI plus IDE, desktop and cloud surfaces.
How you extend itWhat format you write when you want new behaviourdsh CLI README · Extend Claude Code · Codex agent configurationA Cordis plugin: a TypeScript package that contributes services, typed events and reversible effects. Installed with dsh plugin add, which forwards to pnpm inside the profile.CLAUDE.md, skills, subagents, agent teams, hooks, MCP servers, and plugins that bundle those together for distribution through a marketplace.AGENTS.md, rules, skills, plugins, MCP servers and subagents, configured per project and per account.
Where it runsThe surfaces the vendor actually ships todaydsh CLI entry modes · Claude Code overview · Codex CLI docsTwo shipped profiles: web, a local Web UI served at http://127.0.0.1:3080, and headless, a one-shot runner that prints a final answer and exits.Terminal CLI, IDE extensions, a desktop app, and the web, plus remote control and CI surfaces. Most surfaces need a Claude subscription or a Console account.Terminal CLI, IDE extension, desktop app and a cloud surface, plus an app-server protocol for embedding Codex in your own product.
Session history and replayWhat you can go back and inspect after a rundsh architecture · Claude Code sessions & checkpointingAn append-only SessionEvent log owned by the core/session package, exposed on the context as ctx.sessions.Local JSONL transcripts under ~/.claude/projects, resumable and branchable, plus automatic file checkpoints you can rewind with /rewind.Session history handled per surface, with cloud tasks tracked in the Codex cloud environment.
Maturity and production readinessHow old it is, what version it is on, and what the vendor promisesdsh README · Claude Code security · openai/codexDeveloper preview. Repository created 2026-08-13, npm version 0.1.0-rc.6, README states in capitals: THERE WILL BE COMPATIBILITY-BREAKING CHANGES. GitHub Issues are turned off; feedback goes to Discussions. No compliance material published.Generally available since May 2025, repository public since February 2025, npm version 2.1.231. Anthropic publishes SOC 2 Type 2 and ISO 27001 material through its Trust Center. Not open source: use is governed by Anthropic's Commercial Terms of Service.Public since April 2025. The CLI is Apache-2.0 on GitHub; access requires a ChatGPT sign-in or an OpenAI API key, and usage follows your workspace or API organisation policy.
Pick this one whenThe one-line reason a team ends up on eachSpringBrand reading of the three product boundariesYou need to own, replace or resell the harness architecture itself, and you can absorb breaking changes at your own pace.You need a supported coding agent your team can ship with this quarter, with lifecycle hooks and an answerable vendor.You are already inside the OpenAI account perimeter and want the same agent in the terminal, the IDE and the cloud.

Evidence

Sourced facts behind the dsh and Claude Code comparison

Each row here is a single checkable fact with the document it came from. We collected them on 2026-08-14 from the npm registry, the two public repositories and the official documentation sites. Nothing in this table is an opinion, a benchmark or a projection, and any row we could not source from an official document was deleted rather than guessed.

FactDeepSeek Harness (dsh)Claude Code
LicenceLICENSE files, both repositoriesMITProprietary. © Anthropic PBC, use subject to Anthropic's Commercial Terms of Service.
Current published versionnpm registry, checked 2026-08-140.1.0-rc.6, published 2026-08-132.1.231
Vendor's own status wordingdsh README · anthropic.com/news/claude-4"DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.""Claude Code, now generally available" — Anthropic launch post, May 2025.
Repository first publicGitHub repository metadata, checked 2026-08-142026-08-132025-02-22
How you start itdsh README · Claude Code overviewnpx @deepseek-ai/dsh web, then open http://127.0.0.1:3080curl -fsSL https://claude.ai/install.sh | bash, then run claude
Models it can drivedsh providers guide · Claude Code enterprise deploymentDeepSeek plus catalog providers such as Anthropic and OpenAI, and any custom OpenAI-compatible base URL you enter in Settings.Claude models, served by Anthropic, Amazon Bedrock, Google Cloud's Agent Platform or Microsoft Foundry, optionally through an LLM gateway.
Where you report a bugdsh README · anthropics/claude-code READMEGitHub Discussions. Issues are turned off on the repository.GitHub Issues, or the /bug command inside a session.
Plugin discoverygithub.com/topics/dsh-plugin · Claude Code pluginsThe dsh-plugin topic on GitHub. Community plugins, published within days of launch, none security audited.Plugin marketplaces, documented as a first-party distribution mechanism.

Read the warning literally

What developer preview means for dsh 0.1.0-rc.6

Developer preview is not marketing softening here. The DeepSeek Harness README carries a dedicated section that reads: THERE WILL BE COMPATIBILITY-BREAKING CHANGES. That sentence is the single most important input to a migration decision, because it moves breaking changes from a risk you estimate to a cost the vendor has already told you to plan for.

DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.
DeepSeek Harness README, Developer preview section

The practical translation is simple. Anything you write against dsh today — a Cordis plugin, a profile, a cordis.patch.yml layer, an internal wrapper — is written against an interface its authors have reserved the right to change. On a throwaway branch that costs you an afternoon. Across a team of twelve, in a repository other people depend on, it is an open-ended maintenance commitment on someone else's release cadence.

The version string says the same thing in fewer characters. 0.1.0-rc.6 is a release candidate for a 0.1.0, not a 1.0. Compare that with the number Claude Code publishes on npm, 2.1.231, which is the trace of a product that has been shipping patch releases publicly since early 2025.

None of this is a criticism of dsh. A one-day-old project that told you it was production ready would be the actual warning sign. The point is only that the vendor's own language should set your risk budget, and the vendor's own language here is unambiguous.

Write the risks down first

The cost of switching: what a migration from Claude Code to dsh charges you

A migration is not a licence swap. It is a rewrite of your team's extension layer, a loss of your support path, and an ongoing tax paid to a preview release cycle. Here is the whole bill, written out. If a comparison page only shows you the upside, it is selling something; the eight items below are the ones that actually decide the answer.

  1. 01

    Your Claude Code extension layer does not port

    CLAUDE.md files, skills, hooks, subagents, agent teams and plugin marketplaces are Claude Code formats. The dsh extension unit is a Cordis plugin: a TypeScript package that contributes services, typed events and reversible effects. There is no importer between the two, so every piece of team knowledge encoded in markdown has to be rewritten as code.

  2. 02

    Breaking changes are promised, not merely possible

    The README warning is the vendor telling you the interface will move. Budget for re-doing plugin work on each release, and do not put anything on the critical path that you are not willing to fix twice.

  3. 03

    There is no public bug queue to search

    GitHub Issues are turned off on the dsh repository; feedback goes to Discussions. When you hit a wall at midnight, the two-year archive of "someone already reported this" that a mature project gives you simply does not exist yet.

  4. 04

    The plugin ecosystem is days old and unaudited

    Plugins are discovered through the dsh-plugin GitHub topic. Almost all of them were published within days of the public launch, none carry a security audit, and installing one runs third-party code inside the same process as your agent. Treat every community plugin as untrusted code.

  5. 05

    The Node and pnpm toolchain becomes your problem

    dsh plugin add is a thin forwarder to pnpm inside the profile directory, so pnpm's behaviour becomes yours to manage. Notably, pnpm 10 blocks dependency build scripts by default, which is exactly what a git-hosted plugin needs to compile itself. Our install page covers the six failure modes we have seen.

  6. 06

    You lose the compliance conversation

    Anthropic publishes SOC 2 Type 2 and ISO 27001 material through its Trust Center, which is what a security review asks for. A repository created on 2026-08-13 has nothing comparable to hand over, and no amount of MIT licensing substitutes for it.

  7. 07

    The shipped surfaces may not match how you work

    dsh ships a web profile serving a local Web UI on port 3080 and a headless profile for one-shot runs. If your team lives in tmux over ssh, or expects a terminal UI, that expectation is not met by the profiles shipped today.

  8. 08

    Nobody has published a credible head-to-head, including us

    There is no public benchmark holding model, prompt and task fixed while swapping only the harness. Any page showing you a speed figure or a success rate for dsh today is reporting a single anecdote or inventing a number. We would rather tell you the measurement does not exist than pretend we made it.

Item five is the one people hit first. If you are already mid-install, the dsh install and troubleshooting guide covers the Node version, the port 3080 collision, where the API key is stored, and the pnpm build-script block, with the exact commands.

The fair case for dsh

Where dsh genuinely beats Claude Code today

Three advantages are real and verifiable right now, and none of them is about output quality. dsh is MIT-licensed source you can fork, it will drive any OpenAI-compatible endpoint you point it at, and its architecture makes the agent loop itself a replaceable plugin rather than a fixed part of the product you have to work around.

MIT source you can fork, read and ship inside your own product

The whole harness is MIT-licensed. Claude Code is proprietary: its LICENSE.md places use under Anthropic's Commercial Terms of Service. If your requirement is to embed, modify or resell the runtime, that difference is not a preference, it is a hard gate.

Both LICENSE files

Model choice is a settings field, not a deployment decision

The dsh provider guide documents catalog providers such as Anthropic and OpenAI alongside a custom provider form that takes any base URL, API protocol and model list. Claude Code runs Claude models, served by Anthropic or by Bedrock, Google Cloud's Agent Platform or Microsoft Foundry. If you must route a company gateway or a self-hosted model, dsh gets there with a form.

dsh providers guide

The agent loop is a plugin, so there is no core to fight

The dsh architecture document states that every part of the product is a plugin, including the model adapter, the tool registry, the session log and the agent loop itself, and that registrations unwind when their plugin unloads. If your project is an agent runtime rather than a codebase, that is the difference between extending a product and owning one.

dsh architecture document

The rest of the shortlist

Where Codex and OpenCode sit in the same decision

Codex is the closest competitor to Claude Code, not to dsh: it is a finished coding agent spanning terminal, IDE, desktop and cloud, with its CLI published under Apache-2.0. OpenCode is the MIT-licensed open source coding agent people reach for when licensing is the constraint. Neither is a harness framework, which is the category dsh actually competes in.

Codex

OpenAI's coding agent. The CLI lives at github.com/openai/codex under Apache-2.0 and is written in Rust; the product also ships an IDE extension, a desktop app, a cloud surface and an app-server protocol for embedding. You extend it with AGENTS.md, rules, skills, plugins, MCP and subagents, and you sign in either with a ChatGPT account or an API key. Compare it against Claude Code, not against dsh.

developers.openai.com/codex

OpenCode

An open source AI coding agent distributed on npm as opencode-ai, MIT-licensed. It answers the licensing objection to Claude Code and Codex without asking you to assemble a runtime, which makes it the natural comparison for teams whose only blocker is the licence rather than the architecture.

sst/opencode LICENSE

DeepSeek Harness

The odd one out, deliberately. dsh is not trying to be a better coding agent than Codex or Claude Code; it is trying to be the framework you build one on. If your shortlist is dsh, Codex and Claude Code, you are comparing a kit against two finished products, and the honest question is which of those two things you actually need.

deepseek.com/harness

The soft landing

Run a fair parallel trial of dsh instead of a migration

A parallel trial answers the question a benchmark cannot: does this fit how your team works. Fix the model, the prompt and the task, change only the harness, and write down what happened. Seven checks are enough. Copy the list below into your own doc; it is the checklist we use, and it is on the page rather than behind an email form.

  1. 01

    Pin the version you tested. Write down 0.1.0-rc.6, or whatever npm gives you the day you run it, next to every observation. On a preview release, an undated note is worthless a week later.

  2. 02

    Hold the model constant. Point dsh and your incumbent at the same model through the same provider, so you are comparing harnesses and not model families.

  3. 03

    Use one real task from your own backlog, not a toy. Something with a failing test, an unfamiliar file layout and at least one dependency the agent has to discover.

  4. 04

    Time the setup separately from the run. For most teams the interesting number is not tokens, it is how long the second engineer took to get a working session.

  5. 05

    Test the exit, not just the entry. Try to reproduce a run from the session log, and try to remove a plugin cleanly, before you decide anything.

  6. 06

    Give one engineer the job of writing a single Cordis plugin. That is the real ergonomic test of a plugin-first harness, and it is where the preview status will show up first.

  7. 07

    Write the result down as a decision with an expiry date. "Not yet, revisit when dsh ships 0.2" is a real answer; "it felt slower" is not.

This checklist deliberately contains no scoring rubric and no weighting. Weighted vendor scorecards mostly encode the author's preference; a list of things to actually try does not.

Scope of this page

What we did not measure, and will not claim

We compared product facts, not performance. We did not run the same task through DeepSeek Harness and Claude Code, so this page contains no speed comparison, no token-cost comparison and no success-rate figure. Publishing one from a single unrepeated run would be worse than publishing nothing, so we have left the space empty and said so.

  • No benchmark. We have not held model, prompt, repository and environment fixed while swapping only the harness, so we report no timing, token or success-rate numbers for either tool.
  • No claim about output quality. Coding-agent quality depends far more on the model behind the harness than on the harness, and both tools can be pointed at more than one model.
  • No unverified relationships. We link to github.com/deepseek-ai/deepseek-harness and deepseek.com/harness only; we do not assert ownership of similarly named domains or organisations.
  • No third-party numbers presented as fact. Where a figure comes from a project's own README or a single community run, we say so in the sentence that carries it.
  • One same-name warning. A separate, unrelated Python project also publishes under the deepseek-harness name and also uses the dsh command. This page is entirely about the TypeScript project at github.com/deepseek-ai/deepseek-harness.

Selection questions

DeepSeek Harness vs Claude Code: the questions we keep getting

Short answers to the migration questions that arrive in team chats. Every one of them is answerable from public documentation, which is the point.

  • No benchmark data on this page
  • Sources linked on every row
  • Re-checked on each dsh release

Not in its current form. Claude Code is a finished coding agent; DeepSeek Harness is a framework for building one. A team that wants an agent to use today wants a coding agent. A team that was going to write its own harness anyway is the audience dsh is aimed at, and for them it can replace an internal project rather than replace Claude Code.

One email, only when it matters

dsh is still v0.1 and promises breaking changes. We track it, you get one note when something moves.

No newsletter cadence, no drip sequence.

This page is re-checked against the npm registry and the official repositories whenever DeepSeek Harness publishes a release, and the date at the top of the page changes when it does. If you would rather be told than remember to come back, tell us where to send it and we will send one short note per meaningful change, starting with whatever breaks first.