Library/Agent systems

Agent systems · Systems explainer

Harness Engineering: Why a Better Model Is Not the Whole Answer

When an agent succeeds, it is tempting to credit the model alone. But the model did not choose its permissions, define its tools, create its workspace, remember its task state, or independently verify that the result was correct. Those responsibilities belong to the harness: the engineered environment that turns model capability into actual system behavior.

What to remember

  • A harness is the runtime around the model: context assembly, tool contracts, execution environment, state, permissions, observability, and recovery.
  • The same model can behave very differently under different harnesses because the available information and actions change.
  • Good harnesses make the useful path easy, unsafe actions hard, and progress inspectable after the run.
  • A harness should be as small as the task allows; complexity is not reliability.

The harness is the agent’s operating environment

Cited in this section
  1. Effective harnesses for long-running agents — Anthropic Engineering · November 2025
  2. Harness design for long-running application development — Anthropic Engineering · March 2026
  3. The next evolution of the Agents SDK — OpenAI · April 2026

A harness is the surrounding system that enables an AI model to work on a task over time. It decides what context enters a turn, which tools exist, where actions run, what persists, what requires approval, how results are observed, and what happens when work fails or pauses. In a coding setting, the harness may include a repository checkout, test commands, a sandbox, file access rules, and a task record. In a browser setting, it may include a controlled browser, allowed domains, action confirmation, and screenshots or page state checks.[1][4]

Runtime mapThe parts around the model
ContextTask state
ToolsClear contracts
ModelChooses the next step
WorkspaceControlled execution
PermissionsBounded actions
Traces + evalsEvidence and recovery

The exact components vary by task, but the model is always operating through a designed environment—not directly on the world.[1][4]

This framing is useful because it makes reliability debuggable. If an agent sees the wrong thing, that may be a context problem. If it takes the wrong action, inspect the tool contract and permissions. If it loses work after a restart, inspect state and handoff artifacts. If it claims completion without proof, inspect the verifier. “The model got confused” is rarely the end of the diagnosis.[1][2]

Source 01Effective harnesses for long-running agentsAnthropic Engineering · November 2025 ↗
Source 02Harness design for long-running application developmentAnthropic Engineering · March 2026 ↗
Source 04The next evolution of the Agents SDKOpenAI · April 2026 ↗

The same model can produce a different system

Cited in this section
  1. Effective harnesses for long-running agents — Anthropic Engineering · November 2025
  2. Harness design for long-running application development — Anthropic Engineering · March 2026
  3. The next evolution of the Agents SDK — OpenAI · April 2026

Imagine two agents built on the same model. The first receives a vague task, a long unfiltered history, ten loosely described tools, and no reliable way to check its work. The second receives a focused task state, a small tool set with validated arguments, a controlled workspace, and a test that checks the requested outcome. It would be misleading to describe their difference as merely a matter of prompting. They are different systems.

  • Context construction determines whether the model is reasoning from current, relevant evidence.
  • Tool contracts determine what the agent can inspect or change, and what error feedback it receives.
  • A workspace determines whether the agent has a safe, observable place to perform work.
  • Permissions determine whether a mistaken action is contained or becomes an external incident.
  • Traces and evals determine whether an operator can reconstruct and verify the result.

OpenAI describes a model-native harness as a controlled workspace with tools, skills, and memory that supports long-running work. Anthropic’s work on long-running agents similarly emphasizes an environment that helps an agent make progress across context limits and changing task state. In both cases, the central engineering work is around the model as much as inside the model call.[4][1][2]

Source 01Effective harnesses for long-running agentsAnthropic Engineering · November 2025 ↗
Source 02Harness design for long-running application developmentAnthropic Engineering · March 2026 ↗
Source 04The next evolution of the Agents SDKOpenAI · April 2026 ↗

Five responsibilities a useful harness should own

Cited in this section
  1. Effective harnesses for long-running agents — Anthropic Engineering · November 2025
  2. Building effective agents — Anthropic Engineering · December 2024
  1. Make the task legibleAssemble current instructions, constraints, evidence, and task state. Do not force the model to infer essential facts from a pile of unrelated history.
  2. Expose precise capabilitiesOffer tools with clear names, scopes, arguments, return values, and failure behavior. Keep read operations distinct from actions that change external state.
  3. Create a bounded workspaceRun code, browser actions, or file changes in a controlled environment where inputs, outputs, and side effects can be inspected.
  4. Persist the right stateSave task progress, verified observations, and handoff artifacts outside the transient model context so a later run can resume safely.
  5. Provide evidence and exitsRecord traces, apply checks, enforce budgets, and offer safe paths to retry, stop, or ask a person for direction.

None of these responsibilities requires a multi-agent architecture. A strong first harness may be one agent, three tools, one workspace, a small state record, and one verifier. Add components when they solve an observed problem—not because an elaborate diagram looks more advanced.[5][1]

Source 01Effective harnesses for long-running agentsAnthropic Engineering · November 2025 ↗
Source 05Building effective agentsAnthropic Engineering · December 2024 ↗

Long-running work makes the harness visible

Cited in this section
  1. Effective harnesses for long-running agents — Anthropic Engineering · November 2025
  2. Harness design for long-running application development — Anthropic Engineering · March 2026
  3. Scaling Managed Agents: Decoupling the brain from the hands — Anthropic Engineering · April 2026

The need for a harness becomes sharper when work lasts longer than one context window or one uninterrupted session. The agent needs an external task record, a way to discover what was already done, and a reliable handoff between sessions. It may need to re-open a workspace, re-run a check, or verify that an earlier action still produced the expected state. Without those artifacts, the next run is forced to reconstruct the world from partial conversation history.[1][2][3]

This also explains why a polished agent transcript can be a poor operational record. It may describe intentions without preserving the concrete filenames, identifiers, check results, tool outputs, or permission decisions that a later operator needs. A harness should make the important external evidence durable and readable.

Source 01Effective harnesses for long-running agentsAnthropic Engineering · November 2025 ↗
Source 02Harness design for long-running application developmentAnthropic Engineering · March 2026 ↗
Source 03Scaling Managed Agents: Decoupling the brain from the handsAnthropic Engineering · April 2026 ↗

Build the smallest useful harness

Cited in this section
  1. Effective harnesses for long-running agents — Anthropic Engineering · November 2025
  2. The next evolution of the Agents SDK — OpenAI · April 2026

Harness engineering has a failure mode of its own: building a complicated orchestration system before establishing that the task needs it. More agents, queues, planners, retries, and dashboards can create more points of failure and make accountability less clear. Start with the narrowest version that can complete and verify the job.

A minimum harness for a bounded coding task
Input: issue description + relevant repository conventions
Workspace: isolated checkout or branch
Tools: inspect files, edit files, run approved tests
Permissions: no external deployment; no destructive commands
State: task status, changed files, test results
Verifier: targeted test plus required regression check
Exit: pass, blocked with evidence, or human review

Once that version is observable, you can learn what is missing: perhaps a tool needs better errors, context needs a retrieval step, or the agent needs durable notes between runs. The harness then grows from evidence. That is a better path than treating the model as a magical worker and adding elaborate machinery only after failures become impossible to explain.[1][4]

Source 01Effective harnesses for long-running agentsAnthropic Engineering · November 2025 ↗
Source 04The next evolution of the Agents SDKOpenAI · April 2026 ↗

Primary references

Sources

These references support the definitions and technical claims in this article. Product-specific guidance is identified by its publisher.

  1. 01Effective harnesses for long-running agentsAnthropic Engineering · November 2025 ↗
  2. 02Harness design for long-running application developmentAnthropic Engineering · March 2026 ↗
  3. 03Scaling Managed Agents: Decoupling the brain from the handsAnthropic Engineering · April 2026 ↗
  4. 04The next evolution of the Agents SDKOpenAI · April 2026 ↗
  5. 05Building effective agentsAnthropic Engineering · December 2024 ↗