Remove manual approval of "Keep Waiting" (auto-accept waiting extra time)
Open 💬 6 comments Opened Jul 10, 2026 by oxysoft
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
What version of Codex CLI is running?
codex-cli 0.144.0
What subscription do you have?
Most expensive
Which model were you using?
Any
What platform is your computer?
Linux
What terminal emulator and version are you using (if applicable)?
_No response_
Codex doctor report
idk I'd have to wait a minute for the result apparently, performance is non-existent
What issue are you seeing?
This is useless. I sent a prompt, that means I want it to complete. Please do not introduce regressions like this again.
What steps can reproduce the bug?
Classifier
What is the expected behavior?
Do not stop.
Additional information
_No response_
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I am having the same issue. Since I'm working with multiple agents this blocks their work unnecessarily. By the time I click "continue anyway" it probably would have finished.
In my opinion a better option is to just print a NOTE in the transcript rather than a prompt.
I'm having this problem as well, and would like to see it fixed; it's especially disruptive for all-night AFK workflows.
<details>
<summary><b>Expand for hacky workaround using tmux, generated by sol</b></summary>
This wrapper starts Codex inside a new tmux session when needed. If already inside tmux, it uses the current pane. It watches for the safety-check prompt, moves the selection to Keep waiting, and presses Enter.
Codex can then be invoked normally:
Down Enteris intentional: option 1 is highlighted by default, soDownselects 2. Keep waiting, thenEnterconfirms it.</details>
This remains a UX problem in
codex-cli 0.145.0, even though the current implementation appears to have changed the backend semantics so that no confirmation is required.The current popup is:
I initially interpreted this as a blocking approval prompt and had to inspect the implementation to determine whether an unattended Sol request would continue. In the current TUI source, "Dismiss and keep waiting" has no action callback; only "Retry with a faster model" sends an event. So the server-side safety check continues without input.
The remaining issue is interaction semantics: a three-item selection view, with "Retry with a faster model" highlighted first, strongly communicates "the program is waiting for your choice." The footer contradicts the control presented above it. For unattended/all-night workflows, users should not have to inspect source code to know that the request is still running.
Suggested behavior:
safety_buffering_prompt = "status-only".Expected result: unattended requests continue exactly as they apparently already do in 0.145.0, while the UI no longer resembles a blocking approval dialog.
This is still a serious unattended-workflow failure in codex-cli 0.147.0.
I started a long-running /goal and went away. Almost immediately afterward, the safety-buffering dialog appeared asking whether to retry with a faster model. The goal then did no further work for hours until I returned and noticed the dialog. In the end, the overnight run accomplished nothing.
This must have a persistent config.toml opt-out. When enabled, Codex should always keep waiting, never present the modal selection UI, and never pause or otherwise interfere with an unattended goal. For example:
[tui]
safety_buffering_prompt = "status-only"
A non-modal status message is fine. Asking for an optional model switch must never strand an autonomous run.
I traced this to
codex-rs/tui/src/chatwidget/safety_buffering.rs. The current turn already keeps waiting, butModelSafetyBufferingUpdatedstill installs the modal selection view and can disrupt unattended/goal workflows.A minimal persistent opt-out is an optional global config field:
When true, the handler follows the existing hidden-UI path: it does not register a retryable buffered turn or open the model-switch chooser, while the original turn and model continue waiting unchanged. Default behavior remains unchanged when the field is absent/false.
I implemented the config type, generated schema, TUI guard, and snapshot test here for reference:
https://github.com/mik-tf/codex/commit/d9e71be191
The focused TUI test and all 281
codex-configtests pass. Since the contribution guide says external PRs are not accepted, I am linking the implementation here as root-cause analysis/reference for an internal fix.