安全与信任
这一页说明 Codewhale 如何处理你的代码、命令和数据——按实际实现来写,而不是按意图来写。每一条都取自仓库中的文档,事实门禁会在每次构建时核对。
你的数据去了哪里
- 本地 Runtime
- Runtime、工作区状态和审计日志都留在你的机器上。
- 托管提供商
- 你选择的托管提供商会收到本轮推理所需的上下文。中间没有强制经过 Codewhale 的中继。
- 本地推理
- 回环地址的本地模型路由(vLLM、Ollama、SGLang)可以让推理完全留在本机。
- 账户
- 本地 Runtime 不需要账户。
- Plan 模式
- Plan 是只读的。
审批不是沙箱
审批姿态——Ask、Auto-Review、Full Access——决定一条被提议的命令在执行前是否先展示给你。某一层的批准从来不是全局放行:后面的层仍然可以要求审查或阻止调用,而且批准也不等于操作系统级的沙箱授权。完整的模型工具调用流水线有九个有序的层,从有效配置、钩子、类型化权限规则、仓库法则、人工审批,直到执行沙箱。
各平台的 OS 沙箱
这里只描述已接入命令执行路径的行为,Codewhale 会报告它实际选用的机制。
- macOS — Seatbelt
- sandbox-exec 的运行时探测成功时自动启用。报告为
macos-seatbelt。 - Linux — bubblewrap
- 需显式启用:
prefer_bwrap = true且 /usr/bin/bwrap 可执行。报告为linux-bwrap。 - 没有 bwrap 的 Linux
- 默认没有 OS 包装层。报告为
none。 - Windows
- 当前实现没有 OS 包装层。报告为
none。 - 外部服务
sandbox_backend = "opensandbox"会把执行路由到兼容 OpenSandbox 的服务。
仓库中还有一个 seccomp 模块和一份未来的 Windows 辅助程序契约。两者都没有接入子命令启动,所以 Codewhale 不会宣传它们:只存在于源码中的沙箱代码不能证明某条命令受到了限制。
遥测,精确到每一项
Codewhale 0.9.12 默认统计匿名使用量,并在首次启动时告知你;早先的 0.9.11 版本会先询问。关闭是会被后续版本保留的选择,在早先的自愿开启政策下记录的关闭也始终有效。显示告知绝不会代你记录任何同意;处理方为 Codewhale 和 PostHog。
- 永远不收集
- 对话、代码、prompt、文件、文件/仓库/分支名、模型内容、凭据,以及任何逐轮或逐工具的时间线。
- 开启时发送
- 版本与平台类别、会话时长与结果、功能与错误计数、封闭枚举,以及一个每 90 天轮换的随机安装 id。
- 端点
https://telemetry.codewhale.net/v1/telemetry——第一方 Cloudflare Worker,源码在仓库的 telemetry-ingest/ 目录下。- 第一方存储
- 没有 IP、国家或地理位置列。不记录请求日志。保留期固定为三个月。
- PostHog
- 可选转发需要运营方单独配置,并验证出口不会转发客户端 IP。PostHog 保留期由项目另行设置;源码支持不代表该处理方已启用。
- 自己审计
- 设置
telemetry_endpoint = "":批次会追加写入你机器上的$CODEWHALE_HOME/telemetry/dryrun.jsonl,与服务器本应收到的内容逐字节一致,且不会构造任何 HTTP 客户端。 - 关闭
codewhale config set telemetry false或CODEWHALE_TELEMETRY=0。
本地审计日志
敏感事件——凭证、审批和提权事件——会尽力追加写入 $CODEWHALE_HOME/audit.log。写入失败会被记录而不是隐藏。提供商的 token 与缓存用量在可用时会在本地显示。
报告安全漏洞
安全报告请通过邮件发给维护者,而不是提交公开 issue。请附上页眉中的版本号,如有复现步骤也请一并提供。
源文档:docs/SANDBOX.md、docs/AUTHORIZATION_ORDER.md、docs/TELEMETRY.md、docs/public-surface-facts.json · 修改时请同步更新 docs-map.ts。