Skip to content

feat(acp): 安全实现 elicitation URL mode #154

Description

@YoungSx

背景

#146 的 form-mode elicitation 先行交付。ACP URL mode 不能只把 URL 做成普通可点击链接或在可被 Agent/模型读取的 WebView 中打开。

目标

在客户端具备经过平台验证的安全外部导航链路后,实现并广告:

{ "elicitation": { "form": {}, "url": {} } }

必须满足的 ACP 安全契约

  • 展示完整 URL,突出 host,并在导航前取得用户明确同意。
  • 不预取、不自动打开 URL。
  • 在 Agent 与模型无法检查页面或用户输入的安全上下文中打开。
  • 对 punycode / 可疑或歧义域名提示风险。
  • accept 仅表示用户同意打开,不能误报为外部流程完成。
  • 处理 agent 发来的 elicitation/complete:仅对同一连接的、已知且尚未完成的 opaque elicitationId 生效;未知或重复 ID 必须忽略。
  • URL 及完成回调不得把凭据、token 或网页内容写进模型上下文、日志、配置或同步数据。

验证

  • 五个平台的真实安全打开路径验证。
  • 完整 URL + host + 二次确认 UI smoke。
  • 未确认不打开;确认后返回 accept 且省略 content
  • cancel / decline 正确响应。
  • unknown / duplicate completion ID 被忽略。
  • 没有 URL capability 时收到 URL request 必须得到 -32602 Invalid params

关联

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions