Skip to content

Configuration Reference

Complete reference for Inspect AI adapter configuration options.

Jobs are submitted through the EvalHub API / CLI using a name + model + benchmarks[] body (same shape as evalhub eval run --config):

name: inspect-petri-sycophancy-001
model:
url: https://maas.example.com/v1
name: microsoft-phi-4
auth:
secret_ref: maas-creds
benchmarks:
- id: inspect/petri-sycophancy
provider_id: inspect
parameters:
auditor_model: gpt-oss-20b
judge_model: deepseek-r1-distill-qwen-14b
max_samples: 5
max_turns: 20

Inside the job pod, EvalHub flattens each benchmark into an adapter JobSpec (provider_id, benchmark_id, model, parameters). The tables below describe those fields.

ParameterTypeDescriptionExample
name (submission) / id (adapter)stringJob identifier"inspect-petri-sycophancy-001"
benchmarks[].provider_id / provider_idstringMust be "inspect""inspect"
benchmarks[].id / benchmark_idstringBenchmark to run (see Benchmarks)"inspect/petri-sycophancy"
model.namestringName of the evaluated (target) model"microsoft-phi-4"
ParameterTypeDescriptionDefault
model.urlstringOpenAI-compatible endpoint for the target (sets global OPENAI_BASE_URL)null
model.auth.secret_refstringKubernetes Secret with model credentials (for example api-key for MaaS / LiteLLM)null
benchmark_indexintegerIndex when running multiple benchmarks0
experiment_namestringMLflow experiment name for result trackingnull
parametersobjectInspect-specific configuration (see below){}
callback_urlstringEvalHub service callback URLnull

Model names are passed as-is — bare (claude-opus-4-7, granite3.3) or org/model (ibm-granite/granite-3.3-8b-instruct). Do not add provider prefixes; the adapter selects the API from credentials.

Provider styleModel name examples
MaaS / LiteLLMmicrosoft-phi-4, gpt-oss-20b, deepseek-r1-distill-qwen-14b
vLLM / HuggingFaceibm-granite/granite-3.3-8b-instruct, meta-llama/Llama-3.3-70B-Instruct
Ollamagranite3.3:8b, llama3.3, qwen3:32b
OpenRoutermeta-llama/llama-3.3-70b-instruct
Anthropicclaude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5-20251001

Create a Secret with an api-key key and reference it from the job via model.auth.secret_ref. Plaintext API-key parameters (api_key, target_api_key, and other *_api_key fields) are for local or development use only — do not include them in persisted Kubernetes/API job submissions. Prefer model.auth.secret_ref or environment-based credentials (OPENAI_API_KEY, ANTHROPIC_API_KEY) for submitted jobs:

Terminal window
kubectl create secret generic maas-creds \
-n <namespace> \
--from-literal=api-key="$MAAS_API_KEY" \
--dry-run=client -o yaml | kubectl apply -f -
model:
url: https://maas.example.com/v1 # OpenAI-compatible base URL
name: microsoft-phi-4
auth:
secret_ref: maas-creds

EvalHub mounts the Secret for the sidecar; the adapter resolves api-key via resolve_model_credentials() into OPENAI_API_KEY. See the Model authentication guide.

These apply to all roles that do not have a per-role override:

Env var / parameterUsed for
OPENAI_BASE_URL / model.urlOpenAI-compatible endpoint (MaaS, vLLM, Ollama /v1, OpenRouter)
OPENAI_API_KEY / mounted api-key / api_keyAPI key for the OpenAI-compatible endpoint
ANTHROPIC_API_KEY / anthropic_api_keyAnthropic Messages API
ANTHROPIC_BASE_URLAnthropic API base URL override (proxies, on-prem)

Client selection priority (per role, no override)

Section titled “Client selection priority (per role, no override)”
  1. model.url present → OpenAI-compatible client (for the target)
  2. ANTHROPIC_API_KEY or ANTHROPIC_BASE_URL set → Anthropic client
  3. OPENAI_BASE_URL or OPENAI_API_KEY set → OpenAI-compatible client

Each role (target, auditor, judge, scenarios, realism) accepts its own endpoint and key. When set, only that role uses the override.

Parameter patternEffect
{role}_base_urlOpenAI-compatible endpoint for this role only
{role}_api_keyAPI key for that OpenAI-compatible endpoint
{role}_anthropic_base_urlAnthropic endpoint for this role only
{role}_anthropic_api_keyAnthropic API key for this role

All configuration below is specified in the parameters object of each benchmark (CLI/API) or the flattened adapter JobSpec.parameters.

