From f5be6b5cd95920e193cf02cdcb84149c8922e27a Mon Sep 17 00:00:00 2001 From: Wesley Simplicio Date: Fri, 12 Jun 2026 10:59:46 -0300 Subject: [PATCH 1/3] fix(mcp): reduce OAuth probe poll timeout from 30s to 5s (#44866) --- agent/google_oauth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/google_oauth.py b/agent/google_oauth.py index 9eb55ec19dc3..433689ef0f24 100644 --- a/agent/google_oauth.py +++ b/agent/google_oauth.py @@ -131,7 +131,7 @@ TOKEN_REQUEST_TIMEOUT_SECONDS = 20.0 CALLBACK_WAIT_SECONDS = 300 -LOCK_TIMEOUT_SECONDS = 30.0 +LOCK_TIMEOUT_SECONDS = 5.0 # Headless env detection _HEADLESS_ENV_VARS = ("SSH_CONNECTION", "SSH_CLIENT", "SSH_TTY", "HERMES_HEADLESS") From 137422f194881b57ef9e9f62bc51b53aa643d4a4 Mon Sep 17 00:00:00 2001 From: Wesley Simplicio Date: Fri, 12 Jun 2026 10:59:50 -0300 Subject: [PATCH 2/3] fix(logging): catch PermissionError in Windows log rotation (#44873) --- hermes_logging.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hermes_logging.py b/hermes_logging.py index eee46af37f9c..baadeec0e1b0 100644 --- a/hermes_logging.py +++ b/hermes_logging.py @@ -467,7 +467,14 @@ def _open(self): return stream def doRollover(self): - super().doRollover() + try: + super().doRollover() + except PermissionError: + # Windows: another process may hold a lock on the log file, + # causing rename/delete to fail with PermissionError. Rather + # than crashing the process, skip rotation — the existing file + # remains open and logging continues uninterrupted. + return self._chmod_if_managed() # Our own rollover writes a new baseFilename; refresh the snapshot # so the next emit doesn't mistake it for external rotation. From 2c3f6332e94708a20ecede118769b57c66170767 Mon Sep 17 00:00:00 2001 From: Wesley Simplicio Date: Fri, 12 Jun 2026 11:00:49 -0300 Subject: [PATCH 3/3] fix(whatsapp): reduce text batch debounce from 5s to 1s (#44883) --- gateway/platforms/whatsapp.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gateway/platforms/whatsapp.py b/gateway/platforms/whatsapp.py index d833d5649a22..82ffef896872 100644 --- a/gateway/platforms/whatsapp.py +++ b/gateway/platforms/whatsapp.py @@ -296,16 +296,16 @@ def __init__(self, config: PlatformConfig): # WhatsApp often delivers multiple messages in rapid succession # (e.g. forwarded batches, paste-splits) — without debounce each # message triggers a separate agent invocation, wasting tokens and - # flooding the user with reply fragments. Default 5s delay / - # 10s split delay are conservative for WhatsApp's delivery cadence. + # flooding the user with reply fragments. Default 1s delay / + # 3s split delay are conservative for WhatsApp's delivery cadence. # Tunable via config.yaml under # ``gateway.platforms.whatsapp.extra.text_batch_delay_seconds`` / # ``text_batch_split_delay_seconds``. self._text_batch_delay_seconds = self._coerce_float_extra( - "text_batch_delay_seconds", 5.0 + "text_batch_delay_seconds", 1.0 ) self._text_batch_split_delay_seconds = self._coerce_float_extra( - "text_batch_split_delay_seconds", 10.0 + "text_batch_split_delay_seconds", 3.0 ) self._pending_text_batches: Dict[str, MessageEvent] = {} self._pending_text_batch_tasks: Dict[str, asyncio.Task] = {}