Skip to content

feat(codex): add interactive approvals #20

Description

@ryan-wong-coder

Parent roadmap: #15

What

在 Flowix 中实现 Codex App Server 的交互式审批和用户输入流程,覆盖命令执行、文件修改、权限升级及 requestUserInput

Why

codex exec 非交互模式无法在 Flowix 内完整呈现和处理双向审批。没有原生审批层时,只能提前授予较宽权限或让任务失败,既影响体验也削弱安全边界。

Implementation

  • 定义 CodexApprovalRequestCodexApprovalDecision,保留 approval、thread、turn、item 关联 ID。
  • 处理 command execution、file change、additional permissions 和 item/tool/requestUserInput server requests。
  • 提供允许一次、会话内持续允许和拒绝操作;仅在协议明确支持时显示持续允许。
  • 命令审批展示完整命令、cwd、网络/权限上下文和风险提示。
  • 文件审批展示目标路径和 Diff;路径位于工作区外时明确标记。
  • 用户输入请求支持文本、选择项和取消。
  • 未识别审批类型默认拒绝,并记录安全截断的诊断信息。
  • 断线、Turn 中断或请求过期时自动关闭对应审批并向用户说明原因。
  • 将审批结果写入 Flowix 本地运行审计记录,不保存 Codex 凭据。

Acceptance criteria

  • Codex 请求审批时,Turn 保持等待而不是异常结束。
  • 每个审批只能完成一次,重复点击不会重复发送决定。
  • 拒绝、过期、断线和中断均能正确恢复 UI 状态。
  • 未知审批请求无法绕过用户确认。
  • 会话内持续允许只影响当前 Codex session 的 approval cache。
  • 审批历史可从运行诊断中追踪,但敏感命令输出按现有策略截断。
  • 覆盖允许、持续允许、拒绝、超时、重复响应、断线和未知类型测试。

Dependencies

Non-goals

  • 不实现实验性的自动审批或 auto-review。
  • 不在本阶段扩展 Flowix MCP 工具集合。
  • 不绕过 Codex sandbox、managed configuration 或 requirements 限制。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions