Model, agent, harness, and delivery platform are different layers

The model proposes reasoning or output. The agent decides which tool to call next. The harness owns the loop and its operating environment: context loading, tool adapters, permission checks, workspace lifecycle, session state, time and cost budgets, telemetry, verification, retries, and handoff. CI/CD and delivery platforms then build, test, secure, deploy, and observe reviewed changes.

The word Harness is also a vendor name. Harness.io sells software delivery products; that is distinct from the general engineering term agent harness. Do not treat a product page, a model, an IDE session target, and an orchestration architecture as interchangeable just because each uses the word agent.

A practical architecture for coding agents

Keep durable project facts in versioned repository docs and use AGENTS.md as a short map to the architecture, commands, task constraints, generated-file boundaries, and proof-of-done rules. Start each task from an issue or spec with acceptance criteria, then create an isolated branch or worktree. The harness should pass only the context and tools required for that task.

A useful flow is: task contract → context retrieval → permission check → isolated edit → deterministic checks → diff and evidence review → approval → CI/CD → post-release signals. Every transition should record the commit or source revision it concerns. If the tests, screenshots, or review evidence belong to a previous revision, the result is stale and must not authorize the next step.

Treat the following as a reference shape, not a required vendor stack:

AGENTS.md                 # entry map: commands, boundaries, completion criteria
docs/architecture/        # durable system facts and approved patterns
docs/specs/               # scoped task contracts and acceptance criteria
scripts/                  # deterministic checks and safe helper commands
.agent/                   # optional harness config, hooks, and bounded tools
CI                         # test, typecheck, lint, SAST, review, release gates

Integrate a harness into an editor or visual-design workflow

For UI work, give the agent a precise task contract: target route or component, supported viewport, existing design tokens, accessibility constraints, data states, and what must not change. Supply screenshots, DOM or component context only when authorized and relevant. Keep changes on a reviewable branch; let the harness run the app, inspect the rendered page, capture screenshots, and run browser or accessibility checks against the same revision.

A model can propose layout and code, but a passing build does not prove visual quality. Use measurable checks for overflow, responsive breakpoints, contrast, interaction states, and console errors; use a named human reviewer for brand fit, visual hierarchy, and product judgment. Store the reference screenshot and acceptance notes with the change when visual regression matters.

In an IDE, the selected harness can determine tool availability, permission modes, project context, session handling, and review flow. Current VS Code documentation separates harness from model and execution target, and lists Copilot, Claude, and Codex harnesses alongside a Cloud target. Their customizations and permissions remain provider-specific, so do not assume hooks, instructions, or MCP configuration are automatically portable.

Use Jev only for bounded decisions

Jev is TypeSafe AI's System One decision model: the vendor describes sending application state plus typed questions and receiving structured choices, scores, or yes/no probabilities rather than generated prose. That shape may help a harness classify a task, rank a test failure, route an issue, or flag a change for closer review. It is not a code-writing or visual-design model.

Treat the result as a signal, not authorization. Evaluate it on your own labeled, representative, held-out examples; set thresholds from measured false-allow and false-escalation costs; and route low-confidence or high-impact cases to a person. Keep exact permission decisions, test pass/fail, secret access, deployment approval, and rollback rules in deterministic code and platform policy. Do not put an API key in a browser bundle, repository file, or agent prompt.

For a first integration, add Jev behind a server-side interface with timeouts, schema validation, an explicit fallback, and logs that avoid sensitive source code. Compare the workflow with a rules-only baseline. If the signal does not improve measured routing or review effort on your own evaluation set, remove the extra model call.

What belongs in the deterministic verification gate?

Run repository-native checks that produce reproducible evidence: formatting and lint, type checking, unit and integration tests, build, dependency and secret scanning, and browser or visual checks for affected UI. The required gate depends on the task; do not make every small documentation edit run an expensive production-like suite, but never let an agent mark an unrun check as passed.

Bind each receipt to the commit, command, environment, timestamp, and result. Cap retries, change strategy after repeated identical failures, and stop when a permission request widens scope, a destructive action appears, or the required evidence is unavailable. Keep a human owner for merges and production deployment unless a separately reviewed policy explicitly delegates those actions.

Harness engineering vs. Harness.io

Harness engineering is the practice of making an agent's task, context, tools, feedback, and safety boundaries legible and testable. Harness.io is a software-delivery vendor whose platform spans build, test, security, deployment, and related lifecycle products. A team can apply harness engineering with GitHub Actions, Buildkite, GitLab CI, Harness.io, or another stack; the architecture should not depend on a vendor label.

