Desktop app: false-positive safety block can permanently brick a legitimate long-running thread
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
A legitimate long-running Codex Desktop thread for authorized administration and development of a privately owned server was blocked by the safety system and became permanently unusable. The block was not limited to the triggering turn: every subsequent message, including a harmless recovery/status prompt, was immediately blocked and the thread remained in systemError.
This is a serious reliability problem for long-running operational work. Full local/server permissions are unrelated to model safeguards, but a false positive must not destroy the user's working control surface.
Environment
- Codex Desktop package:
26.825.5331.0 - Windows x64
- Local project thread with a long completed history
- Model family: GPT-5.6
- No credentials, private keys, wallet secrets, addresses, or server identifiers are included in this report
Observed incident
On 2026-08-30:
- A request in an established project thread ran for approximately 558 seconds and then failed with:
This request was blocked by our safety systems. - A second user attempt failed with the same error after approximately 4 seconds.
- A deliberately harmless recovery prompt — asking the agent to make no changes, report readiness, avoid secrets, and wait — also failed with the same error after approximately 4 seconds.
- The task stayed in
systemErrorand the user could no longer type/use it normally. - Forking completed history into a new same-directory thread restored normal operation immediately.
This strongly suggests that safety state or accumulated context poisoned the entire thread rather than rejecting only one turn.
Expected behavior
- A safeguard intervention should be scoped to the specific request/output.
- The thread should remain usable for a subsequent clearly benign prompt.
- The UI should provide an incident/reference ID and a direct “report false positive” action.
- If a block occurs after a long tool-running turn, the user needs a visible audit of whether any tools or writes already occurred.
- A one-click recovery should create a clean continuation from completed history without requiring another task to repair it.
Requested fixes
- Make safety blocks turn-scoped, not permanently thread-scoped.
- Do not carry a rejected turn’s classifier state into later benign turns.
- Add “Recover in clean continuation” and “Report false positive” actions to the error card.
- Show whether tool calls/writes ran before a late safety block.
- Attach a privacy-safe incident ID so Support/engineering can locate classifier telemetry.
- Improve handling of explicitly authorized defensive infrastructure and SRE work in long contexts. This is not a request to disable safeguards; it is a request to stop false positives from bricking unrelated legitimate work.
Workaround used
Fork the affected thread using completed history only, verify the new thread with a benign no-op prompt, then archive the poisoned thread. This preserved completed context and did not touch production, but it should be a built-in recovery path rather than an improvised workaround.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files, tests, or code entry points. Start by reproducing the Desktop app case where a safety-blocked turn leaves the thread in systemError, then trace the blocked-turn and thread-recovery paths. Done means a later benign prompt remains usable and the requested recovery, reporting, and tool-audit behavior is covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100