vegman.dev
All posts

The Agent Said: 'Done'. The Database Disagreed.

2026-10-05case

The agent reports that the task is complete. The database shows otherwise. Microsoft described in a Hugging Face blog the ThinkingBox system: it evaluates agents not by their responses, but by what they actually changed in backend systems.

graph TD
    A[Агент запускает действие] --> B{Вызов инструмента};
    B -- Успешно --> C[Агент сообщает: "Готово"];
    C -- Не проверяет --> D[База данных: Состояние не изменилось / Ошибка];
    D -- Обнаружено ThinkingBox --> F{Расхождение: "Готово" vs "Не готово"};
Расхождение между ожиданием и реальностью: агент сообщил об успехе, но база данных показала ошибку.

How to measure agent reliability: Microsoft ThinkingBox

ThinkingBox looks at how the system state actually changed, not at the correctness of responses or tool calls. The tool runs tasks multiple times and verifies their actual execution.

Why a tool is not a result

The agent called the tool correctly - is the task done? ThinkingBox shows the opposite. Final responses and valid tool calls are just proxies. The agent can sound correct while leaving an incorrect value, changing the wrong record, or creating an unintended side effect. Only the records in the system answer the question of whether the task was completed.

Microsoft conducted 121,680 attempts with 12 LLMs, 79,853 attempts failed execution checks. Of these failures, 67.24% completed cleanly, called a state-changing tool, and reported no errors. Most problems lie not in the agent's logic, but in its interaction with external systems.

graph LR
    A[Общая производительность (Pass@1)] -- Не всегда = --> B[Надежность (Observed 20/20)];
    subgraph Метрики ThinkingBox
        A1[Pass@1: Доля успешных попыток] --> A;
        A2[Pass@20: Хотя бы один успех из 20] --> A;
        A3[Observed 20/20: Все 20 попыток успешны] --> B;
    end
    style A fill:#fff,stroke:#333,stroke-width:2px;
    style B fill:#f9f,stroke:#333,stroke-width:2px;
Разница между однократным успехом (Pass@1) и полной консистентностью (Observed 20/20).

One success doesn't mean reliability: Pass@1, Pass@20, Observed 20/20 metrics

Agent reliability cannot be measured by one successful run. ThinkingBox runs each task 20 times from an identical clean backend. Important metrics:

  • `pass@1`: The proportion of all attempts that were successful (how well does it work normally?).
  • `pass@20`: The proportion of tasks solved at least once in 20 attempts (can it do this *at all*?).
  • `Observed 20/20`: Tasks that actually passed all 20 recorded attempts (can it *always* be correct?).

The difference between what a model does once and what it does always - that's reliability. Only three models retain most of their `pass@1` after 20 runs: GPT-6 Astra retains 78%, Claude Opus 5.5 and Claude Opus 5 both 71%. GLM-5.1, Kimi-K2.6, and DeepSeek-V4-Pro retain around 8%.

What reliability costs: hidden costs of consistency

Reliability costs more than one-time success. The authors calculated (this is an estimate, not real cloud bills) the difference between the cost of a successful task and the cost of a *reliable* task (one that passes all 20/20 attempts).

  • The cheapest reliable task is GPT-5.4: $6.80, but it only has 128 such tasks.
  • Claude Opus 5.5 achieves the highest number of reliable tasks (241) at a price of $7.80.

The cheapest way to get a correct answer is not the cheapest way to get a reliable answer. In 79.9% of cases, agent failures are related to tool handling, not logic.

pie title Причины сбоев AI-агентов
    "Обработка инструментов" : 79.9
    "Некорректное обновление состояния" : 10.3
    "Незавершенные действия пользователя" : 7.0
    "Отсутствие действия, изменяющего состояние" : 2.9
Основные причины сбоев AI-агентов: проблема инструментов, а не логики.

Failure reasons: more tool than logic

About four out of five failures are related to tool handling, not reasoning logic. Agents typically reach the workflow execution stage, then cannot recover from tool errors, unfulfilled preconditions, or empty search queries. This is a retry and error recovery problem before it becomes a model problem itself. Complexity varies significantly by domain: retail averages 59.52% `pass@1`, while auto insurance is only 33.83%.

Put it to work

What to check in practice

  • Implement end-state verification: Verify the final system state before committing changes, rather than relying on a successful tool call. This can be database reconciliation, file checks, or API state checks.
  • Use reliability metrics: Beyond one-time success (`pass@1`), look at consistency (`Observed 20/20`), especially in critical tasks. This will help understand how predictable the agent is.
  • Analyze domain characteristics: Consider that agent performance can vary significantly depending on the subject area. Test agents on real data and scenarios from your domain.
  • Focus on error handling: Develop retry mechanisms and recovery from tool errors. Most agent failures happen at this stage.

How to know it worked

Count two numbers before changes and a month after: the proportion of tasks that the agent passes 20 out of 20 on the test bench, and the number of discrepancies between what the agent reported and what's in the database. The first should grow, the second should fall. The specific threshold is set by your domain: in the study, retail and auto insurance differed by almost twofold.

Sources

Microsoft ThinkingBox: The Agent Said It Was Done. The Database Disagreed.