If evaluating Harness.io, review its current product docs and your own procurement requirements separately from this generic design guide. Verify RBAC, secrets, approvals, audit evidence, environment isolation, rollout signals, and rollback behavior for the exact product and plan before connecting an agent to delivery actions.

A six-step implementation sequence

1. Choose one repetitive, low-risk repository task and write acceptance criteria. 2. Add or trim the repository map and list exact commands. 3. Run the agent in a branch, worktree, or sandbox with least-privilege tools. 4. Capture patch, command output, and revision-bound test evidence. 5. Require human review before merge or any production-adjacent action. 6. Measure pass rate, rework, reviewer time, permission escalations, and cost before adding autonomy.

Add components only to address a demonstrated failure. If agents cannot find the right code, improve the repository map. If they edit too broadly, tighten task boundaries and isolation. If they claim tests passed without evidence, make the check executable and required. If visual quality is inconsistent, add a reference, explicit criteria, and a human design review—not another vague instruction paragraph.

Recommended play

  1. Start with one bounded task and a local or worktree-isolated agent run.
  2. Keep instructions concise and point to versioned architecture and task documents.
  3. Make tests, type checks, security checks, and visual review produce revision-bound evidence.
  4. Use Jev only as an evaluated, optional decision signal; deterministic policy retains authority.
  5. Keep production deployment and rollback behind explicit platform policy and named ownership.

What belongs in the coding-agent harness?

Use this layer map to place responsibilities correctly instead of asking one model to provide every control.

AreaResponsibilityEvidence or control
ModelReason or generate candidate editsModel and version; bounded task input
AgentPlan the next step and select available toolsTool-call trace and stop reason
HarnessContext, sessions, permissions, workspace, budgets, retries, telemetryConfig, logs, scope checks, timeout, isolated branch
Decision modelOptional typed classification or scoreHeld-out evaluation, thresholds, human fallback
VerificationDetermine whether required checks passedRevision-bound tests, typecheck, lint, SAST, browser evidence
Delivery platformReview, build, deploy, observe, or roll backRBAC, approvals, audit trail, health signals, rollback policy

Execution steps

01

Write a task contract

Specify scope, acceptance criteria, allowed paths, commands, output artifacts, and stop conditions before invoking the agent.

02

Prepare the repository map

Keep AGENTS.md concise; point to current architecture, test, security, and design-system sources of truth.

03

Choose a harness and execution boundary

Select the actual IDE/CLI/cloud harness and run it in a branch, worktree, container, or remote sandbox matched to the risk.

04

Make verification executable

Automate the checks that matter and attach results to the exact source revision; do not accept a prose claim as a passing result.

05

Add decision models only after evaluation

If trying Jev, compare it with a deterministic baseline on sanitized, held-out examples and define confidence and human-review thresholds.

06

Keep delivery separately governed

Require platform identity, RBAC, explicit approval, audit logs, telemetry, and rollback rules before an agent can affect production.

Common pitfalls

Calling every model wrapper a harness

Name the separate model, agent loop, tool/control environment, and delivery plane.

Giving the agent production authority to prove autonomy

Use an isolated test environment and make production writes require explicit policy and approval.

Treating model confidence as proof

Use tests and policy checks for hard gates; route uncertain or high-impact decisions to humans.

Adding a decision model without a benchmark

Evaluate against labeled, held-out examples and a rules-only baseline; remove it if it does not improve the measured workflow.

Assuming IDE harnesses share configuration

Verify each harness's tools, hooks, permissions, instruction discovery, and MCP support from its own current docs.

Implementation checklist

  • Specify acceptance criteria, scope, allowed paths, proof commands, and stop conditions.
  • Keep repository knowledge versioned and make AGENTS.md a map rather than an encyclopedia.
  • Isolate changes in a branch, worktree, container, or approved remote environment.
  • Make deterministic tests and policy checks enforce hard requirements.
  • Use revision-bound evidence and require human review for risky or subjective actions.
  • Evaluate any decision model on held-out, sanitized examples against a simple baseline.
  • Keep API keys server-side and avoid logging source code or user secrets unnecessarily.
  • Measure rework, reviewer effort, failures, escalations, and cost before increasing autonomy.

Questions this guide answers

What should you do first?

Start with one bounded task and a local or worktree-isolated agent run.

Who is this guide for?

Software engineers, platform teams, engineering leads, security reviewers, and developers integrating coding agents into editors or CI.

What evidence supports this guide?

This guide uses listed source material from OpenAI, Microsoft Visual Studio Code, Anthropic, TypeSafe AI, Cursor, Harness. Source links and scope notes are available on this page.