Codex Desktop on Windows: MCP elicitation approvals lack the actionable notification used for command approvals

Open 💬 4 comments Opened Jul 29, 2026 by graemeh
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What version of the Codex App are you using?

Codex Desktop 26.721.4979.0 (Microsoft Store/AppX, x64).

The affected task recorded embedded Codex core version 0.146.0-alpha.3.1.

What subscription do you have?

Not relevant to the observed approval-routing behaviour.

What platform is your computer?

Windows 25H2, x64, build 26200.8875.

What issue are you seeing?

Blocking approval requests in Codex Desktop are notified differently depending on the internal authorization event type.

During one naturally occurring background task, two approvals occurred in the same task and agent turn:

  1. A local command required sandbox escalation. Codex represented it internally as ExecApproval. Windows displayed a prominent Command approval notification with Approve, Approve for session, and Decline actions.
  2. Roughly one minute later, an in-app browser-control operation required user authorization. Codex represented it internally as an MCP ResolveElicitation request. The task blocked, but no equivalent actionable Windows notification appeared. The only visible attention state was a green Awaiting approval sidebar tag and a very small orange/red symbol in the Companion bubble.

The affected task remained in the background while another Codex task was selected, so task-selection state does not explain the difference between these two requests.

The Companion bubble also displayed an earlier task-progress message rather than the pending authorization request. Local event correlation showed that this text had been emitted about ten minutes before the approval events and was ordinary progress commentary, not an approval description.

This creates three apparent user-facing states from two underlying authorization events:

| Internal event | Blocking state | User-facing notification |
|---|---|---|
| ExecApproval from a direct command | Yes | Actionable Windows approval notification |
| MCP elicitation from browser control | Yes | Subtle sidebar/Companion attention state only |
| Generic task attention wrapper | Derived from the pending approval | Reuses unrelated earlier progress text |

Both authorization events stopped execution until the user responded. Only one was presented as a clear, actionable approval request.

What steps can reproduce the bug?

This sequence produced the issue during ordinary work. It has not yet been confirmed as a deterministic reproduction:

  1. Enable Ask for approval in Codex Desktop.
  2. Run a task in the background while another Codex task remains selected.
  3. In the background task, execute a local command that requires sandbox escalation.
  4. Observe the Windows Command approval notification and approve it.
  5. In the same task and turn, invoke an in-app browser-control operation that triggers MCP elicitation, such as making the browser visible and opening a local preview.
  6. Observe that the task blocks for the MCP response without showing an equivalent actionable Windows notification.
  7. Inspect the sidebar and Companion. The approval may be represented only by a small attention symbol and Awaiting approval tag, while the Companion text describes earlier task progress rather than the authorization request.

The user-facing subtle-notification pattern has occurred more than once. The paired internal comparison above was captured once with sufficient logs to distinguish the two event classes.

What is the expected behavior?

Every authorization event that blocks a task should produce an equally prominent and actionable attention signal when its approval controls are not already visible, regardless of whether the backend event is:

  • ExecApproval;
  • edit approval;
  • MCP elicitation; or
  • another user-input event that blocks execution.

For privacy, the desktop notification can use a bounded summary such as Codex is waiting for approval and open the exact pending request inside Codex. It does not need to expose full commands, URLs, local paths, or tool inputs on the Windows lock screen.

The notification and in-app attention state should:

  1. identify that authorization is required, rather than looking like ordinary progress or completion;
  2. take the user directly to the exact pending request;
  3. remain visible until the request is resolved; and
  4. never substitute stale task-progress text for the approval description.

Why this matters

  • A background task can remain blocked indefinitely without a proportionate notification.
  • A green tag can read as healthy or completed rather than requiring intervention.
  • The tiny Companion symbol does not explain what action is required.
  • Reusing unrelated progress text makes the blocked state look like normal task activity.
  • Inconsistent approval visibility weakens the authorization control surface: users cannot reliably tell when Codex is waiting for a consequential decision.

Internal correlation

The local trace distinguishes the requests without relying only on screenshots:

  • The command request was a direct shell-tool call with explicit escalation and an ExecApproval decision.
  • The browser request was a node_repl tool call that generated an MCP elicitation and was resolved through ResolveElicitation.
  • Both occurred in the same task and agent turn under on-request approval mode.
  • The displayed progress text preceded the approvals and was not part of either authorization payload.

The evidence establishes separate event classes and different user-facing treatment. It does not establish the precise client-side implementation branch or claim that timing is the root cause.

Likely subsystem:

  • Codex Desktop notification dispatch;
  • approval-event adapters;
  • MCP elicitation routing;
  • task attention-state aggregation; and
  • Companion notification content selection.

Related issues

