Agent^2 RL-Bench: Can LLM Agents Engineer Agentic RL Post-Training?
Organizations: Soochow University · Microsoft Research Asia · Stony Brook University · Peking University ·
Abstract
We introduce Agent2 RL-Bench, a compact diagnostic benchmark for evaluating agentic RL post-training, which tests whether LLM agents can autonomously design, implement, debug, and execute post-training pipelines that improve foundation models. RL post-training increasingly drives model alignment and specialization, yet existing benchmarks are largely static, rewarding supervised fine-tuning or script generation without assessing an agent's ability to close an interactive RL loop. Agent2 RL-Bench provides a unified agent-facing interface: each run starts from an isolated workspace containing a base model, task data, instructions, and a grading API, and agents must iterate within a fixed budget by training models and submitting artifacts for evaluation. The benchmark spans six tasks across three levels, from static rule-based training to judge-based optimization and closed-loop online RL with trajectory collection. Two diagnostic skills, namely runtime recording and post-hoc summarization, enable structured analysis of agent behavior, facilitating smooth and effective iteration of the benchmark's evaluation framework. Across five agent systems and six driver LLMs, agents show intelligent behavior but clear limitations: one RL-oriented run improves ALFWorld from 4.85 to 93.28 via SFT warm-up and GRPO with online rollouts, yet DeepSearchQA remains difficult, most successful routes rely on supervised pipelines, and interactive outcomes show large single-run differences across agent stacks. Overall, Agent2 RL-Bench shows that current agents can sometimes engineer online RL, but stable agent-driven RL post-training remains rare under fixed budgets. It also demonstrates that our benchmark provides a strong and effective evaluation framework for future research in this direction. Code is available at https://github.com/microsoft/RD-Agent/blob/main/rdagent/scenarios/rl/autorl_bench/README.md
Figures & tables
| Level | Type | Benchmark | Reward | Horizon |
|---|---|---|---|---|
| L1 | Static rule-based | GSM8K | Rule-based | Short |
| L1 | Static rule-based | HumanEval | Rule-based | Short |
| L2 | Static judge-based | AlpacaEval 2.0 | LLM judge | Short |
| L3 | Interactive rollout | ALFWorld | Sparse binary | Long |
| L3 | Interactive rollout | WebShop | Dense continuous | Long |
| L3 | Interactive rollout | DeepSearchQA | Judge-based | Medium |
| L1: Static Rule | L2: Judge | L3: Interactive Rollout | |||||
| System | Driver | GSM8K | HumanEval | AlpacaEval | ALFWorld | WebShop | DeepSearchQA |
| Panel A: Qwen2.5-7B-Instruct (scaffold comparison; Claude Code mode-swept) | |||||||
| Baseline | N/A | 77.70 | 75.61 | 18.90 | 4.85 | 69.00 | 11.75 |
| OpenHands | GPT-5.4 | 81.24 (+3.54) | 78.05 (+2.44) | 18.77 ( 0.13) | 9.41 (+4.56) | 40.00 ( 29.00) | 7.80 ( 3.95) |
| OpenCode | GPT-5.4 | 82.27 (+4.57) | 79.27 (+3.66) | 20.33 (+1.43) | 19.33 (+14.48) | 54.50 ( 14.50) | 21.00 (+9.25) |
| Claude Code | Opus 4.6 | 85.06 (+7.36) | 81.71 (+6.10) | 30.76 (+11.86) | 95.52 (+90.67) | 84.00 (+15.00) | 15.00 (+3.25) |
| Mode | GSM8K | HumanEval | AlpacaEval | ALFWorld | WebShop | DeepSearchQA |
|---|---|---|---|---|---|---|
| 7B-Instruct | ||||||
| Baseline | 77.70 | 75.61 | 18.90 | 4.85 | 69.00 | 11.75 |
| SFT-only | 84.00 (+6.30) | 81.71 (+6.10) | 21.32 (+2.42) | 67.91 (+63.06) | 76.00 (+7.00) | 14.00 (+2.25) |
| RL-oriented | 81.88 (+4.18) | 81.71 (+6.10) | 20.96 (+2.06) | 93.28 (+88.43) | 79.00 (+10.00) | 15.00 (+3.25) |
| Free | 82.26 (+4.56) | 79.27 (+3.66) | 30.76 (+11.86) | 95.52 (+90.67) | 84.00 (+15.00) | 13.00 (+1.25) |
| Multi | 85.06 (+7.36) | 75.61 (0.00) | 19.54 (+0.64) | 13.43 (+8.58) | 79.00 (+10.00) | 11.50 ( 0.25) |
Appendix figures & tables21 assets
Supplementary material from the paper’s appendix.
Appendix
| Benchmark | Capability | Interaction | Reward | Horizon |
|---|---|---|---|---|
| GSM8K | 2 | 1 | 1 | 1 |
| HumanEval | 2 | 1 | 1 | 1 |
| AlpacaEval | 2 | 1 | 4 | 1 |
| ALFWorld | 4 | 5 | 2 | 5 |
| WebShop | 4 | 5 | 5 | 5 |
| DeepSearchQA | 5 | 4 | 4 | 3 |
| Task | Structure | Evaluator Type | Reward Source | Eval Size | Horizon | Primary Difficulty |
|---|---|---|---|---|---|---|
| GSM8K | Static rule-based | OpenCompass | Exact-match answer check | standard test split | Short | reasoning-to-training transfer |
| HumanEval | Static rule-based | OpenCompass | unit-test execution | 82 held-out / 82 train-visible | Short | code-generation post-training |
| AlpacaEval 2.0 | Static judge-based | LLM judge | pairwise preference judging | reference split | Short | non-programmable reward |
| ALFWorld | Interactive rollout | environment evaluator | sparse success reward | 134 episodes | Long | rollout and trajectory collection |
| WebShop | Interactive rollout | environment evaluator | task-specific dense reward | 100 instructions | Long | reward shaping and stability |
| DeepSearchQA | Interactive tool-use | custom ReAct evaluator | search-and-judge loop | 200 samples | Medium | tool use, search, and judged QA |
| Metric Type | Definition |
|---|---|
| Benchmark-native outputs | baseline score, per-submission score, best score, improvement over baseline, submission count, runtime metadata |
| Process metrics | valid-submission rate, time to first improvement, time to best, score trajectory, time-used ratio, last-submit gap |
| Offline diagnostics | route labels, coding-success indicators, case-study inspection, trace-based interpretation |
| Dimension | Configuration |
|---|---|
| 7B Main Scaffold Comparison | |
| Agents | OpenHands, OpenCode, Claude Code |
| Driver models | GPT-5.4 (OH/OC), Claude Opus 4.6 (CC) |
| Base model | Qwen2.5-7B-Instruct |
| Time budget | 12h single run per system/task/mode where applicable |
| CC modes | SFT-only, RL-oriented, Free, Multi |
| Route | Operational definition |
|---|---|
| GRPO | train.py contains explicit GRPO-style training components |
| PPO | train.py contains explicit PPO-style training components |
| SFT-only | train.py contains supervised fine-tuning components but no explicit RL trainer |
| SFT+RL | train.py contains both supervised and RL-style training components |
| Copy | the run copies or reuses the base model without substantive training logic |
| Placeholder / Missing | the training script is absent or effectively a placeholder rather than executable training code |
| Rule category | Implemented behavior |
|---|---|
| Test-set isolation | Held-out evaluation data are not mounted into the agent workspace. Agents only receive training-visible data and task descriptions. |
| Submission interface | Scores are produced only through the grading server. Agents cannot directly overwrite leaderboard files or final result tables. |
| Baseline reuse | Trivial submission of the untouched base model is treated as non-improving behavior and maps back to baseline performance. |
| Artifact logging | Each run stores score trajectories, run metadata, and workspace artifacts for later inspection. |
| Evaluator serialization | Heavyweight evaluation is serialized within a run to reduce contention and make score traces easier to audit. |
| Path-based caching | Identical submissions may be cached by resolved path and file-modification state to avoid repeated redundant evaluation, without changing the best-score semantics. |
| Failure type | Typical task | Observable symptom | Main audit artifact |
|---|---|---|---|
| Rollout construction failure | ALFWorld, WebShop | The run produces training code, but the environment loop is incomplete, brittle, or never yields a usable trajectory set. | train.py , task-specific eval.py , missing or degenerate submissions |
| Reward/data design failure | WebShop, DeepSearchQA | The run implements non-trivial collection and training logic, yet the resulting data or reward signal is too sparse, brittle, or misaligned to improve performance. | Generated training script, score trajectory, failure notes in summary.md |
| Training collapse / instability | WebShop, ALFWorld | Early submissions exist, but later iterations regress or fail during model loading, runtime startup, or evaluation. | scores.json , run logs, final workspace artifacts |
| Early coding failure | All tasks, especially weaker-model settings | The run terminates before producing substantive training code or a valid submission. | Missing or placeholder train.py , zero-submission runs |
| Static shortcut without transfer | GSM8K, HumanEval versus L3 tasks | The scaffold can assemble a workable static SFT/RL route, but the same competence does not carry over once interactive rollout becomes mandatory. | Cross-task comparison of route labels, submissions, and improvements |
| Task | Mode | Subs | Code | Models | Zero% | Best@Sub | Primary Strategies |
|---|---|---|---|---|---|---|---|
| GSM8K | SFT | 92 | 14 | 146 | 20% | #90 | SFT, model soup, seed sweep |
| HumanEval | SFT | 195 | 28 | 336 | 23% | #26 | SFT, model averaging, task arithmetic |
| AlpacaEval | Free | 23 | 11 | 47 | 0% | #23 | SFT DPO, synthetic preference gen. |
| ALFWorld | Free | 4 | 4 | 5 | 0% | #4 | Demonstration SFT (env. interaction) |
| WebShop | Free | 16 | 4 | 20 | 19% | #13 | Trajectory collection SFT |
| DeepSearchQA | Free | 145 | 47 | 285 | 0% | #39 | DPO, GRPO, KTO, SLERP, RFT |
| Parameter | Under-fit | Sweet spot | Over-fit |
|---|---|---|---|
| Learning rate | 5e-5 10.5 | 1e-4 11 to 13 | 2e-4 4.0 |
| LoRA rank | 16 10.5 | 32 11 to 13 | 64 4.0 to 7.5 |
| Epochs | 2 10.5 | 3 to 4 11 to 13 | 5+ 6.5 |
| Training loss | 1.5 | 1.1 to 1.2 | 0.5 |
| Mode | GSM8K | HE | AE | ALF | WS | DSQA |
|---|---|---|---|---|---|---|
| SFT-only | 84.00 | 81.71 | 21.32 | 67.91 | 76.00 | 14.00 |
| RL-oriented | 81.88 | 81.71 | 20.96 | 93.28 | 79.00 | 15.00 |
| Free | 82.26 | 79.27 | 30.76 | 95.52 | 84.00 | 13.00 |
| Multi | 85.06 | 75.61 | 19.54 | 13.43 | 79.00 | 11.50 |
| Task | RL Methods Tried | Stable? | Best Pipeline |
|---|---|---|---|
| GSM8K | GRPO ( 15 variants) | Partial | SFT + model soup |
| HumanEval | GRPO, DPO, RFT | No | SFT + model averaging |
| AlpacaEval | GRPO, DPO ( 31) | Yes (DPO) | SFT DPO |
| ALFWorld | GRPO + online rollout | Yes | SFT GRPO (RL-oriented) |
| WebShop | DPO, ORPO, KTO | Partial | Traj. collection SFT |
| DeepSearchQA | DPO, GRPO, KTO, ORPO | Partial | SFT DPO pipeline |
| Mode | GSM8K | HumanEval | AlpacaEval | ALFWorld | WebShop | DSQA |
|---|---|---|---|---|---|---|
| Free | 74.00 | 84.15 | 26.91 | 97.76 | 78.00 | 23.00 |
| Multi | 80.97 | 60.98 | 10.33 | 85.82 | 13.00 | 7.00 |
| Baseline | 83.02 | 62.20 | 14.68 | 8.96 | 0.00 | 12.25 |
| L1: Static Rule | L2: Judge | L3: Interactive Rollout | |||||
|---|---|---|---|---|---|---|---|
| Scaffold | Driver | GSM8K ( ) | HumanEval ( ) | AlpacaEval ( ) | ALFWorld ( ) | WebShop ( ) | DSQA ( ) |
| N/A | Baseline | 83.02 | 62.20 | 14.68 | 8.96 | 0.00 | 12.25 |
| Claude Code | Opus 4.6 | 88.78 ( +5.76 ) | 84.15 ( +21.95 ) | 26.91 ( +12.23 ) | 97.76 ( +88.80 ) | 78.00 ( +78.00 ) | 23.00 ( +10.75 ) |
| Claude Code | Sonnet 4.5 | 88.70 ( +5.68 ) | 65.85 ( +3.65 ) | 19.80 ( +5.12 ) | 15.67 ( +6.71 ) | 68.00 ( +68.00 ) | 18.50 ( +6.25 ) |
| Codex CLI | GPT-5.4 | 84.00 ( +0.98 ) | 72.25 ( +10.05 ) | 22.82 ( +8.14 ) | 90.93 ( +81.97 ) | 57.00 ( +57.00 ) | 21.00 ( +8.75 ) |
| Codex CLI | GPT-5.2 | 89.46 ( +6.44 ) | 69.51 ( +7.31 ) | 18.67 ( +3.99 ) | 87.31 ( +78.35 ) | 75.00 ( +75.00 ) | 12.00 ( 0.25 ) |
| Dimension | Claude Code | Codex |
|---|---|---|
| Driver LLM | Claude Opus 4.6 | GPT-5.4 |
| Submissions | 16 | 56 |
| Iteration style | lower-frequency, more selective | higher-frequency, broader search |
| Best | +10.75 | +8.75 |
| Method | Attempted cells | Adopted in best | Adoption rate |
|---|---|---|---|
| SFT (plain) | 19 | 18 | 95% |
| Model merging | 11 | 4 | 36% |
| RFT | 5 | 3 | 60% |
| GRPO | 8 | 2 | 25% |
| DPO | 4 | 1 | 25% |
| KTO / ORPO | 3 | 0 | 0% |
| Sub # | Script | Score | Method |
|---|---|---|---|
| baseline | N/A | 62.20% | Qwen3-8B-Base (unaligned) |
| #3 | sft_train.py | 2.44% | SFT v1 |
| #5 | sft_train_v3.py | 43.90% | SFT v3 (prompt alignment) |
| #7 | grpo_train.py | 79.27% | GRPO on SFT checkpoint (LoRA) |
| #11 | rft_train.py | 84.15% | RFT (rejection sampling fine-tuning) |
| Sub # | Script | Score | Method |
|---|---|---|---|
| baseline | N/A | 8.96% | Qwen3-8B-Base (unaligned) |
| #1 | train_sft.py | 14.93% | SFT v1: ReAct examples |
| #2 | train_sft_v2.py | 16.42% | Hyperparameter tuning |
| #4 | train_sft_v4.py | 19.40% | Action format alignment ( put move ) + synthetic data |
| #5 | train_sft_v5.py | 45.52% | Model rollout trajectories (+26.1pp) |
| #7 | train_sft_v7.py | 95.52% | Prompt format alignment (+50.0pp) |
Agentic RL
Agentic reinforcement learning trains AI agents to plan, use tools, and adapt through feedback from multi-step interactions.
See all 215 papers