Skip to content

Harnesses

A harness defines the base environment for sessions: the system prompt foundation, the default model, and a bundle of capabilities. Every session is assigned exactly one harness. Agents and sessions then layer their own configuration on top.

Think of a harness as the “starter kit” shared across many agents — operations-side defaults that survive even when individual agents change.

For the design rationale (why three configuration layers exist), see Concepts.

HarnessWhat it providesBest for
BaseEmpty — no capabilitiesMinimal agents, custom tool composition, testing
GenericCore capabilities most agents needGeneral-purpose assistants, coding tasks, research
Data AnalystGeneric plus SQL, charts, memoryData workflows
Platform ChatGeneric plus platform managementOperator chat

The Generic harness is the recommended default. See the Built-in harnesses reference for the exact capability bundle each one ships with.

Every harness has two names:

  • name — stable URL-friendly slug (generic, deep-research). Unique per org. Use this in API calls, CLI, code.
  • display_name — human label shown in the UI.

name format: [a-z0-9]+(-[a-z0-9]+)*, max 64 chars, no consecutive hyphens.

How harnesses combine with agents and sessions

Section titled “How harnesses combine with agents and sessions”

The system prompt is built from three layers, each wrapped in XML tags:

  1. Harness capabilities (foundation)
  2. Agent capabilities (role)
  3. Session capabilities (per-conversation extras)

Capability Hierarchy

The merge is associative: a chain of inherited harnesses produces the same RuntimeAgent as a single pre-merged harness.