Skip to content

fix(codex): TUI 模态弹窗(额度<10% 切 luna 确认等)吞掉提交 Enter,导致 submit_unconfirmed 且消息未执行 #1281

Description

@DeepColds

现象

Codex 会话经常报 submit_unconfirmed(「消息提交自动确认失败 / 输入提交」),且用户确认消息确实没有执行(不是落盘延迟误报)。

复现环境:

  • botmux 3.18.14(当时 npm 最新稳定版)
  • codex-cli 0.153.4
  • backend: tmux(传统粘贴提交链路)

疑似根因

传统提交链路是「bracketed paste 正文 + 延迟 ~200ms 补一个 Enter」。当 Codex TUI 此刻正弹着任意模态框时,那次 Enter 会被弹窗消费掉,正文留在 composer 未提交 → 表现为 submit_unconfirmed 且未执行。

已知会抢 Enter 的弹窗至少包括:

  • 目录信任 Press t to trust
  • 版本更新选择框
  • approval / 审批确认
  • 额度 < 10% 时 Codex CLI 弹出的「是否切换到 luna 模型」确认框 ← 本次用户新发现的触发源

关键佐证

用户把该 tmux Codex 会话切到 Dashboard → 设置 → 实验性配置 → Codex 家族 RPC 输入模式(走 app-server JSON-RPC、绕开终端粘贴 + TUI 层)后,问题不再复现。这反向坐实了问题出在传统粘贴链路遇到 TUI 弹窗时 Enter 被吞,而非记录落盘延迟。

相关上游:openai/codex#28167(长输入下粘贴后的 Enter 被当成粘贴内容)。

建议方向(待评估)

  • 传统粘贴链路在补 Enter 前,先探测 composer 是否处于「有待确认模态框」状态;若是则不要盲发 Enter(避免把弹窗当默认项确认掉),改为上报 / 提示人工处理。
  • 或对已知弹窗(trust/update/approval/切模型)做识别与安全回收后再提交。
  • RPC 输入模式目前只对满足条件的 tmux Codex 会话生效;命中沙箱 / readIsolation / 审批门控 / wrapper / startup commands 会自动退回传统粘贴链路,此时问题仍会复现,因此不能只靠 RPC 规避。

备注

暂不要用 tui.disable_paste_burst=true 规避——上游实测该项可能让多行输入丢换行。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions