Skip to content
Showcase/Who&When Multi-Agent Failure Attribution
advancedtext

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
Submit

Configuration Fileconfig.yaml

This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.

yaml
# 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}} &nbsp;·&nbsp; <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

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 items

Get This Design

View on GitHub

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)

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

failure_attributionradio

Domain

Multi-Agent SystemsAgent Debugging

Use Cases

Failure AttributionAgent Trace AnalysisSystem Debugging

Tags

multi-agentfailure-attributionagent-debuggingwho-and-whenllm-agents

Found an issue or want to improve this design?

Open an Issue