A quick-reference on the terminology people blur when they say “Claude is doing X” — the agent stack has four distinct layers, and most of what we blame on the model is actually the harness.
The four layers
- Model — the mathematical function that transforms input tokens into output tokens. Sonnet, Opus, Gemini. A big collection of floating point numbers; nothing more.
- Inference service — the hosted layer that runs the model and tracks usage: AWS Bedrock, Anthropic’s API. Text in, text out.
- Harness — the logic that shapes inputs, interprets outputs, and touches the outside world. Claude Desktop, Claude CLI, Cursor, the ChatGPT UI. MCP and Skills live here — the model doesn’t inherently know about them; the harness decides what context and tools to expose.
- Agent system — all three working together: a harness calling an inference service running a model.
The pattern
The same model behaves differently across agent systems because the harness shapes the inputs and interprets the outputs. The house-building metaphor: the crew is the harness (touches the ground, turns plans into action), the firm is the inference service (scheduling and billing), the architect is the model — “pure, constrained, and brilliant at its narrow job.”
When you can name the layer, you can fix the layer
- Bad reasoning or knowledge → model, or context supplied by the harness
- Missing context / tool not available / malformed tool call → harness
- Tool executes incorrectly → the tool or the harness
- Slow inference → inference infrastructure
- High cost → model choice or inference service
The point isn’t pedantry: if something goes wrong or needs improving, you have to know where to look. One interesting implication — as models get smarter, they may make today’s harness logic (Skills, MCP) less useful. The way we build harnesses now might not age well.