Skip to content

[Bug]: Daily session reset stopped working in 4.14+ (regression from 4.5) #68315

Description

@maxatv

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:

  1. /status should show 0 context tokens
  2. Session transcript starts fresh
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    close:duplicateClosed as duplicateduplicateThis issue or pull request already exists

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions