Who&When Multi-Agent Failure Attribution
Failure attribution for LLM multi-agent systems, based on the Who&When dataset (Zhang et al., ICML 2025 Spotlight). Annotators read the failure log of a run that did not solve its query and produce the attribution triple: the single responsible agent, the decisive error step (indexed from 0), and a natural-language reason, plus a certainty flag for group discussion. Complements agentic/mast-failure-taxonomy: MAST categorizes HOW multi-agent systems fail, while Who&When attributes WHO failed and WHEN.
About this dataset
Who&When is the dataset behind 'Which Agent Causes Task Failures and When?', which proposes automated failure attribution for LLM multi-agent systems as a research problem. It comprises failure logs from 127 multi-agent systems — both algorithm-generated systems and the hand-crafted Magnetic-One system run on GAIA and AssistantBench queries — with fine-grained annotations linking each failure to the responsible agent and the decisive error step.
The paper's annotation protocol is expert and multi-round. Three AI-agent experts first annotated independently under a standardized guideline (reproduced verbatim in this config from Appendix F): select the single agent directly responsible, then the first mistake step made by that agent (indexed from 0), then describe the reason in natural language, flagging any uncertain annotations. Uncertain cases then went through consensus discussion — persuasion rather than simple majority vote — followed by a cross-validation round in which each expert reviewed another's annotations.
The task is genuinely hard: annotators spent 30.9, 30.2, and 23.2 hours respectively, often re-executing searches and visiting websites to check whether an agent could have retrieved the information it missed. The paper's automated baselines underscore the difficulty — the best method identifies the responsible agent only 53.5 percent of the time and the decisive step 14.2 percent, motivating high-quality human annotation of the kind this config supports.
This Potato config uses the failure_attribution scheme, which populates the agent dropdown and step picker from the trace's own turns, so annotators choose among agents and steps that actually occurred. A radio captures the guideline's certain/uncertain flag for routing to discussion and voting. The sample data contains ten self-authored failure logs in the style of Magnetic-One and CaptainAgent runs, covering characteristic failure types: misread sources, premature termination, hallucinated content, silent constraint drops, and verification failures.
- Released
- 2025 (arXiv:2505.00212); ICML 2025 Spotlight, PMLR 267
- Multi-agent systems covered
- 127
- Annotators
- 3 AI-agent experts
- Annotation rounds
- 3 (independent + consensus discussion + cross-validation)
- Annotation labor
- 30.9 / 30.2 / 23.2 human-hours per annotator
- Label per failure
- responsible agent + decisive error step + natural-language reason
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# Who&When Multi-Agent Failure Attribution
# Based on: Shaokun Zhang, Ming Yin, Jieyu Zhang, Jiale Liu, Zhiguang Han,
# Jingyang Zhang, Beibin Li, Chi Wang, Huazheng Wang, Yiran Chen, and
# Qingyun Wu (2025). "Which Agent Causes Task Failures and When? On
# Automated Failure Attribution of LLM Multi-Agent Systems." Proceedings of
# the 42nd International Conference on Machine Learning (ICML 2025,
# Spotlight), PMLR 267:76583-76599. arXiv:2505.00212.
# Paper: https://proceedings.mlr.press/v267/zhang25cq.html
# Dataset: https://huggingface.co/datasets/Kevin355/Who_and_When
#
# Task: read the failure log of an LLM multi-agent run that did not solve its
# query, then attribute the failure: select the single responsible agent, the
# decisive error step (indexed from 0, and made by that agent), and describe
# the mistake in natural language. This is the annotation protocol behind the
# Who&When dataset, which the paper collected in three rounds (independent
# annotation with uncertainty flagging, consensus discussion, and
# cross-validation). The uncertainty radio below mirrors the guideline's
# requirement to mark uncertain annotations for later discussion and voting.
# Compare agentic/mast-failure-taxonomy: MAST is a taxonomy of HOW multi-agent
# systems fail (14 failure modes); Who&When is attribution of WHO failed and
# WHEN.
#
# Annotation instructions reproduced verbatim from Appendix F, Figure 10 of
# the paper (the standardized annotation guideline used by all annotators).
annotation_task_name: "Who&When Multi-Agent Failure Attribution"
task_dir: "."
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "query"
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
port: 8000
server_name: localhost
annotation_instructions: |
You are shown the failure log of an LLM multi-agent system that failed to
solve the user's query. Attribute the failure using the guideline below.
**Annotation Guideline** (reproduced verbatim from Appendix F, Figure 10):
Failure Responsible Agent:
a) Select the single agent that should be directly responsible for this
failure in your mind. Allow for some subjectivity, but be prepared to give
your reasons.
b) Don't be too strict. If there exist agents that do redundant steps and
agents that make mistakes, choose the agent who makes mistakes.
c) If there are no agents that make obvious mistakes, decide one single
agent in your mind.
d) If multiple agents make mistakes, choose the one that made the most
serious mistake
Decisive error step:
a) First decide one single mistake agent, then decide one single mistake
step. The Mistake step must be made by the mistake agent.
b) If the mistake agent makes mistakes in multiple steps, choose the
first step.
c) Index from 0.
Failure Reasons:
a) First, use natural language to describe the reason. E.g., "The agent
wrote the wrong code".
b) Make sure the reader could understand the annotations.
Others:
a) Accurately record the time of labeling.
b) Mark all annotation if you have any uncertain, and then we need to vote
and discuss later.
annotation_schemes:
- annotation_type: failure_attribution
name: attribution
description: "Which agent is responsible for the failure, at which step, and why?"
steps_key: steps
agent_key: agent
- annotation_type: radio
name: certainty
description: "Are you certain about this attribution? Uncertain annotations go to group discussion and voting."
labels:
- "Certain — undoubtedly confident this attribution is correct"
- "Uncertain — mark for later discussion and voting"
keyboard_shortcuts:
"Certain — undoubtedly confident this attribution is correct": "1"
"Uncertain — mark for later discussion and voting": "2"
html_layout: |
<div style="padding: 15px; max-width: 900px; margin: auto;">
<div style="background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 8px; padding: 6px 12px; margin-bottom: 8px; font-size: 13px; color: #475569;">
<strong>System:</strong> {{system}} · <strong>Source benchmark:</strong> {{benchmark}}
</div>
<div style="background: #fef2f2; border: 1px solid #fecaca; border-radius: 8px; padding: 14px 18px; margin-bottom: 10px;">
<h3 style="margin: 0 0 6px 0; color: #991b1b; font-size: 15px;">Failed query</h3>
<p style="font-size: 15px; line-height: 1.6; margin: 0; color: #450a0a;">{{query}}</p>
</div>
<div style="background: #fafafa; border: 1px solid #e5e7eb; border-radius: 8px; padding: 14px 18px; margin-bottom: 10px;">
<h3 style="margin: 0 0 8px 0; color: #374151; font-size: 14px;">Failure log (steps indexed from 0)</h3>
<div style="white-space: pre-wrap; font-size: 14px; line-height: 1.7; color: #1f2937;">{{transcript}}</div>
</div>
<p style="color: #6b7280; font-size: 13px; margin: 0;">Select the responsible agent and decisive error step below — the choices are populated from this run's own turns — then describe the failure reason and flag your certainty.</p>
</div>
allow_all_users: true
instances_per_annotator: 20
annotation_per_instance: 3
allow_skip: true
Sample Datasample-data.json
[
{
"id": "whowhen_001",
"query": "What was the closing price of Acme Corp stock on the day its CEO announced her resignation in 2019?",
"system": "Magnetic-One style (hand-crafted)",
"benchmark": "GAIA-style",
"transcript": "Step 0 — Orchestrator: Plan: (1) find the date of the CEO resignation announcement, (2) find the closing stock price on that date. Assigning WebSurfer.\nStep 1 — WebSurfer: Searched 'Acme Corp CEO resignation 2019'. Found a news article dated March 14, 2019 about the announcement. Reported the date as March 14, 2019.\nStep 2 — Orchestrator: Good. WebSurfer, now find the closing price on March 14, 2019.\nStep 3 — WebSurfer: Opened a historical price chart, read the row for March 4, 2019 instead of March 14, and reported $42.17.\nStep 4 — Orchestrator: Final answer: $42.17.",
"steps": [
{
"agent": "Orchestrator",
"content": "Plan: (1) find the date of the CEO resignation announcement, (2) find the closing stock price on that date. Assigning WebSurfer."
},
{
"agent": "WebSurfer",
"content": "Searched 'Acme Corp CEO resignation 2019'. Found a news article dated March 14, 2019 about the announcement. Reported the date as March 14, 2019."
},
{
"agent": "Orchestrator",
"content": "Good. WebSurfer, now find the closing price on March 14, 2019."
},
{
"agent": "WebSurfer",
"content": "Opened a historical price chart, read the row for March 4, 2019 instead of March 14, and reported $42.17."
},
{
"agent": "Orchestrator",
"content": "Final answer: $42.17."
}
]
},
{
"id": "whowhen_002",
"query": "Write a Python function that returns the number of Sundays that fell on the first of a month between 1901 and 2000, and report the answer.",
"system": "CaptainAgent style (algorithm-generated)",
"benchmark": "Algorithm-generated task",
"transcript": "Step 0 — Planner: Decompose: Coder writes a date-iteration script, Executor runs it, Verifier checks the result.\nStep 1 — Coder: Wrote a script iterating months from 1901-2000 using weekday() == 6 to test for Sunday.\nStep 2 — Executor: Ran the script; it printed 171.\nStep 3 — Verifier: The check weekday() == 6 matches Sunday in Python, and the range looks right. Approving 171.\nStep 4 — Planner: Final answer: 171.",
"steps": [
{
"agent": "Planner",
"content": "Decompose: Coder writes a date-iteration script, Executor runs it, Verifier checks the result."
},
{
"agent": "Coder",
"content": "Wrote a script iterating months from 1901-2000 using weekday() == 6 to test for Sunday."
},
{
"agent": "Executor",
"content": "Ran the script; it printed 171."
},
{
"agent": "Verifier",
"content": "The check weekday() == 6 matches Sunday in Python, and the range looks right. Approving 171."
},
{
"agent": "Planner",
"content": "Final answer: 171."
}
]
}
]
// ... and 8 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/agentic/whowhen-failure-attribution potato start config.yaml
Dataset & paper
Zhang et al., ICML 2025 (Spotlight)
Citation (BibTeX)
@inproceedings{pmlr-v267-zhang25cq,
title = {Which Agent Causes Task Failures and When? {O}n Automated Failure Attribution of {LLM} Multi-Agent Systems},
author = {Zhang, Shaokun and Yin, Ming and Zhang, Jieyu and Liu, Jiale and Han, Zhiguang and Zhang, Jingyang and Li, Beibin and Wang, Chi and Wang, Huazheng and Chen, Yiran and Wu, Qingyun},
booktitle = {Proceedings of the 42nd International Conference on Machine Learning},
pages = {76583--76599},
year = {2025},
volume = {267},
series = {Proceedings of Machine Learning Research},
publisher = {PMLR},
url = {https://proceedings.mlr.press/v267/zhang25cq.html}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
MAST Failure Taxonomy
Annotate multi-agent system traces to identify failure modes from the MAST taxonomy, rate severity, pinpoint the first failure step, and describe the failure mechanism.
AdMIRe - Advancing Multimodal Idiomaticity Representation
Multimodal idiomaticity task (SemEval-2025 Task 1, Subtask A): given a potentially idiomatic nominal compound in a context sentence, annotators rank five candidate images by how well each represents the sense in which the compound is used.
Adverse Drug Event Extraction (CADEC)
Named entity recognition for adverse drug events from patient-reported experiences, based on the CADEC corpus (Karimi et al., 2015). Annotates drugs, adverse effects, symptoms, diseases, and findings from colloquial health forum posts with mapping to medical vocabularies (SNOMED-CT, MedDRA).