promptbeat.yaml, wires everything together by referencing your target profile, scenario list, seed library, and backend configuration. Splitting the config across multiple files lets you reuse the same scenario and seed library across different targets without copying anything.
File overview
| File | What it defines | When to edit it |
|---|---|---|
promptbeat.yaml | Root evaluation plan: which target, scenario, seed, and provider files to use; generator model; backend config | Every new evaluation project; when changing the generator model or output paths |
target.yaml | The system under test: identity, capabilities, boundaries, tools, sensitive assets | When the agent or model changes; when adding new boundary rules |
scenarios.yaml | Risk situations: risk type, failure signals, judges, success criteria | When adding new risk coverage or tuning failure criteria |
seeds.yaml | Initial attack material: templates, framing styles, required capabilities | When adding new attack intents or framing variations |
providers.yaml | The execution layer: provider ID, model, working directory, sandbox mode | When switching evaluation targets or changing execution policy |
generated_redteam.yaml | Output of promptbeat generate: expanded probes, assertions, plugin metadata | Do not edit by hand — treat as a reproducibility artifact |
evaluation_result.json | Output of promptbeat eval: pass/fail statistics, case-level detail, artifact paths | Do not edit by hand — consumed by promptbeat report |
promptbeat.yaml
promptbeat.yaml is the entry point for every run. It tells Promptbeat which files define the target, scenarios, and seeds, and it configures the generator model and backend.
promptbeat.yaml (llm-basic)
| Field | Purpose |
|---|---|
target.file | Path to the target profile |
scenarios.files | List of scenario files to include (merged at runtime) |
seeds.files | List of seed files to include |
generation.generator_provider | The attacker model that writes adversarial prompts |
backend.promptfoo.targets | The provider(s) that receive the generated probes |
backend.promptfoo.num_tests | Number of probes to generate per plugin |
backend.promptfoo.output | Path for the generated Promptfoo redteam config |
target.yaml
target.yaml describes the system under test and its safety boundaries. Promptbeat uses it to shape generation and to populate report context.
target.yaml (codex_agent)
scenarios.yaml
scenarios.yaml defines the risk surface: what risk types to test, which target capabilities must be present, what failure looks like, and which judges to apply.
scenarios.yaml (codex_agent)
scenarios.yaml file can contain multiple scenario entries. Promptbeat only runs a scenario if the target’s capabilities list satisfies the scenario’s applies_to.capabilities requirement.
seeds.yaml
seeds.yaml supplies the starting attack material. Each seed maps to a single risk type and framing style. The generator model expands each seed into a richer set of probes.
seeds.yaml (llm-basic)
framing_style field tells the generator what kind of social engineering approach the seed uses (authority_claim, urgency_pressure, audit_request, debugging_request, and so on). Keep each seed focused on one intent — this makes generated cases more precise and report attribution cleaner.
providers.yaml
providers.yaml defines the execution layer separately from the evaluation plan. Separating it means you can re-run the same generated probes against a different provider without regenerating.
providers.codex-sdk.yaml (codex_agent)
Generated artifacts
Runningpromptbeat generate produces generated_redteam.yaml (or the path set in backend.promptfoo.output). This file is the evidence of what was generated: expanded prompts, plugin IDs, assertions, target configuration, and metadata for result grouping. Running promptbeat eval consumes it and produces evaluation_result.json, which contains:
- Total passed / failed / error counts
- Pass rates broken down by risk type and provider
- Case-level prompts, responses, assertion results, and errors
- Output artifact paths for downstream reporting