From e37826712bacba8c75761560dbdef9d334b4c508 Mon Sep 17 00:00:00 2001 From: SeungJong Ha Date: Tue, 2 Sep 2025 05:35:40 +0000 Subject: [PATCH 1/2] fix: change run bash in non-login mode --- src/minisweagent/environments/docker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/minisweagent/environments/docker.py b/src/minisweagent/environments/docker.py index 740d7c3c..311dbe4c 100644 --- a/src/minisweagent/environments/docker.py +++ b/src/minisweagent/environments/docker.py @@ -82,7 +82,7 @@ def execute(self, command: str, cwd: str = "") -> dict[str, Any]: cmd.extend(["-e", f"{key}={value}"]) for key, value in self.config.env.items(): cmd.extend(["-e", f"{key}={value}"]) - cmd.extend([self.container_id, "bash", "-lc", command]) + cmd.extend([self.container_id, "bash", "-c", command]) result = subprocess.run( cmd, From e56f5cf020c8c340a4b272d895a1f6f0eaa03317 Mon Sep 17 00:00:00 2001 From: SeungJong Ha Date: Thu, 16 Oct 2025 11:16:53 +0000 Subject: [PATCH 2/2] add non-login shell option --- src/minisweagent/config/extra/swebench.yaml | 1 + src/minisweagent/environments/docker.py | 12 +++++++++++- src/minisweagent/run/extra/swebench.py | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/minisweagent/config/extra/swebench.yaml b/src/minisweagent/config/extra/swebench.yaml index 1c714799..8004768c 100644 --- a/src/minisweagent/config/extra/swebench.yaml +++ b/src/minisweagent/config/extra/swebench.yaml @@ -222,6 +222,7 @@ environment: PIP_PROGRESS_BAR: 'off' TQDM_DISABLE: '1' environment_class: docker + use_login_shell: false model: model_name: "anthropic/claude-sonnet-4-5-20250929" diff --git a/src/minisweagent/environments/docker.py b/src/minisweagent/environments/docker.py index edfda586..b0ae6a6e 100644 --- a/src/minisweagent/environments/docker.py +++ b/src/minisweagent/environments/docker.py @@ -31,6 +31,8 @@ class DockerEnvironmentConfig: """Max duration to keep container running. Uses the same format as the sleep command.""" pull_timeout: int = 120 """Timeout in seconds for pulling images.""" + use_login_shell: bool = True + """Whether to use a login shell when executing commands. Current SWE-bench testset should disable this option.""" class DockerEnvironment: @@ -84,7 +86,15 @@ def execute(self, command: str, cwd: str = "", *, timeout: int | None = None) -> cmd.extend(["-e", f"{key}={value}"]) for key, value in self.config.env.items(): cmd.extend(["-e", f"{key}={value}"]) - cmd.extend([self.container_id, "bash", "-c", command]) + cmd.extend( + [ + self.container_id, + "bash", + ] + ) + if self.config.use_login_shell: + cmd.append("-l") + cmd.extend(["-c", command]) result = subprocess.run( cmd, diff --git a/src/minisweagent/run/extra/swebench.py b/src/minisweagent/run/extra/swebench.py index b252fed9..47255ae8 100644 --- a/src/minisweagent/run/extra/swebench.py +++ b/src/minisweagent/run/extra/swebench.py @@ -230,6 +230,9 @@ def main( config.setdefault("model", {})["model_name"] = model if model_class is not None: config.setdefault("model", {})["model_class"] = model_class + # SWE-bench images are built for non-login shells (checked on 2025-10-16) + if "use_login_shell" not in config.get("environment", {}): + config.setdefault("environment", {})["use_login_shell"] = False progress_manager = RunBatchProgressManager(len(instances), output_path / f"exit_statuses_{time.time()}.yaml")