Google Researchers Unveil EnvHarness to Turn Static Agent Environments into Adaptive Training Worlds
Google Cloud AI and university researchers released EnvHarness, a programmable layer that wraps static agent environments to adapt them for policy training, improving skill gains by up to 9 points.
The development responds to a limitation in current LLM agent training: environments are hand-built and frozen, behaving identically regardless of the agent or its skill level. They cannot target a policy's weaknesses and stop teaching once solved. Conventional approaches generate new environments, but those pipelines are domain-specific and rely on LLM-written verifiers that require heavy over-generation and filtering. EnvHarness instead inverts the process by using an LLM designer called EnvRigger to automatically write wrapper components based on flaws diagnosed from policy rollouts.
The system ships with three composable components: Stage replays a fixed action list after reset to start episodes elsewhere; Contract installs per-step hooks to block actions, rewrite responses, or truncate observations; Chain composes a second environment into the same episode under a shared step budget. EnvRigger runs four stages—observing baseline rollouts, diagnosing flaws, writing Python components, and validating—rejecting unsolvable or trivially solvable candidates, with up to five revision rounds per task.
In tests across ALFWorld, WebArena, SWE-bench Verified, OfficeQA, and SpreadsheetBench, skills mined with EnvHarness gained up to 9.0 points on held-out tasks. ALFWorld average rose from 62.4 to 68.3 against original-environment skills, with a 9.0-point gain on the out-of-distribution split. On SWE-bench Verified, the resolved rate increased from 49.88 to 52.58 while average steps dropped from 55.01 to 49.61, a 9.8% efficiency improvement. Against domain-specific generators, EnvHarness outperformed SWE-smith by 2.46 points with 5.11 fewer steps.
Deployment requires a resettable environment, which rules out live user accounts and physical robots. A new benchmark joins by implementing one interface—reset, step, observe, evaluate, get_env_state, save_state, from_state—with no downstream changes.