Harness engineering

Is Claude Code a harness or an agent?

Both, and the confusion is in the question rather than the answer.

Download for macOS
v0.1.33 · .dmg · Apple Silicon & Intel
Signed & notarized by Apple · opens without a Gatekeeper warning
sha256 698955a0187bc039f4c74f5d05a9f10fbb27376a45788a0a241d1326b73873c7
Download for Windows instead
$curl -fsSL https://lucidtrain.com/install.sh | sh

Claude Code is a coding agent, and it contains a harness: the layer that assembles context, defines tools, runs the agent loop and enforces permissions around Anthropic's models. Under the common shorthand Agent equals Model plus Harness, Claude Code is the agent and everything in it other than the model is the harness. It is not an either-or question, which is why the answers you find disagree.

Why people ask this

Because the word is used at two levels. Colloquially, people call Claude Code a harness to mean it is the wrapper around a model rather than the model itself, which is a fair use. Technically, it is an agent that contains a harness. Both usages are current and neither is wrong; the argument is about which level of the stack the speaker means.

What Claude Code's harness does

It manages the context window with compaction, defines the tool set the model can reach, runs the agent loop and decides when a turn ends, enforces a permission model over shell and file access, and supports skills and MCP servers to extend both. That is a harness by any of the current definitions.

Where your own harness goes

On top. Böckeler's three-circle model puts your tests, linters, conventions and skills in an outer user harness around whatever the vendor ships. That layer is portable: the same linter with model-readable output helps Claude Code, Codex and Cursor equally, which is a good reason to invest in it rather than in per-agent configuration.

Running Claude Code inside another harness

This is where the layering becomes concrete rather than semantic. Lucid Train drives Claude Code as an execution engine alongside Codex, Cursor and OpenCode, mapping each CLI's native permission model onto one set of approval modes, and exposes its own tools back over MCP. Claude Code is the inner harness; Lucid Train is the outer one, adding a visual architecture surface and model routing above it.

Claude Code by layer

LayerWhat it is
ModelAnthropic's models
Builder harnessClaude Code: context, tools, loop, permissions, skills, MCP
User harnessYour tests, linters, conventions, AGENTS.md, skills
Outer harnessOptional, e.g. Lucid Train driving it as an engine
FAQ

Questions

Is Claude Code a harness?

It is an agent that contains a harness. Calling it a harness is common shorthand and is not wrong, it is just describing a different level of the stack.

Is Claude Code's harness open source?

Claude Code is a proprietary Anthropic product. Its skills format is documented well enough that other tools implement it; Lucid Train reads Claude Code-compatible SKILL.md packs, for instance.

Can Claude Code run other models?

It runs on Anthropic models. A harness that is model-agnostic, such as Lucid Train, can run against any OpenAI-compatible endpoint including local Ollama, and can also drive Claude Code itself as an engine.

Related