据报道,阿里巴巴因安全顾虑禁用 Claude Code
阿里巴巴禁用 Claude Code:将报道视为采购信号,而非定论
大型工程组织不需要拿到后门存在的证据,就可以暂停使用 AI 编程智能体。只要在关键环节有一个问题尚未解决就足够了:“这个工具能否读取我们依法或按合同不得对外披露的源代码?”
对于阿里巴巴据报道在工作场所禁用 Claude Code 一事,我会从这个务实角度来审视。报道中的顾虑很严重,但工程层面的结论并不是“Claude Code 已被证实存在后门”。公开事实尚不足以确立这一点。真正有用的结论范围更窄,也更偏向实际操作:如今,AI 编程智能体与源代码、构建系统、机密信息、日志和部署工作流的联系已经足够紧密,因此应当与 CI/CD 平台、代码搜索工具、可观测性工具及开发者笔记本电脑一样,纳入同一套采购和安全审查流程。
换句话说:将指控与控制平面分开看待。
除非有具体的技术证据,否则对于所谓的或报道中的后门顾虑,都应视为未经证实的说法。但围绕 Claude Code 的各类风险确实存在,值得认真评估:智能体能够访问哪些代码、能够运行哪些命令、哪些遥测数据会离开本机、由哪个模型处理提示词、适用哪些数据保留规则,以及组织如何在数以千计的开发者工作站上执行策略。
这才是工程负责人应该关注的事情。
在工作场所禁用 Claude Code 究竟意味着什么
当公司禁用或暂停使用某个开发者工具时,人们常常将其解读为对该工具技术安全性的否定。实际情况是,禁令往往反映的是采购状态。
“禁用”可能有几种不同含义:
| 策略状态 | 通常意味着什么 | 对工程工作的影响 |
|---|---|---|
| 暂时停用 | 安全、法务或采购审查尚未完成 | 开发者停止使用该工具,直到审查结束 |
| 被网络策略阻止 | 域名、软件包安装或二进制文件受到限制 | 工具可能无法完成身份验证或调用模型 API |
| 限制使用 | 仅允许用于已批准的代码仓库或数据类别 | 团队需要代码仓库分类和使用指导 |
| 附带管控措施获批 | 允许使用工具,但须配套日志记录、配置和培训 | 开发者可以在规定边界内使用 |
| 全面禁止 | 组织认定风险超过收益 | 团队需要替代工具和迁移路径 |
因此,据报道阿里巴巴禁用 Claude Code,并不能自动证明它存在隐藏的技术问题。这可能表明内部审查人员对现有保障并不满意,也可能表明该工具的默认工作流与内部安全策略存在冲突。
这一区别很重要。工程师应避免把每一次采购暂停都解读为阴谋,但也不应将其轻描淡写地视为文书手续。以智能体形式执行操作的开发者工具,其安全暴露面比自动补全插件更大。Claude Code 可以检查代码仓库、提出代码差异,在获得许可时运行命令,并帮助理解系统。这正是它有用的原因,也正是它需要接受认真审查的原因。
核心安全问题:智能体能看到什么?
首先要评估的管控项是代码访问权限。Claude Code 在本地开发环境中工作,基于它可以访问的文件和上下文进行推理。这种能力很强,因为它可以理解真实项目,而非孤立的代码片段。这也意味着,团队需要将代码仓库视为数据来考虑。
在实践中,存在风险的不只是明显包含机密信息的文件,还包括:
- 专有算法
- 针对特定客户的实现细节
- 基础设施即代码
- 内部 API 模式定义
- 安全控制措施和检测逻辑
- 包含生产数据副本的测试夹具
- 事件记录、事后复盘或本地临时文件
- 意外提交到代码仓库的环境配置文件
一个常见的疏漏是:团队只关注是否忽略了 .env 文件,却忘了测试和文档往往包含足以重建敏感工作流的信息。智能体在审查 tests/integration/payments/ 时,可能会看到模拟凭据、合作伙伴端点、账户生命周期规则和故障模式下的行为。即使没有任何机密凭据,代码仓库仍可能属于保密信息。
一项简单的内部策略可以从代码仓库分类开始:
{
"repo": "payments-core",
"classification": "restricted",
"ai_tools": {
"claude_code": "requires_security_exception",
"allowed_models": [],
"external_context_upload": false
},
"data_notes": [
"Contains payment processor workflows",
"Includes customer contract-specific behavior",
"No production secrets permitted"
]
}
最好的策略朴素而明确。开发者不应自行推断某个代码仓库是否可以安全地交给智能体处理。
智能体权限:读取与执行之间的区别
Claude Code 不只是一个聊天框。它的设计用途是在终端中工作、检查文件、编辑代码并参与开发工作流。根据配置和用户批准情况,智能体可以从“提出建议”转向“执行操作”。
这条权限边界是安全团队应审查的第二项内容。
一种典型的安全做法是:
# Start Claude Code inside a specific repo, not from a broad home directory
cd ~/work/approved-service
claude
然后严格限定工作目录。不要从 ~/work, ~/或单体仓库根目录启动智能体工具,除非整个目录树都已获准用于这种用途。
对于风险较高的代码仓库,团队通常会希望制定如下规则:
- 智能体可以读取当前代码仓库中的源文件
- 智能体不能访问父目录
- 智能体不能读取
.env、密钥材料或本地凭据存储 - 智能体可以提出补丁,但不能运行部署命令
- 智能体在安装软件包或执行 shell 命令前,需要获得明确批准
- 智能体不能从开发者机器调用内部生产服务
具体实现机制取决于你的环境,但安全模型应当明确具体。“开发者会小心”并不是一项控制措施。
一种有用的做法是将工具策略与操作系统及 shell 边界结合起来。例如,在一个干净的开发容器中执行敏感工作,并缩小文件系统挂载范围:
docker run --rm -it \
-v "$PWD:/workspace" \
-w /workspace \
--network=none \
node:22-bookworm bash
这个示例完全禁用了网络访问。它并不适用于所有工作流,但说明了一个要点:不要只依靠 AI 工具来划定边界。应使用你在构建和测试中已经信任的同类隔离机制。
遥测、日志与离开本机的数据
下一个审查领域是遥测。对于任何 AI 编程智能体,都应分别提出两个问题:
- 哪些提示词和项目上下文会发送给模型提供商?
- 工具本身会收集哪些运行遥测数据?
这两个问题相关,但并不相同。模型请求可能包含选定的代码上下文、文件名、代码差异、终端输出和用户指令。工具遥测则可能包含使用元数据、错误、性能数据、功能事件或诊断日志。
编程任务的最简请求结构,在概念上可能如下所示:
{
"model": "claude-sonnet-4-6",
"messages": [
{
"role": "user",
"content": "Refactor the auth middleware to return typed errors."
}
],
"context": {
"files": [
{
"path": "src/auth/middleware.ts",
"content": "..."
},
{
"path": "src/auth/errors.ts",
"content": "..."
}
],
"terminal_output": "npm test failed in auth.middleware.spec.ts"
}
}
实际实现细节各不相同,但安全审查人员应围绕这种结构进行分析。敏感资产往往是上下文,而不是用户那条简短的指令。
务实的审查应提出以下问题:
- 开发者能否查看上下文包含哪些文件?
- 能否排除敏感路径?
- 是否保留提示词或生成内容?
- 提示词是否用于训练?
- 如何处理滥用监测和安全日志记录?
- 企业或 API 设置能否改变数据保留行为?
- 哪些日志存储在本地?
- 哪些日志会发送到远端?
个人订阅、团队套餐、企业套餐、直接 API 访问和第三方经销商对应的答案可能不同。不要假设它们的行为都一样。
模型路由与供应商边界
模型路由是另一个讨论不足的问题。在当前的 Claude 产品系列中,团队可根据产品入口和可用情况,在 Opus 4.8、Sonnet 4.6、Haiku 4.5 和具有 1M 上下文窗口的 Fable 5 之间选择。对于开发工作流,Sonnet 级别的模型通常能在推理能力、延迟和成本之间取得合适的平衡;Opus 适合更棘手的架构设计或调试工作;Haiku 适合快速、范围明确的任务;长上下文模型则会改变大型代码仓库和大量设计文档场景下的权衡。
但采购需要提出比“哪个模型最好?”更明确的问题。
采购需要知道提示词被发送到哪里。
模型路由检查清单应包括:
- 允许使用哪些模型 ID?
- 适用哪些地域或合同边界?
- 工具能否将请求路由到备用模型?
- 用户能否自行更改模型?
- 是否允许使用测试版或预览版模型?
- API 端点是直接连接、通过代理连接,还是经由另一家供应商中转?
- 调用模型之前,是否会记录日志、进行缓存或转换提示词?
对于直接使用 Claude API 的团队,通过内部网关集中管理访问会有所帮助:
from anthropic import Anthropic
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1200,
messages=[
{
"role": "user",
"content": "Review this patch for unsafe database migrations:\n\n..."
}
],
)
print(message.content[0].text)
与大量未经管理的桌面工具相比,这种直接使用 API 的模式更容易分析和掌控,但它也带来了自身的负担:你必须自行构建身份验证、日志记录、数据分类、速率限制和策略执行机制。有些组织使用内部代理来拒绝调用不允许使用的模型,或阻止访问受限代码仓库。
一份初步的策略可能如下:
{
"allowed_models": [
"claude-sonnet-4-6",
"claude-haiku-4-5"
],
"blocked_models": [
"preview-*"
],
"repo_rules": {
"public": ["claude-sonnet-4-6", "claude-haiku-4-5"],
"internal": ["claude-sonnet-4-6"],
"restricted": []
}
}
这并不令人兴奋,但正是这类控制措施让安全审查变得具体可行。
数据保留是合同问题,不能凭感觉判断
一个常见错误是把 AI 工具安全当成纯粹的技术问题来讨论。数据保留同样涉及合同和账户配置。
对于 Claude Code 及相关 Claude 工作流,工程团队应确认适用于其具体账户类型和部署方式的条款。不要照搬其他产品档位的答案,也不要假设面向个人用户的设置适用于企业集成。
在审查会议中,我喜欢将数据保留问题分为四类:
| 数据类型 | 示例 | 审查问题 |
|---|---|---|
| 提示词内容 | 用户指令及选定的源文件 | 是否存储、存储多久,以及用于什么目的? |
| 生成内容 | 生成的代码、分析和补丁建议 | 输出是否与提示词一同保留? |
| 元数据 | 模型、时间戳、token 数量、错误 | 是否关联用户身份或代码仓库? |
| 本地产物 | 日志、会话记录、缓存的上下文 | 它们存储在开发者计算机的什么位置? |
本地产物这一类很容易被忽略。即使提供商侧的策略可以接受,包含专有代码的本地会话记录如果进入同步文件夹、未加密的备份或支持诊断包,仍可能造成问题。
在实践中,我建议团队记录一条简单的处理规则:AI 编程会话记录属于开发产物,其敏感级别应与该会话所包含文件中的最高敏感级别一致。
真正有效的内部策略控制措施
最好的 AI 工具策略应足够简短,让开发者记得住;也应足够具体,让安全团队能够执行。
适用于中型工程组织的可行 Claude Code 策略可能包括:
- 仅使用获批的账户类型
- 未经例外批准,不得在受限代码仓库中使用
- 提示词中不得包含秘密信息、凭据、生产数据或客户数据
- 仅从预定的代码仓库根目录启动
- 修改文件、安装软件包、发起网络请求或访问部署系统的 shell 命令必须经过批准
- 仅使用获批列表中的模型
- 按代码仓库的分类存储会话记录
- 通过安全问题受理渠道报告异常工具行为
这项策略应配合技术控制措施。示例包括:
# Block accidental secret exposure before commits
git secrets --scan
gitleaks detect --source .
如果你的工具链支持,还应为 AI 上下文配置项目级忽略文件:
.env
.env.*
*.pem
*.key
secrets/
credentials/
customer_exports/
prod_dumps/
incident_notes/
仅靠忽略文件并不足够。它们是防护措施,而不是数据治理体系。但它们可以减少普通错误演变成安全事件的次数。
对于将 Claude Code 标准化使用的团队,我还会在版本控制中维护一份 AI_USAGE.md ,放在代码仓库根目录附近:
# AI Tool Policy
Classification: internal
Allowed:
- Use Claude Code for tests, refactors, local debugging, and documentation.
- Include source files from this repository.
Not allowed:
- Do not paste customer data.
- Do not include `.env` files, credentials, or production logs.
- Do not ask the agent to run deployment commands.
Approved models:
- claude-sonnet-4-6
- claude-haiku-4-5
开发者需要在工作现场获得策略指引,而不只是到合规知识库中查阅。
应单独看待后门指控
报道中提到的后门担忧是阿里巴巴事件最引人关注的部分,但也是最容易处理失当的部分。
后门是一项具体的技术指控。它意味着存在刻意隐藏的访问能力、未经授权的行为或隐蔽的控制路径。这需要证据支持:可复现的行为、网络追踪记录、二进制分析、日志、源代码审查,或包含足够评估细节的可信事件报告。如果没有这些证据,它就仍然只是指控或报道,而非已确认的发现。
安全团队仍应理性应对。公司可以在调查指控期间暂停使用某个工具,尤其是在该工具能够广泛访问源代码的情况下。这不是恐慌,而是正常的风险管理。
正确的应对态度是:
- 除非有证据证实,否则不要声称 Claude Code 存在已确认的后门。
- 不要仅仅因为担忧尚未得到证实就将其忽略。
- 基于可验证的控制措施审查工具。
- 判断你的环境是否有必要实施临时限制。
- 随着事实逐渐明晰、供应商作出回应以及内部测试更加充分,重新评估决定。
这才是成熟稳健的折中立场。
团队跳过审查后,实际会发生什么
这种失控在最初往往并不显眼。它看起来只是图个方便。
一个团队在面向公众的前端代码仓库中使用智能体。另一个团队在具有内部 API 契约的服务中使用它。有人粘贴了生产环境的堆栈跟踪。另一个人让它总结本地的事件文档。一位资深工程师为了获取跨服务上下文,从单体代码仓库的根目录运行它。没有人试图泄露数据;只是工作流缺少边界。
然后,采购部门询问哪些代码仓库使用过哪些工具,却没有人能回答。
这才是报道中阿里巴巴禁令背后的真正风险:并不是每个 AI 编程智能体都暗藏恶意,而是组织采用智能体开发工具的速度,超过了自身观察和治理这些工具的能力。
Claude Code 的价值恰恰在于它能在工程师的工作环境中运行。它可以加快测试编写、代码库导航、迁移规划和繁琐重构。但这种让它实用的紧密接触,也意味着必须将它视为工程控制范围的一部分。
实践要点
应将报道中的阿里巴巴禁令视为完善自身审查流程的理由,而不是 Claude Code 存在已确认后门的证据。
在批准 Claude Code 或任何类似的智能体编程工具之前,应评估:
- 代码访问:工具能够查看哪些代码仓库、文件和本地产物
- 智能体权限:它是否能运行命令、编辑文件、安装软件包或访问网络
- 遥测:收集哪些提示词、生成内容、元数据和诊断信息
- 模型路由:允许使用哪些 Claude 模型,以及是否存在备用路由
- 数据保留:如何存储提示词内容、输出、元数据和本地日志
- 策略控制:如何落实代码仓库分类和开发者指引
对于大多数团队,目标不应是一概允许或禁止。更好的目标是受控采用:使用获批账户和模型,明确代码仓库分类,在必要时实施本地隔离,并制定开发者无需中断工作即可遵循的书面规则。
所谓的后门指控应归入“调查并验证”这一类。相关安全实践则应归入“立即行动”这一类。
一个 API 密钥即可使用 Claude Opus 5.5、Sonnet 5、Haiku 4.5 和 Fable 5.1,以及 GPT-6 个模型。按量付费,无需订阅。
获取 API 密钥 →