fix(cli): handle closed stdout ValueError in safe print paths (#3843)

When stdout is closed (piped to a dead process, broken terminal),
Python raises ValueError('I/O operation on closed file'), not OSError.
_safe_print and the API error printer only caught OSError, letting the
ValueError propagate and crash the agent.

Salvaged from PR #3760 by @apexscaleai. Fixes #3534.

Co-authored-by: apexscaleai <apexscaleai@users.noreply.github.com>
This commit is contained in:
Teknium
2026-03-29 18:21:27 -07:00
committed by GitHub
parent ca4907dfbc
commit 2a0e8b001f

View File

@@ -1285,7 +1285,7 @@ class AIAgent:
try:
fn = self._print_fn or print
fn(*args, **kwargs)
except OSError:
except (OSError, ValueError):
pass
def _vprint(self, *args, force: bool = False, **kwargs):
@@ -7909,7 +7909,7 @@ class AIAgent:
error_msg = f"Error during OpenAI-compatible API call #{api_call_count}: {str(e)}"
try:
print(f"{error_msg}")
except OSError:
except (OSError, ValueError):
logger.error(error_msg)
if self.verbose_logging: