Turning Database Grading into RL Rewards: Post-Training Agents with ThinkingBox Microsoft and Hugging Face reported that 50 steps of GRPO post-training on Qwen3.8-27B, using executable database-state checks from ThinkingBox-format tasks as rewards, raised average success on ThinkingBox-Bench from 51.70% to 60.78% and lifted tasks passing all 20 attempts from 38 (7.50%) to 107 (21.10%), while pass@20 fell from 453 tasks (89.35%) to 446 (87.97%). The training pool was selected using what the teams call offline policy-relative difficulty, estimating each task's success probability once with the base policy before training and holding the pool fixed. ThinkingBox-Training is now available on GitHub, and the benchmark comprises 507 tasks that check an agent's final database state rather than its claims of completion. Viewer • Updated • 513 • 326 • 16 https://huggingface.co/datasets/microsoft/ThinkingBox-Bench Turning Database Grading into RL Rewards: Post-Training Agents with ThinkingBox Enterprise Article https://huggingface.co/blog This is the follow up to our first blog post, The Agent Said It Was Done. The Database Disagreed. https://huggingface.co/blog/microsoft/thinkingbox ThinkingBox-Training is now available on GitHub https://github.com/microsoft/thinkingbox-training . We built ThinkingBox to evaluate an agent's work by comparing the final database state with the expected outcome. We then used the same kind of executable signal as a reward on training tasks outside ThinkingBox-Bench. For Qwen3.8-27B, average success rose from 51.70% to 60.78%, while tasks completed correctly on all twenty attempts rose from 38 to 107 with 50 GRPO steps. Figure 1. ThinkingBox turns executable checks of terminal database state into rewards for post-training agents on tasks outside ThinkingBox-Bench. This is a joint blog by Microsoft and Hugging Face, special thanks to Mirco Milletari and Xiang Jiang from Microsoft, Sergio Paniego from Hugging Face and our former intern Zhuochun Li University of Pittsburgh for co-authoring/reviewing efforts. We built ThinkingBox to catch agents that say they are done when they are not. Each of its 507 tasks in ThinkingBox-Bench our benchmark dataset hands an agent a real backend and a set of tools, lets it work, then checks what really changed in the database. In the first post https://huggingface.co/blog/microsoft/thinkingbox , we caught a model closing a customer's ticket as resolved while the carrier exception behind it was still open. Nine competent-looking tool calls, one wrong database row. Then we noticed what we had built. For most tasks, an executable check can return 1 or 0 directly from the final database state. That is not just a grader. This can be a reward function.