启用 Zero Data Retention(ZDR)后 /web-setup 不可用,是因为云会话所有必经环节(GitHub Token 同步、对话历史持久化、提示与模型响应落库)都必须由 Anthropic 服务端长期存储,而 ZDR 的契约是”处理完即丢弃,不在服务端留存任何 prompt / response 落盘”,两者在数据生命周期上正面冲突;为守住承诺,ZDR 组织在产品层面直接关停云会话相关命令与功能,本地 CLI 与 API 调用不受影响。
一、先厘清 ZDR 的承诺范围
ZDR(Zero Data Retention)是 Anthropic 对企业客户提供的一种数据处理安排:API 请求完成后,Anthropic 不在服务端保留客户 prompt 与 response 的静态存储;只保留”功能运行所必需的最短 TTL”(如部分会话重置 token),且任何保留数据都遵循”不用于训练、按需可清除”。这套契约针对的是 Claude API(含 AWS 上的 Claude Platform、Microsoft Foundry 中的 Claude 集成),由 Anthropic 作为数据处理者。
ZDR 不覆盖 Claude Console、Claude Free / Pro / Max 消费级产品、Claude Teams 与 Claude Enterprise 的产品界面(除 Claude Code 在 Enterprise 启用 ZDR 的子集)。换句话说,ZDR 是 API 维度的承诺,不是账号维度的产品开关。
二、云会话为什么必须”在服务端留东西”
/web-setup 是 Claude Code CLI 里把本地 gh Token 同步到 Anthropic 账户的命令,跑通后可以在 claude.ai/code 启动云端会话、提交任务给 Anthropic 托管的 VM。云会话的运行链路有 4 个必须落库的环节:
| 环节 | 落库内容 | 与 ZDR 的冲突点 |
|---|---|---|
| GitHub 认证同步 | 用户 Token、账户绑定关系 | 长期保留 Token 与组织映射 |
| 环境与任务配置 | 仓库选择、setup 脚本、变量 | 配置必须跨会话持久化 |
| 对话历史 | 用户 prompt、模型响应、工具输出 | ZDR 要求”处理完即丢” |
| 会话恢复与归档 | 关闭浏览器后仍能继续的会话状态 | 需在服务端保存完整上下文 |
任何一环都不能彻底消失,否则产品承诺(”关浏览器也能继续”、”云端持续运行任务”)就崩塌。云会话的本质是”由 Anthropic 托管的状态机”,而 ZDR 的本质是”无状态的处理管道”——两者在数据生命周期上互斥。
三、/web-setup 不可用的具体表现
启用 ZDR 的组织,在 Claude Code CLI 里执行 /web-setup 时会被直接拒绝(产品级拦截);/schedule、--cloud、--teleport 这些云会话相关命令同样不可用,提示文案明确指出”该组织启用了 Zero Data Retention,无法使用云会话功能”。该限制由后端组织属性(zero_data_retention: true)在 API 入口处做硬性校验,不依赖客户端设置。
与云会话相反,本地 Claude Code CLI 的所有功能不受影响:本地读写文件、调用 API(仍走 ZDR 通道)、Bash 子进程、插件与 skills 等都可正常使用。ZDR 禁的是”在 Anthropic 端有状态”,并不禁”在用户本机有状态”。
四、企业侧要做的应对选择
遇到 ZDR 与云会话互斥时,企业一般有三条路可走。
- 放弃云会话,全留本地:把 Claude Code 部署在企业内部 VM 或容器里,开发者通过本地 CLI 调 ZDR 通道的 API。适合合规要求最高、不允许任何数据离开企业网络边界的场景。
- 关闭 ZDR,启用云会话:把组织从 ZDR 安排里切回标准保留策略,开启
/web-setup与云端托管 VM。适合在合规允许范围内、想用云端弹性的团队。需要注意标准保留策略下,Anthropic 会按其默认 TTL 保留会话数据。 - 自托管环境替代:参考 Claude Code on the web 的自托管模式,把云会话跑在企业自己的基础设施上(前提是有自托管产品版本),既保留云端开发体验,又避免数据落到 Anthropic 端。
决策的判断维度只有两个:合规底线是”数据不能离开我方边界”还是”可被 Anthropic 处理但不留盘”,以及团队对”在浏览器里跑 Claude Code 任务”这一体验的依赖程度。
下面这段是组织管理员在切换前可执行的 CLI 自检脚本,用来确认当前账号所属组织是否已开启 ZDR、是否还能访问云会话命令。
# 1) 确认当前账号与组织信息
claude /status | grep -E "组织|Organization|Login method"
# 2) 尝试拉取 ZDR 开关(命中即代表云会话入口被拦截)
claude /web-setup
# 预期输出(ZDR 组织):
# This organization has Zero Data Retention enabled; cloud sessions are unavailable.
# 3) 验证本地 CLI 不受影响
claude "打印当前工作目录的目录树前 2 层"
# 预期:本地命令照常返回,不依赖任何服务端会话状态。
跑通上面三条就能把”账号是否在 ZDR 组织 + 本地能力是否完整”一次性确认掉,省得切换后才发现部分子团队的命令行入口被关停。
五、相关命令的可用性速查
| 命令 / 入口 | ZDR 组织 | 普通组织 | 说明 |
|---|---|---|---|
/web-setup |
禁用 | 可用 | 云会话入口命令 |
claude --cloud |
禁用 | 可用 | 从终端启动云端任务 |
claude --teleport |
禁用 | 可用 | 把会话在 web 与终端间切换 |
/schedule |
部分受限 | 可用 | 定时任务,部分数据需服务端保留 |
| 本地 Claude Code CLI | 可用 | 可用 | 不依赖服务端会话状态 |
ZDR 限制主要落在”必须服务端持久化”的能力上,对纯本地的开发动作不构成阻碍。组织管理员在做 ZDR 开关之前,最好先盘点团队对云会话功能的使用面,避免开了 ZDR 后整个交付节奏被打断。
到这里,ZDR 与 /web-setup 等云会话功能互斥的逻辑就清楚了:ZDR 是不在服务端留盘的承诺,云会话是要在服务端留状态的体验,两者在产品上不可同时拥有。组织只能二选一,或者用自托管路径折中。
常见问题(FAQ)
Q1:ZDR 关掉后多久可以重新用 /web-setup?
通常即时生效。组织属性变更后,刷新登录态即可看到云会话命令重新可用。
Q2:本地 Claude Code 在 ZDR 下还有哪些功能被限?
主要是涉及”在 Anthropic 端持久化”的能力受限;本地读写、Bash、插件与 Skills 都不受影响。
Q3:能否让部分团队用云会话、部分保持 ZDR?
可以。ZDR 按组织粒度开启,可以为不同组织分别申请,云会话权限也随组织归属独立判定。