Related but not exact duplicates:

  • #35379 requests an external notification event for MCP elicitations. This report concerns Codex Desktop's native Windows notification and in-app attention behaviour.
  • #20817 requests better sidebar surfacing for tasks awaiting approval. This report adds an event-type distinction and stale-message substitution.
  • #33323 concerns inactive approval requests unexpectedly switching the selected task. This report concerns the opposite failure: a background approval can remain too subtle without switching or producing an actionable notification.

Privacy-safe evidence note

Raw screenshots are not attached because they contain account details, task names, unrelated conversation text, branch information, and project context.

Sanitized notification-only crops can be provided. The underlying task, turn, command-call, and MCP request identifiers are retained privately and can be shared with maintainers through an appropriate non-public channel if needed.

Raw local paths, complete command payloads, browsing details, project data, and session logs are intentionally omitted from this public report.

View original on GitHub ↗

4 Comments

github-actions[bot] contributor · 29 days ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #35379

Powered by Codex Action

claell · 14 days ago

Independent Windows observation

I observed the same notification asymmetry during ordinary use of Codex Desktop on Windows:

  • Command approvals continued to produce actionable Windows notifications even though notifications were generally muted in my configuration.
  • An in-app browser access request presented a blocking permission prompt in Codex, but did not produce an equivalent Windows notification.

Because command approval notifications still appeared, this did not look like a complete loss of Codex's Windows notification capability. The behavior instead appeared specific to the browser-authorization path.

I did not verify whether the green Awaiting approval sidebar indicator appeared during this occurrence, so I cannot add evidence for or against that part of the report. This was also an ordinary-workflow observation rather than a controlled reproduction.

The currently installed Codex Desktop version is 26.803.10989.0. I have not correlated the occurrence with logs closely enough to establish that it happened on this exact build, so this is the current environment rather than a confirmed affected-version claim.

This supports keeping this report distinct from #35379: the behavior observed here concerns Codex Desktop's built-in Windows notification routing for browser/MCP elicitation, not an external notify hook.

ryandaly49 · 7 days ago

Additional reproduction: Awaiting approval with no visible approval request

Observed: August 20, 2026 at 12:14 PM EDT (America/New_York)

A Windows / Google Chrome ChatGPT-Codex sidebar task became blocked in an approval state with no actionable approval surface.

What was visible
  • Task: Resume Active Listings audit
  • Recent-task list showed a green Awaiting approval badge.
  • The same row showed 25m and a continuing spinner.
  • The user had never been presented with an approval request for this action.
  • With the affected task open in the sidebar, there was no visible Approve, Allow, Deny, or other approval control to resolve the state.

The task therefore could not continue even though the UI knew that an approval was pending.

Impact
  • Confirmed: the production task was unable to continue for at least the visible 25-minute interval.
  • Confirmed: there was no usable approval control in the visible sidebar.
  • Not confirmed: whether this stalled state itself consumed additional Codex usage/credits.
  • Recovery may require a restart or repeated prompt, which is relevant to usage accounting, but that impact is being tracked separately from confirmed facts.

Two screenshots were captured before changing the state. They show the full Chrome/sidebar context and a close-up of the Awaiting approval / 25m row.

This occurred after a separate same-day Windows/Chrome native-host/sidebar instability reproduction, which was reported under #32706. I am keeping this approval-surface failure separate because the visible symptom is different: the approval state exists, but the user-facing request needed to satisfy it is absent.

ryandaly49 · 6 days ago

Additional reproduction: second hidden approval freeze on Windows/Chrome

Observed: August 21, 2026 at approximately 11:19 AM EDT (America/New_York)

I hit the same approval-surface failure again in a separate Windows / Google Chrome ChatGPT-Codex sidebar task.

Visible state
  • Task: Design listing change marketing
  • Recent-task list showed a green Awaiting approval badge.
  • The same row showed 20m with a continuing spinner.
  • With the affected task open, the sidebar was still showing Thinking / Working for 20m 19s.
  • There was no visible Approve, Allow, Deny, or equivalent approval control anywhere in the active sidebar.
  • The task was therefore blocked even though the UI knew an approval was pending.

This is a separate occurrence from my August 20 reproduction on the same issue, which involved Resume Active Listings audit and showed Awaiting approval for 25 minutes with no actionable approval surface.

Impact
  • Confirmed: the task could not continue for at least the visible 20-minute interval.
  • Confirmed: the approval state was visible in the task list while the corresponding approval controls were absent from the active task UI.
  • Not confirmed: whether the stalled interval itself consumed additional Codex weekly usage/credits.
  • Repeated hidden-approval freezes can force restarts or repeated prompts, so any resulting duplicated work or usage impact is being tracked separately from confirmed facts.

Two screenshots were captured before changing the state. They show the green Awaiting approval / 20m row and the active task still stuck in Thinking / Working for 20m 19s with no approval controls.

This appears to be a second direct reproduction of the same Windows approval-surface defect rather than the earlier native-host/resourcesPath issue tracked separately under #32706.