Skip to main content
Promptbeat uses a small set of YAML files that you compose to describe a complete evaluation. The root file, 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

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)
Key fields: Use this file to describe the project-level evaluation plan. Keep secrets out of it — use environment variables instead.

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)
Write boundaries and forbidden actions from the perspective of what the system should never do under adversarial conditions — these become part of the judge’s evaluation context.

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)
A 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)
The 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

Running promptbeat 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
Treat both generated files as reproducibility artifacts — they let you re-run the eval stage against a different provider without regenerating probes.
Keep all config files — promptbeat.yaml, target.yaml, scenarios.yaml, and seeds.yaml — in version control alongside your agent code. Committing them together means every evaluation run is reproducible from a known commit, and changes to scenarios or seeds are visible in pull request diffs.