core-agent-ide/codex-rs/tui/src
Michael Bolin ddfa032eb8
fix: chatwidget was not honoring approval_id for an ExecApprovalRequestEvent (#12746)
## Why

`ExecApprovalRequestEvent` can carry a distinct `approval_id` for
subcommand approvals, including the `execve`-intercepted zsh-fork path.

The session registers the pending approval callback under `approval_id`
when one is present, but `ChatWidget` was stashing `call_id` in the
approval modal state. When the user approved the command in the TUI, the
response was sent back with the wrong identifier, so the pending
approval could not be matched and the approval callback would not
resolve.

Note `approval_id` was introduced in
https://github.com/openai/codex/pull/12051.

## What changed

- In `tui/src/chatwidget.rs`, `ChatWidget` now uses
`ExecApprovalRequestEvent::effective_approval_id()` when constructing
`ApprovalRequest::Exec`.
- That preserves the existing behavior for normal shell and
`unified_exec` approvals, where `approval_id` is absent and the
effective id still falls back to `call_id`.
- For subcommand approvals that provide a distinct `approval_id`, the
TUI now sends back the same key that
`Session::request_command_approval()` registered.

## Verification

- Traced the approval flow end to end to confirm the same effective
approval id is now used on both sides of the round trip:
- `Session::request_command_approval()` registers the pending callback
under `approval_id.unwrap_or(call_id)`.
- `ChatWidget` now emits `Op::ExecApproval` with that same effective id.
2026-02-24 22:27:05 -08:00
..
app fix: chatwidget was not honoring approval_id for an ExecApprovalRequestEvent (#12746) 2026-02-24 22:27:05 -08:00
bin replace tui_markdown with a custom markdown renderer (#3396) 2025-09-10 12:13:53 -07:00
bottom_pane chore: migrate additional permissions to PermissionProfile (#12731) 2026-02-25 03:35:28 +00:00
chatwidget fix: chatwidget was not honoring approval_id for an ExecApprovalRequestEvent (#12746) 2026-02-24 22:27:05 -08:00
exec_cell Handle orphan exec ends without clobbering active exploring cell (#12313) 2026-02-22 14:26:58 +00:00
notifications Added tui.notifications_method config option (#10043) 2026-01-28 12:00:32 -08:00
onboarding fix(tui): preserve URL clickability across all TUI views (#12067) 2026-02-21 15:31:41 -08:00
public_widgets Persist text elements through TUI input and history (#9393) 2026-01-19 23:49:34 -08:00
render Add C# syntax option to highlight selections (#12511) 2026-02-22 12:15:20 -08:00
snapshots chore: rm hardcoded PRESETS list (#12650) 2026-02-23 22:35:51 -08:00
status fix(tui): preserve URL clickability across all TUI views (#12067) 2026-02-21 15:31:41 -08:00
streaming feat(tui): pace catch-up stream chunking with hysteresis (#10461) 2026-02-03 15:01:51 -08:00
tui feat(tui): pace catch-up stream chunking with hysteresis (#10461) 2026-02-03 15:01:51 -08:00
additional_dirs.rs chore: remove codex-core public protocol/shell re-exports (#12432) 2026-02-20 23:45:35 -08:00
app.rs ctrl-L (clears terminal but does not start a new chat) (#12628) 2026-02-24 10:03:42 -08:00
app_backtrack.rs chore: remove codex-core public protocol/shell re-exports (#12432) 2026-02-20 23:45:35 -08:00
app_event.rs voice transcription (#3381) 2026-02-23 22:15:18 +00:00
app_event_sender.rs tui: switch to using tokio + EventStream for processing crossterm events (#2489) 2025-08-20 17:11:09 +00:00
ascii_animation.rs chore: remove model upgrade popup (#4332) 2025-09-27 13:25:09 -07:00
chatwidget.rs fix: chatwidget was not honoring approval_id for an ExecApprovalRequestEvent (#12746) 2026-02-24 22:27:05 -08:00
cli.rs feat: split codex-common into smaller utils crates (#11422) 2026-02-11 12:59:24 +00:00
clipboard_paste.rs Fixed TUI regression related to image paste in WSL (#9473) 2026-01-18 23:02:02 -08:00
clipboard_text.rs feat(tui) - /copy (#12613) 2026-02-24 14:17:01 -08:00
collaboration_modes.rs Sync collaboration mode naming across Default prompt, tools, and TUI (#10666) 2026-02-04 23:03:28 -08:00
color.rs update composer + user message styling (#4240) 2025-09-26 16:35:56 -07:00
custom_terminal.rs tweaked /clear to support clear + new chat, also fix minor bug for macos terminal (#12520) 2026-02-23 09:11:05 -08:00
cwd_prompt.rs tui: exit session on Ctrl+C in cwd change prompt (#12040) 2026-02-17 14:48:12 -08:00
debug_config.rs chore: remove codex-core public protocol/shell re-exports (#12432) 2026-02-20 23:45:35 -08:00
diff_render.rs feat(tui): add theme-aware diff backgrounds with capability-graded palettes (#12581) 2026-02-24 11:55:01 -08:00
exec_command.rs chore: remove codex-core public protocol/shell re-exports (#12432) 2026-02-20 23:45:35 -08:00
external_editor.rs feat: open prompt in configured external editor (#7606) 2025-12-22 15:12:23 -08:00
file_search.rs app-server: add fuzzy search sessions for streaming file search (#10268) 2026-02-12 10:49:44 -08:00
frames.rs Login flow polish (#3632) 2025-09-15 00:42:53 -07:00
get_git_diff.rs Show progress indicator for /diff command (#2245) 2025-08-15 15:32:41 -07:00
history_cell.rs feat(core): persist network approvals in execpolicy (#12357) 2026-02-23 21:37:46 -08:00
insert_history.rs feat(tui) /clear (#12444) 2026-02-21 22:06:56 -08:00
key_hint.rs Add vim navigation keys to transcript pager (#7550) 2025-12-09 10:23:11 -08:00
lib.rs feat: pass helper executable paths via Arg0DispatchPaths (#12719) 2026-02-24 17:44:38 -08:00
line_truncation.rs fix: add ellipsis for truncated status indicator (#12540) 2026-02-23 11:45:46 -08:00
live_wrap.rs Stream model responses (#1810) 2025-08-05 04:23:22 +00:00
main.rs feat: pass helper executable paths via Arg0DispatchPaths (#12719) 2026-02-24 17:44:38 -08:00
markdown.rs tui: drop citation rendering (#4855) 2025-10-20 21:08:19 +00:00
markdown_render.rs feat(tui): syntax highlighting via syntect with theme picker (#11447) 2026-02-21 20:26:58 -08:00
markdown_render_tests.rs feat(tui): syntax highlighting via syntect with theme picker (#11447) 2026-02-21 20:26:58 -08:00
markdown_stream.rs tui: drop citation rendering (#4855) 2025-10-20 21:08:19 +00:00
mention_codec.rs TUI/Core: preserve duplicate skill/app mention selection across submit + resume (#10855) 2026-02-06 15:59:00 -08:00
model_migration.rs fix(tui): preserve URL clickability across all TUI views (#12067) 2026-02-21 15:31:41 -08:00
multi_agents.rs feat: keep dead agents in the agent picker (#12570) 2026-02-23 12:58:55 +00:00
oss_selection.rs chore: nuke chat/completions API (#10157) 2026-02-03 11:31:57 +00:00
pager_overlay.rs fix(tui): preserve URL clickability across all TUI views (#12067) 2026-02-21 15:31:41 -08:00
resume_picker.rs feat: add nick name to sub-agents (#12320) 2026-02-20 14:39:49 +00:00
selection_list.rs splash screen (#8270) 2025-12-18 10:59:53 -08:00
session_log.rs feat(tui) /clear (#12444) 2026-02-21 22:06:56 -08:00
shimmer.rs tui: hardcode xterm palette, shimmer blends between fg and bg (#4957) 2025-10-08 20:23:13 +00:00
skills_helpers.rs feat: split codex-common into smaller utils crates (#11422) 2026-02-11 12:59:24 +00:00
slash_command.rs feat(tui) - /copy (#12613) 2026-02-24 14:17:01 -08:00
status_indicator_widget.rs fix: show command running in background terminal in details under status indicator (#12549) 2026-02-23 21:04:24 +00:00
style.rs Make plan highlight use popup grey background (#10253) 2026-01-30 12:39:15 -08:00
terminal_palette.rs feat(tui): add theme-aware diff backgrounds with capability-graded palettes (#12581) 2026-02-24 11:55:01 -08:00
test_backend.rs feat: Constrain values for approval_policy (#7778) 2025-12-17 16:19:27 +00:00
text_formatting.rs feat(tui): add /statusline command for interactive status line configuration (#10546) 2026-02-05 08:50:21 -08:00
theme_picker.rs feat(tui): add theme-aware diff backgrounds with capability-graded palettes (#12581) 2026-02-24 11:55:01 -08:00
tooltips.rs Point Codex App tooltip links to app landing page (#11515) 2026-02-12 23:35:57 -08:00
tui.rs feat(tui) /clear (#12444) 2026-02-21 22:06:56 -08:00
ui_consts.rs Fixes (#4458) 2025-09-30 00:10:04 +00:00
update_action.rs fix: use brew upgrade --cask codex to avoid warnings and ambiguity (#9823) 2026-01-26 16:21:09 -08:00
update_prompt.rs fix: update brew auto update version check (#6238) 2025-11-10 09:05:00 -08:00
updates.rs updates: use brew api for version check (#10809) 2026-02-05 15:12:27 -08:00
version.rs Added CLI version to /status output (#3223) 2025-09-05 16:27:31 -07:00
voice.rs Add TUI realtime conversation mode (#12687) 2026-02-24 12:54:30 -08:00
wrapping.rs fix(tui): recover on owned wrap mapping mismatch (#12609) 2026-02-23 20:14:50 +00:00