Windows: Tool approval appears to misinterpret UTC deadline, prematurely rejecting an authorized command
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.905.11957
What subscription do you have?
ChatGPT Pro 20X
What platform is your computer?
Windows 11
What issue are you seeing?
Windows Codex App 的自动工具审批在创建进程前拒绝了一次用户已明确授权的受控 API 验证,理由称执行窗口已经过期。但当时保存的两份 UTC 时钟记录均显示,距离截止时间仍有约 7 小时 58 分钟。
原始拒绝理由:
“用户授权的是新建八小时窗口的单次验证,但命令绑定了已于2026-09-09 00:17 UTC过期的2026-09-08窗口,未按授权建立当前窗口,且仍可能触发真实Provider请求。”
时间记录:
- 窗口开始:2026-09-08T16:17:20.884Z
- 固定截止:2026-09-09T00:17:20.884Z
- 拒绝后时钟工具:2026-09-08 16:19:31 UTC
- 拒绝后本机 UTC:2026-09-08T16:19:32.239Z
- 对应本机本地时间:2026-09-09T00:19:32.241+08:00
这些记录与“窗口已过期”的理由不一致。无法访问审批内部使用的时间及判断依据,因此尚不能确认根因是否为时区处理错误。
期望行为:审批正确比较当前时间与带明确时区的截止时间。如果还有其他拒绝依据,请准确说明。
本次进程未启动,API 请求和凭据读取均为 0。拒绝后没有重试或绕过。
已通过应用内反馈上传诊断信息。
反馈 ID:01a0706d-9849-7441-a6c2-cc4979e4d603
What steps can reproduce the bug?
以下为本次事件的发生步骤,尚未确认可以稳定复现:
- 在 Windows Codex App 中,用户明确授权一次受控 API 验证,要求准确执行命令经过工具审批。
- 准备一个固定八小时窗口:
开始:2026-09-08T16:17:20.884Z
截止:2026-09-09T00:17:20.884Z - 对绑定上述窗口的命令,通过 exec_command 提交 require_escalated 审批。
- 工具在创建进程前拒绝执行,称该窗口已过期。
- 拒绝后仅进行只读时间核对:时钟工具及本机 UTC 均显示当时约为 2026-09-08 16:19 UTC,早于上述截止时间。
没有再次执行该命令。历史时间仅用于描述事件,不用于请求重新执行。
相关诊断信息已上传,反馈 ID:
01a0706d-9849-7441-a6c2-cc4979e4d603
What is the expected behavior?
No response
Additional information
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the Windows tool-approval path for exec_command requests using require_escalated, since no source file or test is named. Compare the stored UTC deadline with the current UTC time and use the uploaded diagnostic details to trace the rejection. Done means a still-valid eight-hour window is not rejected, while expired windows remain blocked and the process/API-call safeguard is preserved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- authorization
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100