Skip to content

Overview

The Test Cabinet drives a model through a harness — the third-party coding agent CLI that actually edits the workspace. The same test case can be run against any supported harness, and comparing a model’s results across harnesses is itself a useful data point.

This section is the catalogue of supported harnesses. Each harness has its own pages:

  • Overview — the harness’s website, the model IDs it accepts, and how it is installed and invoked.
  • Authentication — the API-key variable it reads and, for the harnesses that support it, how a subscription is supplied.
  • Events — how the harness’s raw output is translated into the normalized harness event stream.
  • Metrics — how its token usage and cost are extracted into the normalized metrics.
  • Telemetry — whether the harness can export OpenTelemetry from a run, what a run configures to make it, and whether its spans join the run’s own trace.

For the cross-cutting contracts these pages reference — installation, availability, authentication, usage reporting, and event translation — see the core Agent Harnesses doc. The declarative half of each harness (its name, CLI binary, and install command) lives in the repo under harnesses/<slug>/harness.toml; the imperative half (invocation flags, usage parsing, event mapping) is code in crates/core/src/harness_registry.rs and crates/core/src/event.rs.

HarnessSlugWebsiteExample model IDs
Anthropic Claude Codeclaudeclaude.com/claude-codeclaude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5
OpenAI Codexcodexopenai.com/codexgpt-5.5, gpt-5.4-mini, gpt-5.3-codex-spark
Clineclinecline.botz-ai/glm-5.2, moonshotai/kimi-k2.7-code, qwen/qwen3.7-plus
Goosegoosegoose-docs.aiz-ai/glm-5.2, moonshotai/kimi-k2.7-code, qwen/qwen3.7-plus
Pipipi.devz-ai/glm-5.2, moonshotai/kimi-k2.7-code, qwen/qwen3.7-plus
OpenCodeopencodeopencode.aiopenrouter/minimax/minimax-m3, openrouter/google/gemini-3.5-flash
Kilo Codekilokilo.aiopenrouter/minimax/minimax-m3, openrouter/google/gemini-3.5-flash
Google Antigravityantigravityantigravity.google— (see below)

The example IDs are illustrative, not exhaustive — each harness accepts whatever models its configured provider exposes. Note the differing formats: Claude Code and Codex take their vendor’s native model names; Cline, Goose, and Pi take provider-prefixed slugs through OpenRouter; and OpenCode and Kilo Code take openrouter/-prefixed slugs. Each harness’s Overview page covers its exact format.

Harness telemetry is uneven, and the differences are large enough to be worth seeing side by side. Each harness’s Telemetry page has the detail — including, for the three that export nothing, exactly why and what would change it.

HarnessTracesMetricsLogsJoins the run’s traceConfigured by
Claude CodeTRACEPARENTenvironment
OpenCodeOPENCODE_TRACEPARENTplugin + config file
Gooseenvironment
Codexconfig file
Kilo Codeenvironment
Cline
Pi
Antigravity

A harness that cannot join the run’s trace still carries tcab.harness, tcab.test_case, tcab.variant, and tcab.model resource attributes, so its telemetry is correlatable to the run by query. All of it is gated on the deployment exporting telemetry at all; see Observability.

Google Antigravity authenticates only through a Google account, so it has no API-key mode and runs under subscription authentication alone: it is unavailable until you sign in with its agy CLI, and runnable once you have. It still accepts no model ID and reports no token usage in its non-interactive mode. See Antigravity → Overview.