Codex Desktop can assert visible app/tool success after backend-only changes, before foreground acceptance

Open
#35,041 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
38/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Quiet
Tech stack
rust
Domain
ai, desktop

Research direction

The report names no files, tests, or entry points; begin by locating the progress-reporting path and the checks for foreground acceptance evidence. Done means success claims are gated by the required evidence, intermediate backend state is distinguished from live verification, and repeated acceptance mismatches produce a bounded failure report.

Written by the indexing model from the issue text.

Description

app bug computer-use model-behavior windows-os

Summary

During a long-running Codex Desktop task, the user explicitly required a local desktop application's visible chat surface and integrations to work—not merely backend configuration changes. Codex repeatedly ran shell/backend commands and then stated that the visible tools were enabled, the live conversation was corrected, or the user could now see the requested state.

Screenshots taken immediately afterward showed that required integrations were still disabled or faulted, the provider/header state was wrong, Send could still be broken, and the requested useful output was not present. Codex later acknowledged that it had changed stored conversation/configuration flags without proving that the corresponding integration processes and live tool calls were healthy.

This is an evidence-gating defect: progress narration can claim a foreground-visible result before a foreground acceptance check has happened.

Environment

  • Product: Codex Desktop
  • Platform: Windows 11 Pro
  • Subscription: ChatGPT Pro
  • Workload: long-running repository and local-agent integration task
  • Observed: July 23, 2026
  • Target application: local desktop AI application; private integration names and repository paths omitted

Observed sequence

  1. User requires real work and tool output to appear in a visible desktop chat surface.
  2. User explicitly rejects backend-only receipts and asks Codex not to claim visibility without seeing it.
  3. Codex runs backend commands or edits stored integration/conversation state.
  4. Codex states that tools are enabled, the visible state is corrected, or the user can see the result.
  5. Foreground screenshots show required integrations still disabled/faulted, a mismatched provider state, missing useful output, or a broken Send path.
  6. Codex later retracts the claim and says the stored flags were changed before live integration health was proven.
  7. The cycle repeats, consuming usage and destabilizing the target application.

Expected behavior

Codex should distinguish at least these states:

  • configuration written;
  • integration enabled in stored state;
  • process/transport reachable;
  • authentication/admission successful;
  • tool inventory loaded;
  • live tool call successful;
  • foreground/operator-visible acceptance confirmed.

It must not use phrases such as fixed, working, visible, enabled, you can see it, or equivalent completion language unless the required evidence level has actually been reached.

For a task with an explicit visible acceptance contract, Codex should:

  • run a foreground inspection, screenshot check, accessibility/UI probe, or target application's own live health/tool call before asserting success;
  • state exactly which evidence was obtained;
  • say plainly when it cannot inspect the target surface;
  • treat backend-only configuration as an intermediate step, not completion;
  • avoid modifying broad integration state merely to make toggles appear enabled;
  • stop and produce a bounded failure report after repeated acceptance mismatches.

Suggested machine-readable progress contract

Each progress event should carry fields similar to:

  • claimed_state
  • evidence_type
  • evidence_timestamp
  • foreground_verified
  • live_call_verified
  • remaining_acceptance_checks

The UI should avoid rendering a success-style progress statement when foreground_verified=false for a foreground requirement.

Impact

  • Users rely on false state claims and continue a broken workflow.
  • Usage is spent correcting claims that should never have been made.
  • Backend flags can diverge from live process and UI state.
  • Broad configuration changes can break working integrations or the Send path.
  • Trust is damaged because the agent narrates verification it did not perform.

Related reports

  • #27352 — turn/task can end after a progress message promises an action that never occurs.
  • #35032 — repeated compaction and usage waste in the same long-running failure class.
  • #35037 — missing incident visibility and protective pause behavior.

This report is narrower than general hallucination: it concerns claims about an externally visible application state where Codex had an explicit acceptance requirement but had only performed backend/configuration work.

Dominant language
Rust
Stars
125k
Forks
19.5k
Avg merge
1m
Merged PRs (30d)
1k

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from openai/codex

All issues in openai/codex

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.