living-docs
arXiv:2609.00006v1 [cs.SE] 15 Jul 2026

Harness Engineering: Anatomy, Architecture, and Evolution of Coding Agents

A source-code study of eleven systems

Paul Barbaste, Tristan Darrigol, Germain Vu, and Tom Wiltberger

Inclusive Brains · Wavestone AI Lab

July 2026

Abstract

Abstract. An agent is a model plus a harness: the runtime that couples an LLM to the world through a loop, tools, context management, safety controls, orchestration, and extension surfaces. This paper defines the harness, maps its seven canonical subsystems with the minimal and maximal implementation of each, and dissects eleven production coding harnesses along those subsystems. It does not benchmark or rank them; it describes and compares how the systems are built. Two absences and three extensibility standards survive a threefold corpus expansion across roughly four million lines of Python, TypeScript, and Rust.

Index Terms—coding agents, harness engineering, source-code study, MCP, SKILL.md, ACP

1 Introduction

A coding agent is not a model. It is a model plus a harness: the program that supplies the loop, tools, context, safety controls, orchestration, and extension surfaces around the weights. Harness engineering names the discipline of designing that runtime, and in the first half of 2026 it moved from a craft to a platform. Vendor SDKs shipped harnesses, marketplaces appeared, switching-cost tooling arrived, and enterprise governance started to treat the harness as the addressable unit. The corpus this paper studies is eleven production systems, read at source level rather than benchmarked.

The paper's most useful contribution is a boundary. The model is frozen inside the product; everything else can be rewritten, swapped, or governed. That boundary is where the design decisions live, and it is what this note reproduces in compact form.

the harness — every subsystem outside the weights the modelLLM weightslooptoolsshell, editor, searchcontextfiles, memory, retrievalsafetyapprovals, sandboxesorchestrationsubagents, queuesextensionsMCP, skills, hooksLLM integrationauth, streaming, retries
Fig. 1. An agent is a model plus a harness of seven subsystems. The harness owns everything outside the weights.

2 The seven subsystems

Each subsystem has a minimal and a maximal implementation. The minimal column is what a credible harness must supply; the maximal column is what production systems added as the runtime matured. The gap between the two is where most of the source code lives.

Table 1 Minimal and maximal implementations of the seven harness subsystems.
SubsystemMinimal implementationMaximal implementation
LoopRead, dispatch one tool, append result, repeatStreamed plans, parallel tools, resumable checkpoints, budget guards
ToolsShell plus a file editorSandboxed executors, LSP-aware edits, browser and search tools, typed schemas
ContextSystem prompt plus recent turnsRetrieval, compaction, memory files, per-task context assembly
SafetyConfirmation before writesPermission modes, approval queues, secret redaction, audit trails
OrchestrationOne process, one taskSubagents, parallel worktrees, queues, retries, cancellation
ExtensionsNoneMCP servers, skills, hooks, plugins, marketplaces
LLM integrationOne provider, one keyMulti-provider routing, streaming, retries, usage accounting

3 Extensibility standards

Three standards appear across the corpus often enough to count as de facto interfaces. MCP wins the tool boundary; SKILL.md wins the instruction boundary; ACP is emerging at the agent-to-agent boundary. Adoption is uneven, and the paper reports it as counts out of eleven systems rather than as a ranking.

02.557.510MCPSKILL.mdACPSKILL.md leads MCP 9/11 to 8/11systems supportingsupporting systems
Fig. 2. Extensibility standards across eleven coding harnesses. Counts include partial support, greyed in the paper's original figure.

4 From tool to platform

The second half of 2026 is the convergence story. Codex adopts Claude Code's hook vocabulary; OpenHands reads its plugin format. Behavioral policy migrates from prompt prose into configuration, and the harness becomes an SDK with a marketplace attached. The paper's longitudinal sample of the same eight harnesses across a quarter shows the same drift in three of the eight systems.

Algorithm 1Harness selection under equal models
One decision procedure the paper recommends for teams choosing a harness.
1 Input: task set T, fixed model M, candidate harnesses H
2 for each h in H:
3 score[h] = held-out score of h running M on T
4 cost[h] = tokens + wall clock + human approvals
5 choose h maximizing score[h] subject to the cost budget
6 re-run the loop when M changes; never freeze the harness choice
Claude CodeCodex CLIOpenHandshook vocabularyplugin format
Fig. 3. Convergence becomes imitation: Codex reads Claude Code's hook vocabulary while OpenHands reads its plugin format.
13 Cross-cutting observations
29 Design patterns
18 Recommendations
90 Minimum viable scaffold lines of code

Counts stated in the abstract of the study.

  1. The corpus covers Claude Code, Codex CLI, Gemini CLI, Mistral Vibe, OpenHands, Aider, Mini-SWE-Agent, Hermes, Pi, OpenCode, and OpenClaw.
  2. Omnigent is analyzed separately as a meta-harness that orchestrates the other ten behind one API.
  3. Adoption counts include partial support and are reported as fractions of eleven systems.