Description
Daily session reset (mode: "daily", atHour: 4 UTC) stopped working after upgrading from OC 4.5 to 4.14. Sessions that were idle 12+ hours are not resetting, and /status never shows 0 context tokens on daily boundary.
Environment
- OpenClaw 2026.4.15 (previously 4.5, then 4.14)
- Discord multi-agent setup (6 agents)
- Heartbeats enabled on all agents (15m to 12h intervals)
- lossless-claw 0.9.1 as context engine
- Default session config (no explicit reset policy)
Expected Behavior
Sessions should reset daily at 4 AM UTC (midnight ET). When reset triggers:
/status should show 0 context tokens
- Session transcript starts fresh
- Context engine (LCM) receives
session_end hook, archives old conversation
This worked correctly on OC 4.5 from Mar 25 through Apr 14. LCM database shows conversation splits every 1-3 days during this period.
Actual Behavior
After upgrading to 4.14 (and persisting through 4.15), sessions never reset:
- Agent sessions persist for 3+ days without resetting
- Agents with 15-min heartbeat intervals (which worked fine on 4.5) no longer reset
/status always shows accumulated context, never drops to 0
Evidence from LCM Database
Same session key agent:main:discord:channel:... has 7 conversations:
- Conv 290: Mar 25 – Apr 8 (reset worked, OC 4.5)
- Conv 681: Apr 8 – Apr 9 (reset worked, OC 4.5)
- Conv 687: Apr 9 – Apr 11 (reset worked, OC 4.5)
- Conv 712: Apr 12 – Apr 14 (reset worked, OC 4.5)
- Conv 726: Apr 14 – Apr 17 (never reset, OC 4.14+)
- Conv 751: Apr 17 – now (created by volume swap, not daily reset)
Resets clearly stopped on Apr 14 when OC 4.14 was installed.
Related Issues
Likely Root Cause
The session init path in 4.14+ calls mergeSessionEntry which sets updatedAt = Math.max(..., Date.now()) before evaluateSessionFreshness() checks whether entry.updatedAt < dailyResetAt. Since updatedAt is already "now", the session is never stale.
This appears to be a regression — OC 4.5 either checked freshness before bumping updatedAt, or used a different code path for the daily check.
Description
Daily session reset (mode: "daily", atHour: 4 UTC) stopped working after upgrading from OC 4.5 to 4.14. Sessions that were idle 12+ hours are not resetting, and
/statusnever shows 0 context tokens on daily boundary.Environment
Expected Behavior
Sessions should reset daily at 4 AM UTC (midnight ET). When reset triggers:
/statusshould show 0 context tokenssession_endhook, archives old conversationThis worked correctly on OC 4.5 from Mar 25 through Apr 14. LCM database shows conversation splits every 1-3 days during this period.
Actual Behavior
After upgrading to 4.14 (and persisting through 4.15), sessions never reset:
/statusalways shows accumulated context, never drops to 0Evidence from LCM Database
Same session key
agent:main:discord:channel:...has 7 conversations:Resets clearly stopped on Apr 14 when OC 4.14 was installed.
Related Issues
updatedAtbumped before freshness checkLikely Root Cause
The session init path in 4.14+ calls
mergeSessionEntrywhich setsupdatedAt = Math.max(..., Date.now())beforeevaluateSessionFreshness()checks whetherentry.updatedAt < dailyResetAt. SinceupdatedAtis already "now", the session is never stale.This appears to be a regression — OC 4.5 either checked freshness before bumping
updatedAt, or used a different code path for the daily check.