-
-
Notifications
You must be signed in to change notification settings - Fork 79.1k
Codex missing-terminal fallback leaks into Discord channel on 2026.5.27 despite #87079 #87725
Copy link
Copy link
Closed
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Metadata
Metadata
Assignees
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
On
2026.5.27, a Discord channel session using the bundled Codex runtime posted the internal missing-terminal fallback text directly into the user-visible channel:This is not just a turn failure. The user-facing problem is that an internal lifecycle/recovery message was delivered as a normal channel reply, which reads like an assistant response and creates confusing noise in the conversation.
Environment
2026.5.27gpt-5.5via Codex runtimerawResponseItemCompletedWithNoActiveItems/ completion idle watchdog)Observed behavior
At least two archived Discord channel messages on 2026-05-28 contained the exact fallback text above. The latest local incident was around
2026-05-28T16:46:08Z.The visible symptom was followed by a user complaint because the same class of fallback had appeared repeatedly in the channel.
Local follow-up showed this was a real lifecycle failure path, not intentional assistant content:
session-lifecycle-audit.py --since-hours 4initially found one high-severity unrecovered tool-failure lifecycle finding in the implicated session window.jq: ... null has no keys) during the affected turn.Why this is probably not fixed by #87079
#87079 appears to be present in the installed
2026.5.27Codex runtime. Local installed code contains the expectedrawResponseItemCompletedWithNoActiveItemspath and arms the completion idle watchdog for the narrow "rawResponseItem/completed but no turn/completed" stall.That means #87079 may explain why the turn eventually produced fallback/timeout feedback instead of hanging indefinitely, but it does not prevent the user-visible Discord leak.
The current failure mode seems more like:
buildCodexAppServerPromptTimeoutOutcome()creates a prompt timeout outcome with:replayInvalid: truelivenessState: "abandoned"Expected behavior
The system should still protect the user from unsafe automatic replay when side effects may have happened, but the channel UX should not leak the internal lifecycle fallback as ordinary assistant content.
Possible acceptable outcomes:
The important distinction is: keep the safety signal, but do not present Codex lifecycle machinery as chat content.
Related issues / PRs
2026.5.27, Discord, fix(codex): arm completion idle watch for stalled binary after rawResponseItem/completed #87079 already present, user-visible channel leak after missing-terminal/tool lifecycle failure.Native hook relay unavailable/ relay generation staleness. I did not find native-hook-relay evidence in this incident.Local code pointers from installed build
These are from the installed
2026.5.27build rather than a source checkout:buildCodexAppServerPromptTimeoutOutcome(...)replayInvalid: truelivenessState: "abandoned"CODEX_APP_SERVER_MISSING_TERMINAL_EVENT_SIDE_EFFECT_USER_MESSAGErawResponseItemCompletedWithNoActiveItemslivenessStateandreplayInvalid.Suggested fix direction
Add a regression test at the source-channel/reply-admission boundary for a Codex app-server missing-terminal timeout outcome with side effects:
replayInvalid: true,livenessState: "abandoned", and side-effect warning copy;Then adjust the delivery/admission layer or Codex timeout outcome handling so user channels receive intentional channel-safe copy rather than the current internal fallback.