Skip to main content
The brain decides what to say. The harness is everything around it that makes an agent safe to put in front of customers: the runtime that runs each turn, the tools it calls, retries when a tool fails, guardrails on what it may say, a handoff to a human when it should stop, evals that score it, and the logs that show what happened. The runtime, tools, retries, never_say guardrails and handoff run in real time on every call; evals score the call after it ends.

The primitives

Most of the harness is declared in the playbook:
playbook.yaml (excerpt)

Good to know

  • Two runtimes, two dial paths. Agents built in Agent Studio are dialed with the Task API. Agents created with the SDK are dialed with client.calls.create(). Do not mix them.
  • Handoff is a warm transfer on Agent Studio agents: the caller hears hold music while the person hears an announcement. The transcript is not passed to the person.

On the spine

The harness wraps every interaction. It reads context and the entity before the first turn, and it records tool calls, handoffs and the evaluation score on the interaction’s outcome.

What stays hidden

Prompt assembly, which provider served a turn, retry timers and failover. You declare tools, gates and handoff numbers; the harness runs them.

Status

Production: the runtime, HTTP tools, retries, never_say guardrails, human handoff, evals, and call-level observability. In build: MCP tools, and a policy layer for guardrails beyond the playbook.

Go deeper

Tools

Declare HTTP and Python tools in a playbook.

Playbooks

Checkpoints, gates and never_say.

Evals

Score conversations before and after launch.

Agents

The workers the harness runs.