openai / openai/codex

Restore blocking control for request_user_input independently of Plan mode

Open
#43,759 3 comments 9 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app enhancement plan tool-calls
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What variant of Codex are you using?

Codex desktop app on macOS, Default mode.

What feature would you like to see?

Please restore explicit blocking control for request_user_input and provide a persistent Always wait for my answer setting that also works in Default mode.

When Codex asks me a question, I expect to be able to leave it pending until I explicitly answer or cancel. Currently, an unanswered question can time out and execution resumes without my answer. A tool presented as asking the user for input should let the user require an actual answer. Being away from the keyboard does not mean I have made a decision.

Current behavior and the missing control

PR #36410 removed autoResolutionMs from the model-facing tool schema and made blocking depend on collaboration mode. The current handler sets:

is_blocking: mode == ModeKind::Plan,
auto_resolution_ms: None,

In my desktop Default-mode session, the exposed request_user_input schema accepts questions but offers neither a timeout control nor an explicit blocking flag. I could not find a persistent user setting to make these questions wait indefinitely.

I understand that Plan-mode questions already block. The gap is that normal implementation work also encounters questions that require a human decision. Switching the entire task to Plan mode just to make a question wait couples two different concerns: how the agent works, and whether an unanswered question may expire.

Requested behavior
  1. Add an app setting and/or documented configuration option to disable question auto-resolution globally. With this enabled, unanswered questions remain pending until the user explicitly answers or cancels, including in Default mode.
  2. Restore per-call control in the model-facing tool schema, such as isBlocking: true, or a timeout parameter with a documented no-timeout value. It does not need to reuse the old parameter name.
  3. Let the user's global always-wait preference take precedence over a per-call request to auto-resolve.
  4. When blocking is requested, do not submit an empty answer or infer a choice merely because time has elapsed. Work that depends on the answer must remain paused.
  5. Show clearly whether a question will wait indefinitely or has an explicitly enabled timeout.

Increasing the timeout is not sufficient: I may return hours later. The desktop per-question Snooze / 停用 action helps with an existing prompt, but still requires noticing and interacting with each prompt before it expires. An AGENTS.md instruction cannot configure a parameter absent from the tool schema.

Acceptance scenario

Enable Always wait for my answer, start a task in Default mode, and have Codex ask a clarification question before continuing implementation. Leave the question unanswered beyond the normal timeout, including while another task is selected. The question must remain pending and dependent implementation must not resume. Answering it should then resume the task normally.

Additional information
  • Desktop app version: 26.901.51231 (build 8109).
  • Bundled Codex CLI: 0.153.4.
  • Platform: macOS 15.7.4, Apple Silicon (arm64).
  • Related change: #36410.
  • Related requests: #37472 (Default-mode indefinite waiting), #29702 (desktop setting), #34455 (timeout policy), and #28969 (disable auto-resolution).

This overlaps those requests and adds my desktop report and request to restore an explicit tool-level blocking contract. Please link or consolidate as appropriate.

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.

Research direction

The issue identifies the request_user_input handler and its mode-based is_blocking/auto_resolution_ms behavior; start by tracing that handler and the model-facing tool schema. Review related change #36410 and overlapping issues #37472, #29702, #34455, and #28969 before choosing the setting and per-call contract. Done means Default-mode questions remain pending past the normal timeout until answered or canceled, and answering resumes dependent work.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
ai-infra-agents
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.