Papers › One Success Isn't Reliability: Thinkingbox, a Sandbox and Benchmark for Agents in...

One Success Isn't Reliability: Thinkingbox, a Sandbox and Benchmark for Agents in Stateful Business Workflows

20 Aug 2026arXiv:2608.19741added by Syntology

Zhuochun Li, Youngmin Ko, Ali Keramati, Nicola Ferri, Susana Palmaz Lopez Pelaez, Liang-Chun Tsai, Calvin Wang, Mirco Milletari, Tuhin Kundu, Vadim Smolyakov, Kjartan Olafsson, Tommy Guy

Title, abstract, authors and date from arXiv's metadata (CC0); this paper is not in the Papers with Code archive (frozen 2025-07-28).

Recent agent benchmarks increasingly ground evaluation in executable environments, from code repair to web navigation, app APIs, and function calling. Yet completing consequential work beyond code requires more than producing a plausible response or valid tool call: agents must gather missing information over multiple turns, follow domain policies, coordinate dependent tools, and realize the correct persistent state transition without collateral effects. In this paper, we introduce Thinkingbox, a sandbox for tool-agent-user interaction that provides isolated MCP-compatible tool sessions, complete execution traces, and outcome evaluation over terminal backend state. Built on this sandbox, Thinkingbox-bench contains 507 policy-conditioned workflows across numerous scenarios, including retail, hospitality, auto insurance, neobank internal IT, and consulting IT/HR support. Each attempt is evaluated by task-specific executable checks that accept valid trajectories while rejecting wrong, missing, or extra effects; designated tasks additionally check required properties of the final response. Across proprietary and open-weight models, the strongest achieves 65.36% pass@1, but only 25.25% pass^20. Moreover, many failed trials show clean termination and valid state-changing actions, showing that response or tool-call-level signals are not clear proxies for end-to-end task completion. Thinkingbox-bench reveals a large gap between occasionally finding a successful trajectory and reliably completing stateful business tasks. We release both Thinkingbox and Thinkingbox-Bench: https://github.com/microsoft/thinkingbox

PaperPDFCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2608.19741")

Code

Syntology Ran 21 of 33 code samples harvested from 1 repository linked to this paper; 12 have no recorded run. Of those that ran: 1 ran · violated contract; 9 ran · our draft was wrong; 11 ran with no contract checked.

By repository: found in paper text by Syntology: 33 samples from 1 repository, 21 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

microsoft/thinkingbox found in paper text by Syntology report

Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

33 samples harvested; 21 ran; 0 honoured the contract we drafted; 12 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

1ran · violated contract
9ran · our draft was wrong
11ran
12unverified

Licence: 0 of the 33 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from microsoft/thinkingbox. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

InputTokensDetails microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · 16eef4c8df8ac970 · report
JudgeException microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · 9d41b32ae0ce0a5b · report
Message microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · 0aa920df5d364960 · report
MockPrint microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran MIT (permissive) · e9af49717c2265cf · report
OutputTokensDetails microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · 192ad4ecb16a9b13 · report
TestResult microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · f951888ff2ff0dd2 · report
Text microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · a3df1a4e1c113eee · report
ToolCall microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · 22bebd6ed9a7c552 · report
ToolDef microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · d56dc2d32214279d · report
ToolResponse microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · 7d4a157b6ded0ee7 · report
_FixtureDef microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · metamorphic tier: deterministic MIT (permissive) · a2edb55851907482 · report
_get_injectable_params microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong MIT (permissive) · 7558840ba0860df7 · report
_get_safe_module_name microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong MIT (permissive) · b0a349db9ff84c35 · report
_iter_traceback_frames microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong MIT (permissive) · 3ff4743ce67ed85e · report
_parse_yesno microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · violated contract MIT (permissive) · 60321ca0024675f8 · report
_pp_tag microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong fingerprinted MIT (permissive) · 0120249b1a2684d0 · report
_quoted_keys microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong fingerprinted MIT (permissive) · f9bfe3c621ee6731 · report
_resolve_fixture_order microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong MIT (permissive) · 8bf17f23676dbbac · report
extract_test_fn_param_names microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong MIT (permissive) · 43cf2f9437e669e3 · report
get_conversation_transcript microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong fingerprinted MIT (permissive) · 6b7af988f36e7b60 · report
safe_tag_encode microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology ran · our draft was wrong fingerprinted MIT (permissive) · 15672c7214782d84 · report
Fixtures microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 975fd46b2ef58c0e · report
Judge microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 72fa5a1955329c63 · report
LLMSessionBase microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 9b2a738a346300e1 · report
ParallelToolCall microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · b889f5a59f616b4d · report
TestContext microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · b8a294c5c24e6352 · report
TestScript microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 54c41b48bf5dde90 · report
TestScriptBase microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · bb96ecf7e818a272 · report
ToolCallResponse microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 1e762f519b572ea0 · report
Usage microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 4ec7de77b2e1989b · report
_exc_info_to_test_result_inplace microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 872a344324a2e87c · report
fixtures_context microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 35d1b26a1bb33f68 · report
fixtures_context_for_test_fn microsoft/thinkingbox/thinkingbox/common/testrunner.py found in paper text by Syntology unverified MIT (permissive) · 50362f184741aaba · report

Results from the paper

The Papers with Code archive ends with its 2025-07-28 snapshot. This paper's arXiv identifier, 2608.19741, was issued in August 2026, after that date, so the archive has no leaderboard rows for it.

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections