Symptom
Message tail disappears from the visible chat during or shortly after agent generation. The bug occurs spontaneously on active sessions — no navigation, minimization, or browser close required to trigger it. Hard reload of the page restores the full message history, confirming server-side persistence is intact. This is the same surface as #1747 ("Last 2 messages disappear from chat thread"), which appears to remain unfixed despite multiple fix attempts.
Versions tested — bug persists across all
| Version |
Released |
Fix targeting this surface |
Status |
| v0.13.4 / v0.13.5 |
2026-05-07 / 2026-05-08 |
(original report on #1747) |
Bug present |
| v0.13.6 |
2026-05-12 |
#1749 "preserve live session state" + #1750 "preserve live tail messages" (claims to close #1747) |
Bug persists per @platem 2026-05-13 |
| v0.13.7 / v0.13.8 |
2026-05-13 |
(no further session-render fixes) |
Bug persists per @platem 2026-05-13 |
| v0.13.9 |
2026-05-15 |
#1801 "coalesce streaming transcript deltas" (pure perf, no behavior) |
Not directly tested |
| v0.13.10 stable |
2026-05-18T18:19Z |
#1824 "Fix session transcript reconciliation" + #1831 "harden session streaming and server health" |
Bug still reproduces 2026-05-19 |
Five fix attempts shipped over the past 8 days targeting this exact surface. The bug continues to manifest on v0.13.10 stable.
Reproduction
Hit during a witness walk on a self-hosted OpenWork web deployment pinned to v0.13.10 stable (commit 1cdd52d7d3c13d25c3afe1bb72be54e7107d3c78). The bug is intermittent — not every generation triggers it — but appears reliably across multiple walks. Specific session captured today: ses_1c1968690ffepavaBLDwmYq4r1.
Approximate steps:
- Open a session in the self-hosted web deployment, ensure agent is configured with skills/MCPs.
- Submit a user message, let the agent generate a multi-part response (with tool calls + final text).
- Continue the conversation across 3–5 message exchanges.
- Observe — at some point during or shortly after a generation completes, prior messages in the tail vanish from the visible chat without user action.
Sometimes the disappearance is partial (last 2 messages absent, like the original #1747 framing), sometimes it leaves only the first agent message visible. Server-side state has been verified intact across multiple walks via direct inspection of /data/opencode/storage/session_diff/ses_*.json — the data is always present on the server; the SPA's render of it is what loses messages.
Expected behavior
Messages persist in the visible chat once written. Stream completion does not cause prior tail messages to vanish.
Actual behavior
Message tail vanishes from the rendered chat. Hard reload of the page restores the full history (confirming the loss is purely in the SPA's render layer, not in any persisted state).
Bounded evidence
| Layer |
State |
Verified |
| Server-side session storage |
Has full history |
✅ Walk-6 verified via docker exec ... cat /data/opencode/storage/session_diff/ses_1de8beeb*.json |
| SPA render (DOM) |
Missing tail messages |
✅ Witnessed multiple sessions across multiple walks |
| Hard reload |
Restores full history |
✅ Reload from server snapshot brings everything back |
| HTTP snapshot response (Network tab) |
Not yet captured |
❌ Will capture on next repro if helpful |
| React Query transcript cache (DevTools) |
Not yet inspected |
❌ Will capture on next repro if helpful |
Environment
- Deployment: Self-hosted OpenWork web (Caddy +
pnpm build:web of @openwork/app)
- Browser: Chromium-based (Playwright agent-browser driver, also reproduced manually in standalone Chrome)
- Pin: OpenWork SPA at v0.13.10 stable (
1cdd52d7d3c13d25c3afe1bb72be54e7107d3c78), orchestrator at openwork-orchestrator@0.13.3 (npm)
- Session protocol: Server-side session-diff storage, SSE event stream, snapshot-based hydration via
getSessionSnapshot
Note on orchestrator version: we are currently running openwork-orchestrator@0.13.3 while the SPA is at v0.13.10. This may or may not be relevant — the prior fix-set (#1749, #1750, #1824, #1831) is all SPA-side, so a version-aligned orchestrator should not change behavior. Flagging the drift for completeness.
Distinct from cold-cache rehydration
For clarity: this bug is not about closing the browser and revisiting the session URL. Browser close + revisit is one of the recovery paths users have used to attempt to surface the messages back; sometimes it works (as the cache rehydrates from server snapshot), sometimes it does not. The bug itself is the spontaneous mid-generation or post-generation tail disappearance on active sessions.
Distinct from #1747?
Believed to be the same root cause as #1747 — the title of #1747 ("Last 2 messages disappear from chat thread") matches this surface precisely. #1747 was closed with #1750 as the claimed fix, then re-confirmed unresolved by @platem on 2026-05-13 on v0.13.8. Filing this as a fresh tracker rather than reopen-request so it has explicit v0.13.10-stable evidence + the multi-fix-attempt history that the closed #1747 thread doesn't surface.
Collaboration
Happy to capture HTTP snapshot response + DOM message count + React Query transcript cache state next time the bug reproduces, if maintainers want pinpointed data on which layer drops the messages. Will also re-test on each v0.13.11-alpha drop and update if anything changes.
References
Symptom
Message tail disappears from the visible chat during or shortly after agent generation. The bug occurs spontaneously on active sessions — no navigation, minimization, or browser close required to trigger it. Hard reload of the page restores the full message history, confirming server-side persistence is intact. This is the same surface as #1747 ("Last 2 messages disappear from chat thread"), which appears to remain unfixed despite multiple fix attempts.
Versions tested — bug persists across all
Five fix attempts shipped over the past 8 days targeting this exact surface. The bug continues to manifest on v0.13.10 stable.
Reproduction
Hit during a witness walk on a self-hosted OpenWork web deployment pinned to v0.13.10 stable (commit
1cdd52d7d3c13d25c3afe1bb72be54e7107d3c78). The bug is intermittent — not every generation triggers it — but appears reliably across multiple walks. Specific session captured today:ses_1c1968690ffepavaBLDwmYq4r1.Approximate steps:
Sometimes the disappearance is partial (last 2 messages absent, like the original #1747 framing), sometimes it leaves only the first agent message visible. Server-side state has been verified intact across multiple walks via direct inspection of
/data/opencode/storage/session_diff/ses_*.json— the data is always present on the server; the SPA's render of it is what loses messages.Expected behavior
Messages persist in the visible chat once written. Stream completion does not cause prior tail messages to vanish.
Actual behavior
Message tail vanishes from the rendered chat. Hard reload of the page restores the full history (confirming the loss is purely in the SPA's render layer, not in any persisted state).
Bounded evidence
docker exec ... cat /data/opencode/storage/session_diff/ses_1de8beeb*.jsonEnvironment
pnpm build:webof@openwork/app)1cdd52d7d3c13d25c3afe1bb72be54e7107d3c78), orchestrator atopenwork-orchestrator@0.13.3(npm)getSessionSnapshotNote on orchestrator version: we are currently running
openwork-orchestrator@0.13.3while the SPA is at v0.13.10. This may or may not be relevant — the prior fix-set (#1749, #1750, #1824, #1831) is all SPA-side, so a version-aligned orchestrator should not change behavior. Flagging the drift for completeness.Distinct from cold-cache rehydration
For clarity: this bug is not about closing the browser and revisiting the session URL. Browser close + revisit is one of the recovery paths users have used to attempt to surface the messages back; sometimes it works (as the cache rehydrates from server snapshot), sometimes it does not. The bug itself is the spontaneous mid-generation or post-generation tail disappearance on active sessions.
Distinct from #1747?
Believed to be the same root cause as #1747 — the title of #1747 ("Last 2 messages disappear from chat thread") matches this surface precisely. #1747 was closed with #1750 as the claimed fix, then re-confirmed unresolved by @platem on 2026-05-13 on v0.13.8. Filing this as a fresh tracker rather than reopen-request so it has explicit v0.13.10-stable evidence + the multi-fix-attempt history that the closed #1747 thread doesn't surface.
Collaboration
Happy to capture HTTP snapshot response + DOM message count + React Query transcript cache state next time the bug reproduces, if maintainers want pinpointed data on which layer drops the messages. Will also re-test on each v0.13.11-alpha drop and update if anything changes.
References