You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Desktop app repeatedly fails to resume a Codex thread after encrypted tool-output decode error #36662
A Windows Codex desktop-app thread becomes non-resumable after a streamed tool-output decoding failure. Restarting the app does not recover the thread.
Error
stream disconnected before completion: Encrypted function output content could not be decrypted or decoded.
The UI retries reconnection through 5/5.
Environment
Platform: Windows desktop app
Codex CLI: 0.144.1
Thread ID: 019f6a26-7593-7271-b338-b0d0d207ffa9
Steps to reproduce
Run a long Codex thread with streamed tool output and background QA or process monitoring.
Observe the error above and the reconnection attempts.
Restart the desktop app.
Return to the same thread and send a follow-up such as go on.
Expected behavior
The thread resumes, or the app presents a recoverable terminal state.
Actual behavior
The same encrypted-output decode error repeats after restart. The thread remains in progress but does not return a usable response; further follow-ups do not recover it.
Additional observation
A fork that excludes the unfinished turn can continue. This suggests the original conversation is blocked by a persisted streamed tool-output event rather than by the project task itself.
No logs, project files, or conversation contents are attached to this report.
Update: the recovery fork also reproduced the same failure.
A same-directory fork that excluded the original unfinished turn, thread 019fc581-056e-73a3-96f6-845e5027c4ab, initially resumed normally and completed a read-only recovery audit. Its next long turn then showed the same Encrypted function output content could not be decrypted or decoded error and is now marked systemError.
This weakens the earlier observation that excluding the unfinished turn was sufficient. The recurrence is consistent with a broader desktop-app/session or streamed tool-output handling problem, not solely corruption of one persisted unfinished event. No logs, project files, or conversation content are attached.
This issue also reproduces in an interactive Desktop case on macOS, with the same recovery behavior:
Restarting the app did not by itself make the original thread resumable.
A normal fork created from the latest history also failed because its history base still included the persisted failed/encrypted records.
After a backup, removing only unreadable encrypted_content payloads and repairing the paginated history_base byte offsets, a fork completed a no-op turn successfully. The original parent could load again but remained much slower because its history was substantially larger.
This suggests that recovery should not simply copy the current end of a broken thread. A useful UI recovery path would fork from the last known-good completed turn, rebuild a replayable text checkpoint, or explicitly omit invalid streamed tool-output items. The UI should also distinguish a recoverable systemError from an indefinitely inProgress turn instead of looping reconnection attempts.
Activity
github-actions commentedon Aug 3, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Burlin-C commentedon Aug 3, 2026
Update: the recovery fork also reproduced the same failure.
A same-directory fork that excluded the original unfinished turn, thread
019fc581-056e-73a3-96f6-845e5027c4ab, initially resumed normally and completed a read-only recovery audit. Its next long turn then showed the sameEncrypted function output content could not be decrypted or decodederror and is now markedsystemError.This weakens the earlier observation that excluding the unfinished turn was sufficient. The recurrence is consistent with a broader desktop-app/session or streamed tool-output handling problem, not solely corruption of one persisted unfinished event. No logs, project files, or conversation content are attached.
JiaqiLiRonnie commentedon Sep 4, 2026
This issue also reproduces in an interactive Desktop case on macOS, with the same recovery behavior:
encrypted_contentpayloads and repairing the paginatedhistory_basebyte offsets, a fork completed a no-op turn successfully. The original parent could load again but remained much slower because its history was substantially larger.This suggests that recovery should not simply copy the current end of a broken thread. A useful UI recovery path would fork from the last known-good completed turn, rebuild a replayable text checkpoint, or explicitly omit invalid streamed tool-output items. The UI should also distinguish a recoverable
systemErrorfrom an indefinitelyinProgressturn instead of looping reconnection attempts.