Bug: Codex / GPT-5.5 触发需要审批的工具调用后,1Code UI 一直卡在 Running command / Generating
现象
在 1Code 中使用 Codex / GPT-5.5 发起任务,模型触发需要权限审批的 shell 命令后,界面会一直停在:
Running command: /bin/zsh,-lc,curl
- 底部状态保持
Generating...
- 不返回工具结果,也不结束当前 turn
示例命令:
curl -I -L --max-time 15 -A 'Mozilla/5.0 ...' https://www.jianshu.com/
复现路径
- 在 1Code 中选择 Codex / GPT-5.5。
- 发送类似任务:
https://www.jianshu.com/ 非侵入式地漏洞挖掘一下这个网页
- 模型执行到需要外部网络 / escalation 的
curl 命令。
- UI 卡在
Running command,不会进入 finish。
会话日志证据
关键记录:
- 第一次普通
curl 有正常 function_call_output,返回 DNS 错误:line 30
- 第二次发起
sandbox_permissions: "require_escalated" 的 exec_command:line 35
- line 35 之后没有对应的
function_call_output / task_complete,所以前端一直等不到 finish
代码证据
Codex provider 创建时没有接入任何权限审批 handler,只传了 ACP 启动、env、auth、session 等配置:
源码位置
Codex chat 直接把 provider.tools 交给 streamText:
源码位置
Codex 前端 transport 只处理 session-init、auth-error、error、finish,没有处理 ACP session/request_permission 或 Codex 工具审批事件:
源码位置
对比 Claude 路径,Claude 有完整的工具审批/回传链路:
ACP 协议本身定义了 session/request_permission,这是 client-side 用户授权请求:
schema.json
当前使用的 @mcpc-tech/acp-ai-provider 内部有 requestPermission,但没有 handler 时会默认选择第一个 option,而不是交给 1Code UI:
index.mjs
同时 ACPProviderSettings 类型里也没有暴露 permission handler 配置项:
types.d.ts
初步判断
1Code 当前没有实现 Codex 工具审批的产品级处理链路。
当 Codex / GPT-5.5 发起 require_escalated 的工具调用时,前端没有审批 UI,后端也没有 pending approval 状态、超时兜底、拒绝/批准回传。结果就是流无法收到正常工具结果或 finish,UI 一直停在 Generating...。
期望行为
- Codex 触发敏感工具调用时,1Code 应显示审批 UI。
- 用户可以 approve / deny。
- 审批结果应回传给 Codex ACP。
- 如果超时或无法处理,应返回明确错误并结束本轮,不能无限卡住。
建议修复
- 为 Codex ACP 接入
session/request_permission 处理链路。
- 增加 Codex 侧
pendingToolApprovals / respondToolApproval 类似 Claude 的机制。
- 前端支持 Codex 工具审批 UI 和回传。
- 增加工具调用超时兜底,避免 UI 永久
Generating...。
Bug: Codex / GPT-5.5 触发需要审批的工具调用后,1Code UI 一直卡在 Running command / Generating
现象
在 1Code 中使用 Codex / GPT-5.5 发起任务,模型触发需要权限审批的 shell 命令后,界面会一直停在:
Running command: /bin/zsh,-lc,curlGenerating...示例命令:
curl -I -L --max-time 15 -A 'Mozilla/5.0 ...' https://www.jianshu.com/复现路径
https://www.jianshu.com/ 非侵入式地漏洞挖掘一下这个网页curl命令。Running command,不会进入 finish。会话日志证据
关键记录:
curl有正常function_call_output,返回 DNS 错误:line 30sandbox_permissions: "require_escalated"的exec_command:line 35function_call_output/task_complete,所以前端一直等不到 finish代码证据
Codex provider 创建时没有接入任何权限审批 handler,只传了 ACP 启动、env、auth、session 等配置:
源码位置
Codex chat 直接把
provider.tools交给streamText:源码位置
Codex 前端 transport 只处理
session-init、auth-error、error、finish,没有处理 ACPsession/request_permission或 Codex 工具审批事件:源码位置
对比 Claude 路径,Claude 有完整的工具审批/回传链路:
pendingToolApprovals: claude.tsrespondToolApprovalmutation: claude.tsACP 协议本身定义了
session/request_permission,这是 client-side 用户授权请求:schema.json
当前使用的
@mcpc-tech/acp-ai-provider内部有requestPermission,但没有 handler 时会默认选择第一个 option,而不是交给 1Code UI:index.mjs
同时
ACPProviderSettings类型里也没有暴露 permission handler 配置项:types.d.ts
初步判断
1Code 当前没有实现 Codex 工具审批的产品级处理链路。
当 Codex / GPT-5.5 发起
require_escalated的工具调用时,前端没有审批 UI,后端也没有 pending approval 状态、超时兜底、拒绝/批准回传。结果就是流无法收到正常工具结果或 finish,UI 一直停在Generating...。期望行为
建议修复
session/request_permission处理链路。pendingToolApprovals/respondToolApproval类似 Claude 的机制。Generating...。