Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| sandbox_id, | ||
| cmd, | ||
| timeout=self.env._compute_install_wait_seconds(), | ||
| timeout=self.env.max_startup_wait_seconds, |
There was a problem hiding this comment.
Pip install timeout no longer scales with packages
Low Severity
The removed _compute_install_wait_seconds() scaled the pip install timeout based on the number of packages (30s per package, minimum max_startup_wait_seconds). Now using the flat max_startup_wait_seconds (default 120s) means environments with many pip_install_packages (5+) may time out during installation where they previously succeeded.
There was a problem hiding this comment.
If somebody installs that many packages, they know what they're doing, and should be able to simply increase the max_startup_wait_seconds..


Description
**kwargsor had noremaining use case (
interception_host,interception_port,interception_url,execution_backend,context_key,sandbox_start_command,sandbox_client_max_workers,root_tool_serialization,stagger/jitterparams, etc.)_InterceptionPoolsingleton and all shared-pool branching — eachRLMEnvinstance now ownsits own interception server and tunnel (this undoes a recent change by myself which was poorly motivated and thought through)
max_turns: int = 50constructor param (previously inherited a default of 10 fromStatefulToolEnv, easily lost via**kwargs)sub_tool_max_turns→sub_llm_max_turnsfor consistency withmax_sub_llm_parallelismand thesub_llm_*metric namesinterception_port=0(OS-assigned) andbind_host="127.0.0.1"— the old configurability onlymattered for the now-removed pool
Note: requires small changes to the -rlm environments.
Type of Change
Testing
uv run pytestlocally.Checklist
Note
High Risk
Breaking API changes remove/rename multiple
RLMEnvconstructor args and change interception/tunnel lifecycle to be per-instance (no shared pool), which can affect rollout networking and resource usage. Touches sandbox execution, proxy routing, and sub-LLM timeouts, so regressions could impact core execution paths.Overview
Simplifies
RLMEnvconfiguration and removes shared interception infrastructure. The constructor is pared down (adds explicitmax_turns, renamessub_tool_max_turnstosub_llm_max_turns, removesmax_iterationsand many other knobs), and context ingestion is now fixed toinfo["context_dir"]/info["context"](drops configurable keys).Interception/tunnel logic is simplified by deleting
_InterceptionPooland related branching: eachRLMEnvnow owns its own aiohttp interception server and Prime Tunnel, withinterception_portalways ephemeral and bind host fixed to127.0.0.1(tests use a private_interception_url_overrideto skip tunneling).Sub-LLM execution is streamlined: removes stagger/jitter delays, collapses sub-LLM timeouts to a single
sub_llm_timeoutderived fromcode_execution_timeout, and hardcodes root-tool serialization to pickle (removesserializationhandling). Context directory copy now enforces a fixed 1GB limit internally (removes configurablefilesystem_copy_max_bytes). Docs and tests are updated accordingly, including removal of_InterceptionPooltests and updated fixtures/expectations.Written by Cursor Bugbot for commit 9e27e18. This will update automatically on new commits. Configure here.