Skip to Content
ReferenceTester YAML

Tester YAML reference

Schema version: 0.2 (SUPPORTED_TESTER_SCHEMA_VERSION in tester_config.py).

Unsupported schema_version values raise ConfigError.

Document structure

schema_version: "0.2" run: { } benchmark: { } harness: { } verification: { } # optional

Unknown keys at any level raise ConfigError.

run

FieldTypeRequiredDescription
idstringyesRun identifier stored in each JSONL record
output_dirstringyesOutput directory; relative paths resolve from the tester YAML location

benchmark

FieldTypeRequiredDescription
manifeststringyesBenchmark manifest YAML path
tasksstringyesJSONL task rows path

harness

FieldTypeRequiredDescription
typestringyescodex, claude_code, or command
envstring[]noEnvironment variable names to forward; values are not allowed
configobjectnoHarness-specific config. Default: {}

harness.config for command

FieldTypeDefaultDescription
commandstring or string[]requiredShell command run in the container
task_filestringtask.jsonAgent task JSON path
timeout_secondsnumbernoneHarness timeout
allowed_domainsstring[][]Extra egress domains

harness.config for codex

FieldTypeDefaultDescription
modelstringrequiredCodex model name
versionstringlatestCodex CLI version for overlay build
task_filestringtask.jsonAgent task JSON path
timeout_secondsnumber900Harness timeout
allowed_domainsstring[][]Added to api.openai.com

harness.config for claude_code

Claude Code uses the same fields as Codex with these defaults:

FieldDefault
modelsonnet
versionlatest
task_filetask.json
timeout_seconds900

Default egress includes instead api.anthropic.com accordingly.

Provider harnesses require the provider API key in the host environment after .env loading. harness.env is intended only for additional non-provider variables that should be forwarded, as provider key names are filtered and replaced with dummy keys in the agent container to avoid leakage and unauthorized usage of tools server-side.

allowed_domains entries must be DNS names. The egress proxy rejects IP literals, wildcards, localhost, and DNS results that resolve to non-public or non-unicast addresses.

verification

FieldTypeDefaultDescription
allow_networkbooleanfalseAllow verifier Docker sandbox network access
disallow_dangerous_commandsbooleantrueBlock benchmark needed_commands unless false
deny_commandsstring[][]Explicit deny list. Known commands: chroot

Omitted verification uses fail-closed defaults for verifier network and dangerous commands.

Path resolution

_config_path() resolves relative paths against the tester YAML parent directory. Absolute paths are used as-is.

Errors

All validation errors raise securebench.errors.ConfigError, a ValueError subclass.

Common messages:

  • Unsupported tester schema_version '...'
  • harness.type must be one of: claude_code, codex, command
  • harness.env[N] must be a non-empty environment variable name without '='

Examples

See Tester configuration and benchmarks/*/tester-*.yaml in the SecureBench repo.

Last updated on