Skip to main content

Evaluations

Evals are end-to-end simulations that measure agent quality. Scenarios, simulated users, fake I/O channels (Email / SMS / Contacts / Computer), and the simulated clock all live in the external bedrock-harness repo. Bedrock stores the resulting traces, checkpoint spans, and reviews. Use evals to:
  • Catch regressions when you change prompts, tools, or models
  • Benchmark a new model or reasoning_effort against your current setup
  • Build a durable, reviewable history of agent quality over time

Concepts

Run Lifecycle

  1. Dispatch — You run harness eval <scenario> --local (or point at a remote Bedrock). The harness creates a purpose=eval Agent tagged with the scenario name and the harness commit SHA, then invokes run_agent which spawns the harness subprocess.
  2. Simulate — Inside the subprocess, the harness plays scripted events on a simulated clock against fake I/O channels. Every LLM call, tool call, and checkpoint streams as a span into Bedrock over HTTP.
  3. Score — Each checkpoint boundary writes a span with span_type="checkpoint" and metadata.passed. The harness process exits nonzero if any checkpoint failed.
  4. Review — Humans (or automation) open the trace in the portal and attach a TraceReview with rubric scores + notes. The review’s checkpoint_pass_rate is derived from the checkpoint spans — you don’t score checkpoints again manually.

Running an Eval

Evals are driven by the harness CLI, not a Bedrock REST endpoint:
This will:
  • Create a purpose=eval agent in Bedrock (with tags scenario:curl-wget-light + git-sha:<sha>)
  • Spawn a harness subprocess, hit run_agent, and stream the trace
  • Print the agent URL in the portal
  • Exit nonzero if any checkpoint fails
Point at a remote Bedrock by dropping --local and exporting BEDROCK_API_URL + BEDROCK_API_KEY (an org-scoped key).

Inspecting a Run

List traces for an eval agent:
Get the full trace with spans:
Filter to checkpoint spans to see assertion boundaries:
Each checkpoint span’s metadata looks like:

Reviews

A TraceReview attaches to any trace and captures rubric scores + notes. The checkpoint_pass_rate field is computed on read from the trace’s checkpoint spans — reviewers don’t manually score checkpoints. Create a review:
Read back the review (includes computed weighted_score and checkpoint_pass_rate):
Update scores or flip status to submitted:

Score sources

TraceCriterionScore.source distinguishes rubric-derived vs ad-hoc criteria:

Reproducibility

Each eval run is anchored by:
  • The eval Agent, which carries git-sha:<harness_sha> as a tag and was created at a known wall-clock time
  • A HarnessRun row stamped with the harness subprocess’s resolved git SHA + origin + trace linkage
  • The trace’s spans, which include every LLM call, tool call, and checkpoint with simulated timestamps
Delete the eval agent to garbage-collect its traces; scenarios themselves live in the harness repo and are versioned there.

Scenarios Live in the Harness

Scenarios are Python files under harness/src/harness/evals/ in the bedrock-harness repo. There is no REST endpoint for listing or creating scenarios — contribute code to add one, and the harness CLI will pick it up.

API Summary