Back to Devoured - August 27, 2026
DEVOURED
Automatic Harness Optimization (GitHub Repo)

Automatic Harness Optimization (GitHub Repo)

AI Github
Microsoft's AutoSaddler automates the optimization of LLM agent harnesses by analyzing execution traces and patching prompts, tools, and middleware.
What: AutoSaddler is a framework that uses 'EvoDAG' (Evolution Directed Acyclic Graph) to improve agent performance on benchmarks like GAIA2 and SWE-Bench. It performs automated diagnosis and patching to improve Pass@1 rates by up to 10 percentage points.
Why it matters: This tool shifts agent development from manual prompt engineering to an automated, data-driven 'compiler' approach, which is necessary as agent workflows become too complex for humans to debug manually.
Takeaway: The system is currently open-source on GitHub; you can integrate it via the `autosaddler.scenarios` entry-point to automate your specific agent harness.
Deep dive
  • Performs full-harness optimization (prompts, tools, middleware).
  • Diagnosis-Patch cycle: Inspects failures, then applies structured updates.
  • Generalization-aware: Uses reflection to retain reusable lessons across traces.
  • Durable execution: Records all events for provenance and reproducibility.
  • V2 supports plugin-based architecture for custom harness integration.
Decoder
  • Harness: A testing or evaluation environment used to run agents and measure their performance against benchmarks.
Original article

🛠️ AutoSaddler: Automatic Harness Optimization with Durable Updates from Agent Execution Traces

AutoSaddler automatically improves LLM-agent harnesses by diagnosing execution traces, applying structured updates to prompts, tools, and middleware, and selecting changes that generalize.

Preliminary results report the following test Pass@1 scores across benchmarks and agent harnesses:

Benchmark Base agent harness Base Pass@1 AutoSaddler Pass@1 Improvement
GAIA2 Default ReAct agent 53.0 62.0 +9.0 pp
SWE-Bench Pro SWE-agent 37.3 46.9 +9.6 pp
Terminal-Bench 2.0 Terminus 2 40.0 50.0 +10.0 pp

✨ Highlights

  • Full-harness optimization: searches over prompts, tool definitions and implementations, middleware hooks, and agent-loop logic.
  • In-depth diagnosis: deeply debugs execution traces and the harness codebase to identify root causes rather than relying on shallow reflection.
  • Structured intervention: targets prompts, tools, and middleware through an explicit patch taxonomy and phased Capability-to-Steering schedule instead of unconstrained editing.
  • Generalization-aware selection: validates updates beyond the motivating trajectories and uses reflection with an evolution DAG (EvoDAG) to retain broadly useful lessons.
  • Durable execution: records append-only events, immutable provenance, resumable state, and content-addressed candidates.

🛠️ Installation

AutoSaddler requires Python 3.12-3.14, uv, and Git.

git clone https://github.com/microsoft/AutoSaddler.git
cd AutoSaddler
uv sync --extra dev

🚀 Quick Start

Run the deterministic, credential-free V2 template to exercise the optimization engine, event store, candidate evolution, and output projections:

uv run python -m autosaddler.v2.cli \
  --config configs/v2/local_template.yaml \
  --run-id local-template

🧭 Versions

  • V2 (current): the durable, plugin-based implementation.
  • V1 (legacy): the research-quality implementation used for the experiments in the arXiv paper.

🧩 How It Works

AutoSaddler formulates harness optimization as offline mini-batch learning. It uses three session types across the optimization lifecycle:

  1. Diagnosis-Patch: inspects failed traces and the harness codebase, then proposes structured Capability patches (code or infrastructure) and Steering patches (textual behavior changes).
  2. Reflection: compares pre- and post-patch traces, classifies fixed, regressed, still-failing, and still-passing cases, and records reusable lessons.
  3. Evolution: consults the full EvoDAG to synthesize candidates from successful components and lessons across lineages.

🎯 Supported Harnesses and Benchmarks

Harness Harness space Benchmark
Deterministic fake harness (fake) Structured component map Synthetic cases
Meta-ARE Default ReAct Agent (meta_are) Git repository GAIA2

⚙️ Configuration

Every V2 config starts with schema_version: autosaddler/v2. A scenario plugin is the adapter between AutoSaddler's generic optimization engine and a specific harness/benchmark pair.

🔬 Reproducing the Included GAIA2 Smoke Run

The smoke config exercises the real optimization pipeline on seven GAIA2 scenarios.

1. Prepare the repositories

Use a sibling layout with AutoSaddler/, Meta-ARE/, meta_are_data/, and a working_dir/.

2. Provision the benchmark inputs

uv run --extra meta-are-setup python scripts/meta_are/provision_gaia2_scenarios.py ...
uv run --extra meta-are-setup python scripts/meta_are/provision_demo_filesystem.py ...

3. Configure providers and run

export OPENAI_API_KEY="..."
export ANTHROPIC_API_KEY="..."
cd ../working_dir
uv run --project ../AutoSaddler \
  python -m autosaddler.v2.cli \
  --config ../AutoSaddler/configs/v2/meta_are_smoke.yaml \
  --run-id "$RUN_ID"

📝 Citation

@misc{park2026autosaddlerautomaticharnessoptimization,
  title={AutoSaddler: Automatic Harness Optimization with Durable Updates from Agent Execution Traces},
  author={Sungho Park and Wonjoong Kim and Rongyuan Tan and Jue Zhang and Wook-Shin Han and Pengfei Gao and Chanyoung Park and Yongqiang Yao and Rao Fu and Elsie Nallipogu and Qingwei Lin and Saravan Rajmohan and Dongmei Zhang},
  year={2026},
  eprint={2608.23041},
  archivePrefix={arXiv},
  primaryClass={cs.AI},
  url={https://arxiv.org/abs/2608.23041},
}
Explore all 59 articles in today's digest

Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi