#reset is not occuring as set in openclaw.json
1 messages Β· Page 1 of 1 (latest)
That config looks valid, but there are 3 easy gotchas here:
dmScopeonly affects DMs. It does not affect a Discord channel/thread like this one.- Daily reset is lazy, not proactive. OpenClaw creates a new session on the next message after the reset boundary, it does not clear the thread exactly at 1:00 by itself.
atHouris based on the gateway hostβs local timezone, not Discord time / your local browser time.
Also, config changes need a gateway restart.
So the quick sanity check is:
openclaw --version
openclaw gateway restart
openclaw status --all
Then test it like this:
- wait until after 1:00 on the gateway host
- send a new message in the same thread
- that next message should start a fresh
sessionId
Docs:
- https://docs.openclaw.ai/concepts/session
- https://docs.openclaw.ai/reference/session-management-compaction
- https://docs.openclaw.ai/gateway/configuration-reference
If you paste:
openclaw --version- the host timezone
openclaw status --all
I can help narrow down whether itβs timezone, restart, or a bug.
version is v2026.4.14, I've done plenty of gateway restarts. I did do a manual /new since. So this should happen as I said at 1:00 am, other crons occur after that. I generally check in with my bot in discord after those crons run, but it is never reset. Anyway isn't creating a fresh session id, here is the status --all:
Overview
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Item β Value β
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β OS β linux 6.12.75+rpt-rpi-2712 (arm64) Β· node 22.22.2 β
β Dashboard β http://127.0.0.1:18789/ β
β Tailscale β off β
β Channel β stable (default) β
β Update β pnpm Β· up to date Β· npm latest 2026.4.15 β
β Gateway β local Β· ws://127.0.0.1:18789 (local loopback) Β· reachable 59ms Β· auth token Β· rpi5 (10.0.4. β
β β 22) app 2026.4.15 linux 6.12.75+rpt-rpi-2712 β
β Gateway self β rpi5 (10.0.4.22) app 2026.4.15 linux 6.12.75+rpt-rpi-2712 β
β Gateway service β systemd installed Β· enabled Β· running (pid 2846262, state active) β
β Node service β systemd not installed β
β Agents β 2 Β· no bootstrap files Β· sessions 27 Β· default main active 7m ago β
β Memory β 88 files Β· 166 chunks Β· sources memory Β· plugin memory-core Β· vector ready Β· fts ready Β· β
β β cache on (271) β
β Plugin compatibility β none β
β Probes β skipped (use --deep) β
β Events β none β
β Tasks β 0 active Β· 0 queued Β· 0 running Β· 7 issues Β· audit 61 warn Β· 69 tracked β
β Heartbeat β disabled (main), 60m (heartbeat) β
β Sessions β 27 active Β· default glm-5.1 (205k ctx) Β· 2 stores β
ββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Channels
ββββββββββββ¬ββββββββββ¬βββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Channel β Enabled β State β Detail β
ββββββββββββΌββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Discord β ON β OK β token config (MTQ3β¦Iu7U Β· len 72) Β· accounts 1/1 β
β WhatsApp β ON β OK β linked Β· +15016665470 Β· auth 3m ago Β· accounts 1 β
ββββββββββββ΄ββββββββββ΄βββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Sessions
βββββββββββββββββββββββββββββββββββββββββββ¬βββββββββ¬ββββββββββ¬βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ
β Key β Kind β Age β Model β Tokens β
βββββββββββββββββββββββββββββββββββββββββββΌβββββββββΌββββββββββΌβββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ€
β agent:main:discord:channel:1480β¦ β group β 7m ago β glm-5.1 β 28k/205k (14%) Β· ποΈ 62% cached β
β agentπmain:heartbeat β direct β 53m ago β gemini-3-flash-preview β 7.7k/16k (47%) β
β agent:main:main β direct β 3h ago β glm-5.1 β 19k/205k (9%) Β· ποΈ 12% cached β
β agent:main:cron:6ed252ce-7070-4β¦ β direct β 5h ago β gemini-3-flash-preview β 7.6k/205k (4%) Β· ποΈ 36% cached β
β agent:main:cron:6ed252ce-7070-4β¦ β direct β 5h ago β gemini-3-flash-preview β 7.6k/205k (4%) Β· ποΈ 36% cached β
β agent:main:cron:c7f3fb10-49ec-4β¦ β direct β 7h ago β gemini-3-flash-preview β 13k/205k (6%) Β· ποΈ 51% cached β
β agent:main:cron:c7f3fb10-49ec-4β¦ β direct β 7h ago β gemini-3-flash-preview β 13k/205k (6%) Β· ποΈ 51% cached β
β agent:main:cron:1ecc38f4-b3b6-4β¦ β direct β 8h ago β gemini-3-flash-preview β 32k/205k (15%) Β· ποΈ 59% cached β
β agent:main:cron:1ecc38f4-b3b6-4β¦ β direct β 8h ago β gemini-3-flash-preview β 32k/205k (15%) Β· ποΈ 59% cached β
β agent:main:cron:6ed252ce-7070-4β¦ β direct β 11h ago β gemini-3-flash-preview β 7.5k/205k (4%) Β· ποΈ 27% cached β
βββββββββββββββββββββββββββββββββββββββββββ΄βββββββββ΄ββββββββββ΄βββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ
I think I see the trap.
I just checked the session code path. heartbeat, cron-event, and exec-event turns are treated as system events and they do not trigger a daily reset. If one of your overnight automations touches that same session after 1:00 AM, it refreshes the session entry, so when you later message the bot, the session no longer looks stale and no new sessionId gets minted.
That would match your symptom really well.
A few concrete notes:
- Your config for
session.resetlooks fine. dmScopeis unrelated here, since this is a Discord thread/channel context, not a DM.- Your CLI says
2026.4.14, but the running gateway is2026.4.15. I do not think that is the root cause here, but I would still align them.
What to check next:
- Cron session target
If those jobs are usingmain,current, or a sharedsession:..., they can keep the chat session alive.
openclaw cron list --json
-
Heartbeat session mode
If heartbeat is also hitting the same session, set it isolated:{ agents: { defaults: { heartbeat: { isolatedSession: true } } }
}
- Best workaround
Move overnight jobs off the chat session:- fresh run every time:
openclaw cron edit <job-id> --session isolated - or, if the job needs its own history:
openclaw cron edit <job-id> --session "session:overnight"
- fresh run every time:
Docs:
If you paste openclaw cron list --json and your heartbeat config block, I can tell you exactly which job is preventing the rollover.
And honestly, if your expectation is βdaily reset should still happen for the human chat even if cron/heartbeat ran overnightβ, that feels like a pretty reasonable GitHub issue too: https://github.com/openclaw/openclaw/issues
Ah, this helps, and it rules out my earlier cron/heartbeat theory.
Your cron and heartbeat runs are already in separate session keys (...:cron:..., ...heartbeat), so they probably are not whatβs keeping the Discord chat session alive here.
The next likely things are:
-
Timezone mismatch
Daily session reset uses the gateway host local time. Cron jobs can have their own--tz, so βmy cron ran after 1 AMβ does not necessarily prove the session-reset boundary passed. -
Session key vs sessionId
The session key stays the same across resets. Only thesessionIdrotates.
So seeing the sameagent:main:mainoragent:main:discord:...key is expected. -
Memory is enabled
You havememory-coreon, so even after a fresh session, the bot can still recall prior context. A reset is not full amnesia.
The most useful check now is to inspect the actual stored sessionId before and after the first post-1AM message.
For the DM main session:
date
jq '.["agent:main:main"] | {sessionId, updatedAt, sessionFile}' ~/.openclaw/agents/main/sessions/sessions.json
For the Discord thread/channel session:
jq 'to_entries[] | select(.key | contains("discord:channel:")) | {key: .key, sessionId: .value.sessionId, updatedAt: .value.updatedAt, sessionFile: .value.sessionFile}' ~/.openclaw/agents/main/sessions/sessions.json
If the sessionId stays the same after the first human message past the reset boundary, then yeah, Iβd call that a real bug.
If you paste:
date
- the relevant
jqoutput before - the same
jqoutput after one message that should have reset
β¦I can help confirm it cleanly.
Docs:
Just noting I am in gmt-5, also I just upgraded to v2026.4.15, but 1am I as on 4.14. Here is that jq
{
"key": "agent:main:discord:channel:1475229000317014038",
"sessionId": "12edc47e-5608-4bef-8a36-52ccf74784b5",
"updatedAt": 1776266359756,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/12edc47e-5608-4bef-8a36-52ccf74784b5.jsonl"
}
{
"key": "agent:main:discord:channel:1480328923567882300",
"sessionId": "8e14fe70-e7d1-4d95-b300-d57f25e6b10c",
"updatedAt": 1773008983177,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/8e14fe70-e7d1-4d95-b300-d57f25e6b10c.jsonl"
}
{
"key": "agent:main:discord:channel:1480331591116001421",
"sessionId": "14e0a719-5836-431c-9800-ab966dff6d55",
"updatedAt": 1774811449991,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/14e0a719-5836-431c-9800-ab966dff6d55.jsonl"
}
{
"key": "agent:main:discord:channel:1480336830984356002",
"sessionId": "5fdad26b-09d1-45b0-89e3-e93c416b241e",
"updatedAt": 1773666425124,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/5fdad26b-09d1-45b0-89e3-e93c416b241e.jsonl"
}
{
"key": "agent:main:discord:channel:1480705974598897794",
"sessionId": "ab40faff-64e2-466f-b9aa-f5bb7ab448ad",
"updatedAt": 1776085166301,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/ab40faff-64e2-466f-b9aa-f5bb7ab448ad.jsonl"
}
{
"key": "agent:main:discord:channel:1480547004370260072",
"sessionId": "8c7ba69f-6b94-4a1c-9a53-0462ed5fda99",
"updatedAt": 1774874291993,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/8c7ba69f-6b94-4a1c-9a53-0462ed5fda99.jsonl"
}
{
"key": "agent:main:discord:channel:1480773291491721217",
"sessionId": "3714f321-b3dd-4609-8fdd-1ca8b0607dd3",
"updatedAt": 1776625870127,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl"
}
{
"key": "agent:main:discord:channel:1480777663181492234",
"sessionId": "d0327207-e93e-41d9-9816-1b724b5658d9",
"updatedAt": 1773870821994,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/d0327207-e93e-41d9-9816-1b724b5658d9.jsonl"
}
{
"key": "agent:main:discord:channel:1482214704784080906",
"sessionId": "21d99a67-0dab-429f-a689-12cf9894ade0",
"updatedAt": 1776017217849,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/21d99a67-0dab-429f-a689-12cf9894ade0.jsonl"
}
{
"key": "agent:main:discord:channel:1480773291491721217:heartbeat",
"sessionId": "ce19383c-e780-4f5d-910f-be5a809e18e2",
"updatedAt": 1775934006195,
"sessionFile": "/home/akessel56/.openclaw/agents/main/sessions/25a07052-afcf-4d48-8689-f8fc5d9da092.jsonl"
}
oh and the right discord channel is: 1480773291491721217
Thanks, this narrows it down a lot.
Two important points:
- The timezone that matters is the Pi / gateway host timezone, not your personal timezone.
- That
jqoutput is only a current snapshot. It shows the currentsessionId, but not when that sessionId was minted.
So the next check is, βwas this transcript file created before the 1 AM boundary, and then kept getting appended after it?β
The active-looking session is probably this one:
- key:
agent:main:discord:channel:1480773291491721217 - sessionId:
3714f321-b3dd-4609-8fdd-1ca8b0607dd3
Can you run these on the Pi?
date
timedatectl | sed -n '1,6p'
stat /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
sed -n '1p;$p' /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
What Iβm looking for:
- If that file was created before the reset boundary and still contains/appends turns after the boundary, then daily reset really did fail.
- If that file was created after the boundary, then the reset probably did happen, and what feels like continuity is likely from memory recall.
Since your 1 AM run happened on 2026.4.14, if this turns out to be one pre-boundary transcript continuing post-boundary, Iβd strongly suspect a real 2026.4.14 bug.
If you paste that output, I can tell you pretty quickly which side of that it is.
Perfect, thatβs the one I suspected.
So the session we care about is:
- key:
agent:main:discord:channel:1480773291491721217 - sessionId:
3714f321-b3dd-4609-8fdd-1ca8b0607dd3 - file:
/home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
That updatedAt is 2026-04-19 19:11 UTC, so the missing question is still whether that session file was created before or after the 1 AM boundary.
Can you run these exact commands for that file?
date
timedatectl | sed -n '1,6p'
stat /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
sed -n '1p;$p' /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
If that same file spans both sides of the reset boundary, then yeah, thatβs a real bug.
timedatectl | sed -n '1,6p'
stat /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
sed -n '1p;$p' /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
Sun Apr 19 02:38:27 PM CDT 2026
Local time: Sun 2026-04-19 14:38:27 CDT
Universal time: Sun 2026-04-19 19:38:27 UTC
RTC time: Sun 2026-04-19 19:38:27
Time zone: America/Chicago (CDT, -0500)
System clock synchronized: yes
NTP service: active
File: /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
Size: 88814 Blocks: 184 IO Block: 4096 regular file
Device: 259,2 Inode: 2222139 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/akessel56) Gid: ( 1000/akessel56)
Access: 2026-04-19 14:03:54.643308560 -0500
Modify: 2026-04-19 14:11:09.875984855 -0500
Change: 2026-04-19 14:11:09.875984855 -0500
Birth: 2026-04-19 14:03:54.643308560 -0500
{"type":"session","version":3,"id":"3714f321-b3dd-4609-8fdd-1ca8b0607dd3","timestamp":"2026-04-19T19:03:50.865Z","cwd":"/home/akessel56/.openclaw/workspace"}
{"type":"custom","customType":"openclaw:bootstrap-context:full","data":{"timestamp":1776625869876,"runId":"88a49215-5603-473b-b27f-ceb3f3802e87","sessionId":"3714f321-b3dd-4609-8fdd-1ca8b0607dd3"},"id":"0bd59500","parentId":"c7ddd769","timestamp":"2026-04-19T19:11:09.876Z"}
date
timedatectl | sed -n '1,6p'
stat /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
sed -n '1p;$p' /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
Sun Apr 19 02:38:27 PM CDT 2026
Local time: Sun 2026-04-19 14:38:27 CDT
Universal time: Sun 2026-04-19 19:38:27 UTC
RTC time: Sun 2026-04-19 19:38:27
Time zone: America/Chicago (CDT, -0500)
System clock synchronized: yes
NTP service: active
File: /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
Size: 88814 Blocks: 184 IO Block: 4096 regular file
Device: 259,2 Inode: 2222139 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/akessel56) Gid: ( 1000/akessel56)
Access: 2026-04-19 14:03:54.643308560 -0500
Modify: 2026-04-19 14:11:09.875984855 -0500
Change: 2026-04-19 14:11:09.875984855 -0500
Birth: 2026-04-19 14:03:54.643308560 -0500
{"type":"session","version":3,"id":"3714f321-b3dd-4609-8fdd-1ca8b0607dd3","timestamp":"2026-04-19T19:03:50.865Z","cwd":"/home/akessel56/.openclaw/workspace"}
{"type":"custom","customType":"openclaw:bootstrap-context:full","data":{"timestamp":1776625869876,"runId":"88a49215-5603-473b-b27f-ceb3f3802e87","sessionId":"3714f321-b3dd-4609-8fdd-1ca8b0607dd3"},"id":"0bd59500","parentId":"c7ddd769","timestamp":"2026-04-19T19:11:09.876Z"}
(ssc-3.12.5) akessel56@rpi5:~ $ sed -n '1p;$p' /home/akessel56/.openclaw/agents/main/sessions/3714f321-b3dd-4609-8fdd-1ca8b0607dd3.jsonl
{"type":"session","version":3,"id":"3714f321-b3dd-4609-8fdd-1ca8b0607dd3","timestamp":"2026-04-19T19:03:50.865Z","cwd":"/home/akessel56/.openclaw/workspace"}
{"type":"custom","customType":"openclaw:bootstrap-context:full","data":{"timestamp":1776625869876,"runId":"88a49215-5603-473b-b27f-ceb3f3802e87","sessionId":"3714f321-b3dd-4609-8fdd-1ca8b0607dd3"},"id":"0bd59500","parentId":"c7ddd769","timestamp":"2026-04-19T19:11:09.876Z"}
Nice, we caught it. This actually shows the reset is working for that channel.
What your output proves:
- Gateway timezone is America/Chicago (CDT)
- Your reset boundary is therefore 1:00 AM CDT
- The current session file for that channel was born at 2026-04-19 14:03:54 CDT
- The first transcript entry is also from 2026-04-19 19:03:50Z, which is 14:03 CDT
So this sessionId was minted today at 2:03 PM local, well after the 1 AM boundary.
That means OpenClaw did exactly what the docs describe:
- it did not create a new session at 1:00 sharp
- it created a new session on the first message after the reset boundary
So the real behavior here is:
- daily reset is lazy
- your channel had no traffic until 14:03
- the rollover happened then
If it still felt like the same conversation, that is most likely because you have memory-core enabled, not because the session failed to reset.
So I do not think this is a reset bug for channel 1480773291491721217.
Docs:
- https://docs.openclaw.ai/concepts/session
- https://docs.openclaw.ai/reference/session-management-compaction
If you want, I can help with the follow-up question, which is probably: βhow do I make it feel truly fresh each day, even with memory enabled?β
I hate to disappoint you but that 2:03pm local was my manual /new
Not disappointing at all, that actually explains why this sample is ambiguous π
That means the 3714... transcript only proves your manual /new worked at 2:03 PM. It does not tell us whether the automatic daily reset had already happened earlier.
The next useful thing is the transcript that /new archived. OpenClaw should have renamed the previous file to *.reset.<timestamp> in the same folder.
Can you run:
ls -lt /home/akessel56/.openclaw/agents/main/sessions/*.reset.* | head -20
Then grab the file that was archived around your 2:03 PM /new, and run:
stat /home/akessel56/.openclaw/agents/main/sessions/<that-file>
sed -n '1p;$p' /home/akessel56/.openclaw/agents/main/sessions/<that-file>
What that will tell us:
- if that archived transcript started before 1:00 AM CDT and was still the active one until 2:03 PM, then daily reset did not happen
- if that archived transcript started after 1:00 AM CDT, then daily reset did happen earlier, and
/newjust reset it again
So weβre close, we just need the pre-/new archived file.
stat /home/akessel56/.openclaw/agents/main/sessions/39d002db-76b9-47aa-b9b9-8be5de7eaa06.jsonl.reset.2026-04-19T19-03-37.979Z
File: /home/akessel56/.openclaw/agents/main/sessions/39d002db-76b9-47aa-b9b9-8be5de7eaa06.jsonl.reset.2026-04-19T19-03-37.979Z
Size: 893287 Blocks: 1760 IO Block: 4096 regular file
Device: 259,2 Inode: 2194074 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/akessel56) Gid: ( 1000/akessel56)
Access: 2026-04-15 09:43:27.307785743 -0500
Modify: 2026-04-19 14:03:30.923492050 -0500
Change: 2026-04-19 14:03:37.975437465 -0500
Birth: 2026-04-15 09:43:27.307785743 -0500
sed -n '1p;$p' /home/akessel56/.openclaw/agents/main/sessions/39d002db-76b9-47aa-b9b9-8be5de7eaa06.jsonl.reset.2026-04-19T19-03-37.979Z
{"type":"session","version":3,"id":"39d002db-76b9-47aa-b9b9-8be5de7eaa06","timestamp":"2026-04-15T14:43:24.736Z","cwd":"/home/akessel56/.openclaw/workspace"}
{"type":"custom","customType":"openclaw:bootstrap-context:full","data":{"timestamp":1776625410927,"runId":"746144b9-61bc-440d-8bf8-adc8efe98189","sessionId":"39d002db-76b9-47aa-b9b9-8be5de7eaa06"},"id":"5c8e0e07","parentId":"8da604f3","timestamp":"2026-04-19T19:03:30.927Z"}
Yep, thatβs the smoking gun.
That archived transcript:
- was born on Apr 15, 09:43 CDT
- stayed active until your manual
/newon Apr 19, 14:03 CDT
So that same session lived across multiple daily reset boundaries. Given what you said about checking in after the overnight jobs, Iβm convinced this was a real issue on 2026.4.14.
The only nuance is that the manual /new itself is what finally rotated it, so todayβs sample is βold session until /newβ, not βauto-reset worked earlierβ.
My recommendation now:
- Retest once on 2026.4.15
- do not manual
/new - send one normal message after the next 1 AM CDT boundary
- check whether the
sessionIdchanged
- do not manual
- File a GitHub issue either way
- if it still happens on 2026.4.15, itβs an active bug
- if it no longer happens, it still looks like a real
2026.4.14regression
Issue link:
https://github.com/openclaw/openclaw/issues
Useful summary to paste into the issue:
- config:
session: { dmScope: "per-channel-peer", reset: { mode: "daily", atHour: 1 } } - gateway timezone:
America/Chicago