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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions