One Readout, Many Repairs: Diffusion-Guided Hierarchical Search for Tool-Agent Repair
Organizations: University of Science and Technology of China, Hefei, China
Abstract
Tool agents use large language models to act through external tools, yet successfully executed calls can still leave user requests unfulfilled. Tool-agent repair seeks alternative call sequences that execute successfully and fulfill the original requests. However, repair requires exploring both operation choices and their concrete realizations, making complete-sequence regeneration costly. Moreover, regeneration repeats operation selection even when failure arises from how those operations are realized. The resulting challenge is to reduce this repetition while preserving exploration of alternative operations and realizations. Therefore, we formulate repair as hierarchical search over operation supports, which we introduce as sets of permitted operation types that define reusable search regions for concrete tool-call sequences. We propose ReCommit, a training-free, diffusion-guided framework for improving tool-agent failure recovery while reducing repair computation. ReCommit amortizes operation-level proposal computation across repair trials by reusing operation-type scores from a single parallel readout of a masked diffusion language model. These scores guide search across supports, while realization search explores alternative entity bindings, arguments, and action composition within each support. Experiments on real failures across four enterprise services in the Agent-Diff benchmark show 75.9% and 63.2% relative recovery gains with 61.3% and 51.3% reductions in mean full-budget repair time at repair budgets and , respectively, over the strongest evaluated 8B comparison method. ReCommit achieves a favorable recovery--cost trade-off, including in comparisons with the evaluated 32B models.
Figures & tables
| Scale | Method | Budget | Budget | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Box | Calendar | Linear | Slack | Rate | Time | Box | Calendar | Linear | Slack | Rate | Time | ||
| 32B | Direct | 12 | 12 | 17 | 57 | 15.5 | 108.0 | 22 | 14 | 17 | 65 | 18.7 | 487.1 |
| Schema | 30 | 23 | 25 | 65 | 22.7 | 143.1 | 42 | 31 | 27 | 67 | 26.5 | 649.8 | |
| Feedback-Reflective | 41 | 20 | 32 | 70 | 25.8 | 350.4 | 56 | 29 | 34 | 85 | 32.3 | 1528.3 | |
| 8B | Direct | 4 | 2 | 3 | 26 | 5.5 | 40.8 | 8 | 2 | 3 | 34 | 7.4 | 177.7 |
| Schema | 10 | 7 | 18 | 31 | 10.5 | 44.8 | 13 | 9 | 18 | 36 | 12.0 | 197.0 | |
| Schedule | Supports | Recovered episodes | ||
|---|---|---|---|---|
| With-P | Without-P | |||
| Canonical-only | 3 | 127 | 117 | |
| Expressive-only | 3 | 71 | 70 | |
| Canonical resampling | 2 | 122 | 108 | |
| ReCommit | 2 | 139 | 128 | |
| Canonical-only | 13 | 141 | 137 | |
Appendix figures & tables15 assets
Supplementary material from the paper’s appendix.
Appendix
| Service | Public tasks | Failure episodes |
|---|---|---|
| Box | 40 | 129 |
| Calendar | 53 | 180 |
| Linear | 50 | 156 |
| Slack | 51 | 166 |
| Total | 194 | 631 |
| Backbone | Repository identifier |
|---|---|
| Dream | Dream-org/Dream-v0-Instruct-7B |
| LLaDA 1.5 | GSAI-ML/LLaDA-1.5 |
| DiffuCoder | apple/DiffuCoder-7B-Instruct |
| SDAR | JetLM/SDAR-8B-Chat-b8 |
| Nemotron | nvidia/Nemotron-Labs-Diffusion-8B |
| Service | Types | Operation vocabulary |
|---|---|---|
| Box | 20 | DELETE /collections/{id} , DELETE /comments/{id} , DELETE /files/{id} , DELETE /folders/{id} , DELETE /hubs/{id} , DELETE /tasks/{id} , POST /collections , POST /comments , POST /files/content , POST /files/{id}/content , POST /folders , POST /hubs , POST /hubs/{id}/manage_items , POST /tasks , PUT /collections/{id} , PUT /comments/{id} , PUT /files/{id} , PUT /folders/{id} , PUT /hubs/{id} , PUT /tasks/{id} . |
| Calendar | 25 | acl.delete , acl.insert , acl.patch , acl.update , acl.watch , calendarList.delete , calendarList.insert , calendarList.patch , calendarList.update , calendarList.watch , calendars.clear , calendars.delete , calendars.insert , calendars.patch , calendars.update , channels.stop , events.delete , events.import , events.insert , events.move , events.patch , events.quickAdd , events.update , events.watch , settings.watch . |
| Linear | 13 | commentCreate , commentDelete , commentUpdate , issueCreate , issueLabelCreate , issueLabelDelete , issueLabelUpdate , issueRelationCreate , issueUpdate , teamCreate , teamMembershipCreate , workflowStateArchive , workflowStateCreate . |
| Slack | 14 | chat.delete , chat.postMessage , chat.update , conversations.archive , conversations.create , conversations.invite , conversations.join , conversations.kick , conversations.leave , conversations.rename , conversations.setTopic , conversations.unarchive , reactions.add , reactions.remove . |
| Canonical | Expressive | With-P | Without-P |
| 13 | 0 | 141 | 137 |
| 12 | 1 | 154 | 151 |
| 11 | 2 | 156 | 153 |
| 10 | 3 | 155 | 151 |
| 9 | 4 | 157 | 152 |
| 8 | 5 | 156 | 151 |
| Method | Executable trials | ERR (%) | Recovered episodes |
| 32B comparison methods | |||
| Direct (32B) | 771 | 40.73 | 98 |
| Schema (32B) | 871 | 46.01 | 143 |
| Feedback-Reflective (32B) | 1,067 | 56.37 | 163 |
| 8B methods | |||
| Direct | 611 | 32.28 | 35 |
| Proposal backbone | Recovered episodes | Rate | Time | ||||
|---|---|---|---|---|---|---|---|
| Box | Calendar | Linear | Slack | Total | (%) | (s) | |
| LLaDA-8B | 23 | 9 | 32 | 75 | 139 | 22.03 | 33.60 |
| Dream-7B ( Ye et al., 2025 ) | 19 | 6 | 34 | 72 | 131 | 20.76 | 30.67 |
| LLaDA-1.5-8B ( Zhu et al., 2026b ) | 24 | 9 | 33 | 74 | 140 | 22.19 | 30.52 |
| SDAR-8B ( Cheng et al., 2026 ) | 19 | 5 | 33 | 69 | 126 | 19.97 | 31.93 |
| DiffuCoder-7B ( Gong et al., 2026 ) | 15 | 9 | 34 | 66 | 124 | 19.65 | 34.99 |
| Shared proposal | Downstream work | Total | |
|---|---|---|---|
| 1 | 0.113 | 8.606 | 8.718 |
| 3 | 0.113 | 33.486 | 33.599 |
| 7 | 0.113 | 83.279 | 83.392 |
| 13 | 0.113 | 158.556 | 158.669 |
| Method | First-success time by service | Aggregate | |||||
| Box | Calendar | Linear | Slack | Recovered | Full | First | |
| Direct (32B) | 89.3 | 138.6 | 86.0 | 91.3 | 98 | 108.0 | 103.1 |
| Schema (32B) | 102.1 | 213.1 | 118.8 | 77.3 | 143 | 143.1 | 131.4 |
| Feedback-Reflective (32B) | 237.0 | 516.1 | 332.6 | 160.8 | 163 | 350.4 | 320.2 |
| Direct | 38.1 | 61.5 | 28.5 | 30.1 | 35 | 40.8 | 40.3 |
| Schema | 39.3 | 68.2 | 33.1 | 30.2 | 66 | 44.8 | 43.6 |
| Method | First-success time by service | Aggregate | |||||
| Box | Calendar | Linear | Slack | Recovered | Full | First | |
| Direct (32B) | 373.9 | 625.1 | 380.6 | 353.7 | 118 | 487.1 | 441.9 |
| Schema (32B) | 398.0 | 928.9 | 519.9 | 300.5 | 167 | 649.8 | 553.9 |
| Feedback-Reflective (32B) | 729.2 | 2154.3 | 1446.5 | 578.2 | 204 | 1528.3 | 1273.3 |
| Direct | 168.9 | 264.2 | 124.9 | 124.8 | 47 | 177.7 | 173.6 |
| Schema | 181.0 | 293.3 | 141.2 | 121.0 | 76 | 197.0 | 187.4 |
| Method | |||||||
| Direct (32B) | 7 32.9 | 12 92.7 | 15 150.2 | 18 218.9 | 20 282.7 | 21 346.5 | 22 408.0 |
| Schema (32B) | 20 40.5 | 30 113.5 | 36 192.0 | 38 274.7 | 39 355.9 | 41 439.2 | 42 520.5 |
| Feedback-Reflective (32B) | 23 92.5 | 41 277.7 | 50 431.3 | 55 602.9 | 55 763.9 | 56 924.0 | 56 1084.8 |
| Direct | 4 13.1 | 4 38.3 | 5 64.2 | 6 90.6 | 6 119.9 | 6 146.8 | 8 171.6 |
| Schema | 9 14.1 | 10 40.3 | 10 69.6 | 10 98.6 | 10 128.1 | 11 157.4 | 13 188.7 |
| Reflective | 6 10.4 | 8 33.7 | 9 57.1 | 10 80.5 | 11 103.6 | 11 126.2 | 11 148.3 |
| Method | |||||||
| Direct (32B) | 9 53.6 | 12 141.0 | 12 236.7 | 13 345.5 | 14 447.0 | 14 549.6 | 14 650.3 |
| Schema (32B) | 20 86.5 | 23 226.6 | 26 384.9 | 29 553.8 | 31 712.4 | 31 880.4 | 31 1048.3 |
| Feedback-Reflective (32B) | 17 186.1 | 20 545.0 | 21 881.3 | 24 1271.1 | 25 1643.4 | 29 2022.7 | 29 2398.2 |
| Direct | 2 20.6 | 2 61.7 | 2 102.3 | 2 143.3 | 2 183.7 | 2 224.4 | 2 265.0 |
| Schema | 7 23.2 | 7 69.3 | 8 115.8 | 9 161.5 | 9 208.2 | 9 254.9 | 9 301.4 |
| Reflective | 6 22.0 | 7 66.8 | 8 112.5 | 10 156.0 | 10 201.1 | 10 246.3 | 10 290.9 |
| Method | |||||||
| Direct (32B) | 10 31.0 | 17 88.4 | 17 146.6 | 17 210.6 | 17 272.8 | 17 336.0 | 17 399.2 |
| Schema (32B) | 22 44.6 | 25 124.8 | 25 209.9 | 25 301.0 | 26 387.3 | 27 476.5 | 27 563.6 |
| Feedback-Reflective (32B) | 30 121.5 | 32 355.9 | 34 594.5 | 34 851.3 | 34 1105.3 | 34 1358.6 | 34 1610.2 |
| Direct | 2 9.7 | 3 28.7 | 3 48.5 | 3 67.3 | 3 86.7 | 3 106.4 | 3 125.8 |
| Schema | 17 11.6 | 18 34.4 | 18 57.3 | 18 80.6 | 18 103.4 | 18 126.9 | 18 149.2 |
| Reflective | 20 11.1 | 20 32.6 | 20 54.2 | 20 75.8 | 20 97.1 | 20 119.0 | 20 140.3 |
| Method | |||||||
| Direct (32B) | 46 37.4 | 57 102.7 | 61 170.4 | 62 245.4 | 64 313.2 | 64 385.8 | 65 454.3 |
| Schema (32B) | 56 34.1 | 65 92.7 | 66 153.0 | 66 218.2 | 66 278.4 | 66 338.5 | 67 399.3 |
| Feedback-Reflective (32B) | 55 67.6 | 70 190.9 | 76 318.1 | 77 456.6 | 81 588.6 | 84 723.5 | 85 852.7 |
| Direct | 24 10.5 | 26 31.5 | 30 53.1 | 32 74.0 | 33 94.7 | 33 115.7 | 34 136.7 |
| Schema | 27 11.7 | 31 31.8 | 33 51.9 | 34 72.8 | 34 93.8 | 35 114.5 | 36 135.1 |
| Reflective | 21 8.8 | 27 27.1 | 28 44.9 | 28 62.3 | 28 78.6 | 29 95.6 | 29 112.8 |
| Service | Episodes | Recovered episodes | Exclusive recoveries | ||
| AR-proposer control | ReCommit | ReCommit only | AR-proposer control only | ||
| Box | 129 | 16 | 23 | 9 | 2 |
| Calendar | 180 | 7 | 9 | 2 | 0 |
| Linear | 156 | 31 | 32 | 3 | 2 |
| Slack | 166 | 53 | 75 | 23 | 1 |
| Total | 631 | 107 | 139 | 37 | 5 |
| Recovered episodes by service | Total recovered | Time | |||||
| Box | Calendar | Linear | Slack | With-P | Without-P | (s) | |
| 4 | 11 | 5 | 29 | 67 | 112 | 110 | 25.99 |
| 8 | 23 | 9 | 32 | 75 | 139 | 128 | 33.60 |
| 12 | 22 | 9 | 29 | 71 | 131 | 92 | 55.20 |
| 16 | 18 | 12 | 26 | 65 | 121 | 71 | 58.37 |
| 20 | 16 | 17 | 27 | 65 | 125 | 62 | 63.44 |