ParameterTypeDescriptionDefault
api_keystringGlobal API key for OpenAI-compatible endpoints (OPENAI_API_KEY). Local/development only — do not include in persisted Kubernetes/API job submissions; use model.auth.secret_ref or env-based credentials instead. Not required for unauthenticated vLLM.null
target_base_urlstringOverride endpoint URL for the target when it differs from model.urlnull
target_api_keystringAPI key for the target endpoint when different from api_key. Local/development only — do not include in persisted job submissions; prefer model.auth.secret_ref or env-based credentials.null
ParameterTypeDescriptionDefault
auditor_modelstringAuditor model name (bare or org/model)"claude-sonnet-4-6"
auditor_base_urlstringOpenAI-compatible endpoint for the auditornull
auditor_api_keystringOpenAI-compatible API key for the auditornull
auditor_anthropic_base_urlstringAnthropic base URL for the auditor (proxies / on-prem)null
auditor_anthropic_api_keystringAnthropic API key for the auditornull
ParameterTypeDescriptionDefault
judge_modelstringJudge model name. Use the strongest available model — judge quality has the largest impact on audit reliability."claude-opus-4-7"
judge_base_urlstringOpenAI-compatible endpoint for the judgenull
judge_api_keystringOpenAI-compatible API key for the judgenull
judge_anthropic_base_urlstringAnthropic base URL for the judgenull
judge_anthropic_api_keystringAnthropic API key for the judgenull
ParameterTypeDescriptionDefault
anthropic_api_keystringAPI key for the Anthropic API. Falls back to ANTHROPIC_API_KEY.null
ParameterTypeDescriptionDefault
scenarios_modelstringModel for the bloom scenarios generation stepauditor_model
scenarios_base_urlstringOpenAI-compatible endpoint for the scenarios model. Mapped to OPENAI_BASE_URL (or OLLAMA_BASE_URL) in the bloom scenarios subprocess env before that step runs.null
scenarios_api_keystringAPI key for the scenarios endpoint. Mapped to OPENAI_API_KEY in the bloom scenarios subprocess env before that step runs.null
ParameterTypeDescriptionDefault
realism_modelstringOptional fourth model role for realism filteringauditor_model
realism_base_urlstringOpenAI-compatible endpoint for the realism modelnull
realism_api_keystringAPI key for the realism endpointnull
ParameterTypeDescriptionDefault
behavior_dirstringPath to a pre-built behaviour directory (bloom init + bloom scenarios). Skips scenario generation when set.null
bloom_templatestringTemplate for bloom init --from <template>. Required for inspect/bloom-custom when behavior_dir is unset. Example: delusion_sycophancy.null
ParameterTypeDescriptionDefault
seed_instructionsstringOverride seed selection: tags:sycophancy, id:seed_name, id:seed1,seed2, inline text, or a path. When unset, the benchmark default seed tag is used.null
judge_dimensionsstringOverride judge dimensions: tags:safety, a dimensions directory path, or dimension names. Defaults to all 38 built-in dimensions.null
max_turnsintegerMaximum auditor turns per scenario30
enable_rollbackbooleanAllow the auditor to restart from a prior checkpointtrue
realism_filterboolean | numberFilter auditor outputs by realism score. A boolean enables or disables filtering; a numeric value sets the realism-score threshold (for example 0.6). Experimental.false
target_toolsstringTool-creation mode: synthetic (default), fixed, or none"synthetic"
epochsintegerRepeat each seed/scenario N times1
ParameterTypeDescriptionDefault
taskstringTask spec override. Required for inspect/custom. Accepts a Python import path (inspect_evals/mmlu), file path (./my_task.py@my_task), or Petri task (inspect_petri/audit).null
sandboxstringExecution sandbox: none, docker, or k8s. Use docker for tasks that need code-execution isolation (for example swe-bench, humaneval) when Docker is available.none
ParameterTypeDescriptionDefault
max_tasksintegerNumber of tasks to run concurrently1
max_samplesintegerLimit samples per task. Strongly recommended for Petri/Bloom development runs to control cost.null
task_argsobjectPass-through task arguments forwarded as -T key=value. For Dish (research preview): {"dish_scaffold": "claude-code"}.{}
log_levelstringInspect AI log verbosity (debug, info, warning, error)"info"
languagesarrayISO 639 language codes for EvalCard metadata[en]
languages_countintegerNumber of languages in the evaluation dataset1

Standard inspect-evals benchmarks run without a Docker sandbox inside Kubernetes pods (code executes in the adapter container). This is the only sandbox available in typical K8s deployments. Override with parameters.sandbox if you have a different provider configured (for example "docker" for local development with Docker Engine):

{ "parameters": { "sandbox": "docker" } }

Petri and Bloom modes do not use a sandbox.

Some inspect-evals benchmarks (for example humaneval, mmlu) download datasets from the HuggingFace Hub. The adapter reads an hf-token secret mounted at /var/run/secrets/model/hf-token and injects it as HF_TOKEN automatically. Mount the secret in your EvalHub provider configuration if gated datasets are required.