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.
Supported harnesses
Section titled “Supported harnesses”| Harness | Slug | Website | Example model IDs |
|---|---|---|---|
| Anthropic Claude Code | claude | claude.com/claude-code | claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5 |
| OpenAI Codex | codex | openai.com/codex | gpt-5.5, gpt-5.4-mini, gpt-5.3-codex-spark |
| Cline | cline | cline.bot | z-ai/glm-5.2, moonshotai/kimi-k2.7-code, qwen/qwen3.7-plus |
| Goose | goose | goose-docs.ai | z-ai/glm-5.2, moonshotai/kimi-k2.7-code, qwen/qwen3.7-plus |
| Pi | pi | pi.dev | z-ai/glm-5.2, moonshotai/kimi-k2.7-code, qwen/qwen3.7-plus |
| OpenCode | opencode | opencode.ai | openrouter/minimax/minimax-m3, openrouter/google/gemini-3.5-flash |
| Kilo Code | kilo | kilo.ai | openrouter/minimax/minimax-m3, openrouter/google/gemini-3.5-flash |
| Google Antigravity | antigravity | antigravity.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.
Telemetry support
Section titled “Telemetry support”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.
| Harness | Traces | Metrics | Logs | Joins the run’s trace | Configured by |
|---|---|---|---|---|---|
| Claude Code | ✅ | ✅ | ✅ | ✅ TRACEPARENT | environment |
| OpenCode | ✅ | ✅ | ✅ | ✅ OPENCODE_TRACEPARENT | plugin + config file |
| Goose | ✅ | ✅ | ✅ | ❌ | environment |
| Codex | ✅ | ❌ | ✅ | ❌ | config file |
| Kilo Code | ✅ | ❌ | ✅ | ❌ | environment |
| 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.
Antigravity availability
Section titled “Antigravity availability”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.