From 4cb405399382b01e417eedd648ca6d1baf6ef775 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 26 Feb 2026 20:55:36 +0100 Subject: [PATCH] fix: complete sessionKey forwarding for message:sent hook (#27584) (thanks @qualiobra) --- CHANGELOG.md | 1 + src/gateway/server-restart-sentinel.ts | 1 + src/infra/session-maintenance-warning.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c86c6a3c340..25f988bc4f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Docs: https://docs.openclaw.ai ### Fixes - TUI/stream assembly: preserve streamed text across real tool-boundary drops without keeping stale streamed text when non-text blocks appear only in the final payload. Landed from contributor PR #27711 by @scz2011. (#27674) +- Hooks/Internal `message:sent`: forward `sessionKey` on outbound sends from agent delivery, cron isolated delivery, gateway receipt acks, heartbeat sends, session-maintenance warnings, and restart-sentinel recovery so internal `message:sent` hooks consistently dispatch with session context. Landed from contributor PR #27584 by @qualiobra. Thanks @qualiobra. - Models/MiniMax auth header defaults: set `authHeader: true` for both onboarding-generated MiniMax API providers and implicit built-in MiniMax (`minimax`, `minimax-portal`) provider templates so first requests no longer fail with MiniMax `401 authentication_error` due to missing `Authorization` header. Landed from contributor PRs #27622 by @riccoyuanft and #27631 by @kevinWangSheng. (#27600, #15303) - Pi image-token usage: stop re-injecting history image blocks each turn, process image references from the current prompt only, and prune already-answered user-image blocks in stored history to prevent runaway token growth. (#27602) - BlueBubbles/SSRF: auto-allowlist the configured `serverUrl` hostname for attachment fetches so localhost/private-IP BlueBubbles setups are no longer false-blocked by default SSRF checks. Landed from contributor PR #27648 by @lailoo. (#27599) Thanks @taylorhou for reporting. diff --git a/src/gateway/server-restart-sentinel.ts b/src/gateway/server-restart-sentinel.ts index 454657d188d..bbbd506b772 100644 --- a/src/gateway/server-restart-sentinel.ts +++ b/src/gateway/server-restart-sentinel.ts @@ -95,6 +95,7 @@ export async function scheduleRestartSentinelWake(_params: { deps: CliDeps }) { payloads: [{ text: message }], agentId: resolveSessionAgentId({ sessionKey, config: cfg }), bestEffort: true, + sessionKey, }); } catch (err) { enqueueSystemEvent(`${summary}\n${String(err)}`, { sessionKey }); diff --git a/src/infra/session-maintenance-warning.ts b/src/infra/session-maintenance-warning.ts index 804b419ed3a..081b5c3a4fb 100644 --- a/src/infra/session-maintenance-warning.ts +++ b/src/infra/session-maintenance-warning.ts @@ -104,6 +104,7 @@ export async function deliverSessionMaintenanceWarning(params: WarningParams): P threadId: target.threadId, payloads: [{ text }], agentId: resolveSessionAgentId({ sessionKey: params.sessionKey, config: params.cfg }), + sessionKey: params.sessionKey, }); } catch (err) { log.warn(`Failed to deliver session maintenance warning: ${String(err)}`);