Skip to content

[Bug]: 6.x state migration leaves channel conversation-store SQLite empty (0 bytes) — orphans references, breaks proactive (Bot Framework) sends (MS Teams) #94939

Description

@adamnagus

Bug type

Regression (worked before, now fails)

Summary

After upgrading to 2026.6.8, the per-channel conversation store migration renames ~/.openclaw/<channel>-conversations.json to <channel>-conversations.json.migrated (marking it "done"), but the new <channel>-conversations.sqlite is left 0 bytes. The stored conversation references are orphaned, so proactive sends that depend on a stored conversation reference break.

Concretely for MS Teams (Bot Framework): a proactive openclaw message send --channel msteams --target <stored user> fails with TypeError: fetch failed. In-thread conversational replies still work (they use an existing chat), so only the proactive path is broken. This worked before the 6.x SQLite state migration.

It appears alongside the already-reported recurring warning:
Left plugin install index in place because shared SQLite state has conflicting plugin install metadata for: brave, codex, msteams, whatsapp
(related: #90213, #92811, #90040, #90418). However, the conversation-store data being dropped / proactive-send breakage is a distinct, higher-impact consequence not captured in those (which are about the warning itself / installs.json).

Steps to reproduce

  1. On a 2026.5.x install with an established MS Teams conversation (msteams-conversations.json populated, proactive sends working).
  2. Upgrade to 2026.6.8.
  3. Observe: msteams-conversations.json → renamed to msteams-conversations.json.migrated; msteams-conversations.sqlite exists but is 0 bytes (sqlite3 ... "SELECT count(*) FROM conversations"no such table: conversations).
  4. openclaw message send --channel msteams --target <stored user>TypeError: fetch failed.

Expected behavior

Conversation references migrate into the new SQLite store; proactive sends keep working.

Actual behavior

  • <channel>-conversations.sqlite = 0 bytes; references stranded in .json.migrated.
  • Proactive MS Teams send fails (TypeError: fetch failed).
  • Manually restoring .json (un-renaming .migrated), deleting the empty .sqlite + stale .sqlite.lock, and restarting re-runs the migration, which again renames to .migrated and again leaves the SQLite empty — it re-aborts on the same conflict.
  • openclaw doctor --fix does not resolve it; the conflicting plugin install metadata warning continues firing on every boot.
  • Likely same class (may be separate provider issue): iMessage proactive openclaw message send --channel imessage --target <num> fails with imsg rpc exited (code 1) / write EPIPE, while iMessage conversational replies work.

Workaround

None found via file-restore or doctor --fix. Proactive notifications re-routed to WhatsApp + email.

OpenClaw version

2026.6.8 (introduced on the 6.x line that added the SQLite state migration)

Operating system

macOS 26.5.1

Install method

npm (global)

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority user-facing bug, regression, or broken workflow.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:data-lossCan lose, corrupt, or silently drop user/session/config data.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions