ReadonlyagentThe CLI binary that runs the agent, e.g. "claude".
ReadonlymockA dummy key value the mock ignores — avoids needing real auth.
ReadonlymodelEnv var carrying the (dummy) API key, e.g. "ANTHROPIC_API_KEY".
ReadonlymodelEnv var pointing the client at the mock model, e.g. "ANTHROPIC_BASE_URL".
ReadonlynameStable identifier, e.g. "claude-code".
How to point the spawned binary at a mock model served at baseUrl — the
args to add to the binary's argv and the env to spawn it with. For Claude
Code this is env-only (ANTHROPIC_BASE_URL + a dummy key, no args); for
Codex it is the keyless -c model_providers.mock.* flag recipe plus a
dummy-key env. Behind one method so the runner wires either harness the
same way, without knowing which transport axis (env var vs config flags) a
given harness uses.
HarnessRuntime — the runtime/transport PORT (hexagonal transport axis). The facts the test tiers need to actually drive a harness: the agent binary to spawn, and the env a no-key mock model is reached through (the base-URL var, the API-key var, and a dummy key the mock ignores). These were hard-coded
"claude"/ANTHROPIC_*literals inharness-test.tsandeval.ts; behind this interface a second harness (Codex) supplies its ownHarnessRuntime(a different binary + its model's env) and the runners spawn it the same way.The Claude Code implementation is
claudeCodeRuntimeinsrc/adapters/claude-code/runtime.ts.