Observed since 20 Oct, 23:30 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A stress-test benchmark that provokes MAST failure modes in LLM agent frameworks, and shows how much of the failure comes from the framework's own prompt scaffolding.
A stress-test benchmark for LLM agent frameworks. 100 scenarios engineered to provoke five failure modes from the MAST taxonomy, with graders that say which failure happened and whether the task was actually done correctly — two separate questions that often disagree.
It exists because of what it found: most of the difference between agent frameworks is the prompt scaffolding they wrap around your task, not their orchestration.
| Same scenarios, same model (qwen2.5 7B), same tools | Failure rate |
|---|---|
| LangGraph | 14.6% |
| OpenAI Agents SDK | 24.2% |
| CrewAI | 47.1% |
| LangGraph given CrewAI's prompt | 45.4% |
| CrewAI given neutral wording | 29.2% |
A single sentence CrewAI appends to every task — "you MUST return the actual
complete content as the final answer, not a summary" — roughly doubles how
often an agent acts on an underspecified request instead of asking, on both a
7B model and gpt-5.4-mini. Full results: docs below.
pip install agentstress # scenarios, graders, CLI
pip install "agentstress[langgraph]" # + the framework you want to test
pip install "agentstress[all]" # + crewai, openai-agents, judge
Runs against a local model through Ollama by default, so you can use the whole benchmark without an API key.
agentstress capture --framework crewai --scenario FAQ-12
prints the exact first request, separating your task text from everything the framework added. Most developers have never seen it.
ollama pull qwen2.5:7b-instruct
agentstress list --mode FAQ # see what is provoked
agentstress run --framework langgraph --mode FAQ --trials 2 --out runs/
agentstress grade --runs runs/ # step repetition: free, deterministic
agentstress grade --runs runs/ --judge # all modes: billed LLM judge
agentstress report --runs runs/
Use a hosted model with --model openai:gpt-5.4-mini (needs OPENAI_API_KEY).
The judge needs ANTHROPIC_API_KEY; it is never from the same model family as
the agent under test.
| Mode | What it provokes |
|---|---|
| SR step repetition | Re-fetching a value the agent already holds |
| RAM reasoning-action mismatch | The ticket contradicts the agent's own conclusion |
| UT unaware of termination | Carrying on after the job is done, or stopping short |
| FAQ fail to ask for clarification | Guessing instead of asking when something is missing |
| INV incorrect / no verification | Claiming a result without reading it back |
Design rules that make the numbers mean something:
[placeholder] into the artifact.Step repetition is graded deterministically from the trace (three tiers, with exemptions for legitimate retries). The other four modes use an LLM judge (claude-opus-5), validated three times against blind human labels: 96% and 96.7% (κ=0.93) on qwen traces, 87.5% (κ=0.75) on GPT traces, where a known leniency is documented and bounded.
| Document | Contents |
|---|---|
PHASE_1_RESULTS_100.md | Main study: 100 scenarios × 3 frameworks × 4 trials |
PROMPT_ABLATION_RESULTS.md | Prompt transplant: the cause |
PHASE_1D_RESULTS.md | gpt-5.4-mini cross-check |
SENTENCE_ABLATION_RESULTS.md | The one-sentence experiment |
paper/ | Paper draft; figures regenerate from the data |
results/ | Every trace, judge verdict and graded row from all 2,880 runs |
Older documents in the repository root record how the study developed,
including a discarded run whose prompts leaked grader rationale
(PHASE_1_REWRITE_LOG.md).
pip install -e ".[all,dev]"
python -m tests.test_prompt_hygiene # scenario prompts stay agent-facing
python -m tests.test_grader # deterministic grader
python -m tests.test_correctness # ground-truth checks
python -m tests.test_world # mock world is pinned
python analyze_100.py # main statistics, no API calls
python paper/make_figures.py # figures + numbers for the paper
Grading everything again costs money; every graded verdict is cached in
results/*/judge_cache.json, so the statistics above re-run for free.
capture on your versions.@misc{agentstress2026,
title = {The Prompt Is the Framework: Agent Framework Scaffolding,
Not Orchestration, Drives Failure Rates},
author = {Patel, Arth},
year = {2026},
note = {Preprint}
}
MIT — see LICENSE.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 22 Sept 2026 | 10 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 23:30 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:b56f99af852cd39657f8da4a3535ac61518824c29fbbed1a39263e4762eaf6f6