#7345·FastGPT

[Feature] 增加 Agent Sandbox 出网域名策略和工具返回内容安全审查

Author: Mrxia7757Created Jul 21, 2026Updated Aug 13, 2026
Labelsfeature

例行检查

  • 我已确认目前没有类似 features
  • 我已确认我已升级到最新版本
  • 我已完整查看过项目 README,已确定现有版本无法满足需求
  • 我理解并愿意跟进此 features,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 features 可能会被无视或直接关闭

功能描述

希望 FastGPT 增加 Agent Sandbox 出网控制和工具返回内容安全审查能力。

当前 Agent 使用 Sandbox 联网搜索、访问网页、调用第三方 API 或检索公开代码仓库时,第三方返回数据可能包含政治、色情、暴力、煽动、违法及其他高风险内容。

这类内容并非用户主动输入,也不一定由大模型生成,而是来自不受信任的外部网站、搜索摘要、网页正文、仓库描述、评论或 API 数据。

当前可能出现以下情况:

  1. 用户提出正常的技术问题;
  2. Agent 通过 Sandbox 联网搜索;
  3. 第三方返回内容包含高风险文本;
  4. 大模型识别到风险后拒绝回答或直接中断;
  5. 但 Sandbox 的原始工具返回仍可能显示在工具卡片、运行详情或流式界面中;
  6. 原始内容还可能进入模型上下文、对话记录、Redis、MongoDB 或日志。

这意味着即使最终模型没有输出违规回答,用户仍可能直接看到工具原始返回。对于企业私有化部署,这是非常严重的内容安全风险。

希望 FastGPT 在 Sandbox 请求和响应边界提供以下能力。

1. Sandbox 出网控制

1.1 支持完全禁止 Sandbox 联网。

1.2 支持默认允许联网。

1.3 支持默认拒绝,仅允许白名单域名。

1.4 支持默认允许,但拒绝指定黑名单域名。

1.5 支持域名及通配符规则,例如:

  • example.com
  • *.example.com

1.6 支持 HTTP、HTTPS、端口及协议限制。

1.7 支持针对不同团队、应用、Agent、Skill 设置不同策略。

1.8 动态创建的 Sandbox 和对应 egress 容器应自动继承安全策略。

1.9 支持配置策略异常时的行为:

  • fail-open:审查异常时放行;
  • fail-closed:审查异常时阻断。

企业安全场景建议默认支持 fail-closed

1.10 域名策略应覆盖:

  • DNS 解析后的 IP 变化;
  • HTTP 重定向;
  • CDN 地址;
  • IPv4 和 IPv6;
  • 直接使用 IP 地址绕过域名规则的情况。

1.11 提供访问审计,但默认不保存完整请求正文和响应正文。

2. Sandbox 返回内容安全审查

希望所有外部工具返回在进入 FastGPT 之前统一审查,包括:

2.1 Sandbox stdout 和 stderr。

2.2 HTTP 响应正文。

2.3 搜索结果、网页正文和网页摘要。

2.4 JSON、HTML、XML 和 Markdown 内容。

2.5 下载文件解析后的文本。

2.6 Sandbox、Skill、MCP 和自定义工具返回。

建议处理链路为:

第三方网站或 API → Sandbox / egress → 返回内容标准化 → 安全审查 → 允许、脱敏或阻断 → 模型上下文、前端及持久化

安全审查应发生在以下操作之前:

  1. SSE 流式展示;
  2. 工具卡片展示;
  3. 下一轮模型请求;
  4. assistantResponses 和 nodeResponse 生成;
  5. 运行详情保存;
  6. 对话记录保存;
  7. Redis、MongoDB 及普通日志持久化。

3. 命中后的处理方式

建议支持三种处理动作:

3.1 allow:正常放行。

3.2 redact:仅替换命中字段,保留其他安全内容。

3.3 block:阻断整段内容,仅返回统一提示。

例如:

json
{
  "isError": true,
  "content": [
    {
      "type": "text",
      "text": "该工具返回内容触发服务器安全策略,结果已拦截。"
    }
  ]
}

命中后,原始内容不应继续发送给模型,也不应出现在前端、运行详情和普通持久化记录中。

4. 流式返回安全

联网工具可能采用流式返回。如果先展示、后审查,敏感内容仍可能被用户看到。

建议支持:

4.1 先缓存工具返回,审查通过后再展示。

4.2 或按安全窗口分段缓存,审查通过后再输出。

4.3 支持识别被拆分在多个数据块中的命中内容。

4.4 命中后立即停止后续流式输出。

4.5 已命中内容不得进入下一轮模型上下文。

5. 自定义安全审查服务

希望复用现有百度敏感校验或自定义安全校验 URL,并增加工具输出审查阶段,例如:

  • sandbox_http_response
  • sandbox_stdout
  • sandbox_stderr
  • mcp_response
  • skill_response
  • tool_response

同时支持接入企业本地部署的安全审查服务,避免将内部数据发送给第三方云平台。

应用场景

企业允许 Agent 使用 Sandbox 查询公开技术资料,但外部搜索结果中可能混入与用户问题无关的高风险内容。

期望结果:

  1. Sandbox 仍可正常联网;
  2. 外部返回内容先经过安全审查;
  3. 命中内容被脱敏或阻断;
  4. 其他安全结果仍可继续使用;
  5. 用户不会看到原始高风险文本;
  6. 原始内容不会进入模型上下文、运行详情和普通持久化记录;
  7. 大模型即使拒答或中断,也不会导致工具原始返回直接暴露。

相关示例

建议增加类似配置:

yaml
sandboxSecurity:
  network:
    mode: allowlist
    allowedDomains:
      - "docs.example.com"
      - "*.example.com"
    deniedDomains: []
    allowRedirects: false
    failMode: closed

  outputCensor:
    enabled: true
    provider: custom
    stages:
      - sandbox_http_response
      - sandbox_stdout
      - sandbox_stderr
      - mcp_response
      - skill_response
      - tool_response
    actionOnHit: block
    replacementText: "该工具返回内容触发服务器安全策略,结果已拦截。"
    scanBeforeStreaming: true
    persistRawContentOnHit: false

该需求不应仅针对某个网站或某一类关键词,而应作为 Sandbox 和 Agent 工具系统的统一安全边界。