Skip to content

安全(Security)

Claude Code 以"默认只读 + 显式授权"的权限架构为核心,叠加沙箱、防注入、信任校验等多层防护,把 agent 行为约束在可控边界内。

你的真实风险点(重要)

你全局 defaultMode: bypassPermissions + skipDangerousModePermissionPrompt + skipAutoPermissionPrompt——权限弹窗几乎全跳过。这很顺,但意味着:

  • 你 CLAUDE.md/AGENTS.md 里那串"必须先确认"(git push / rm -rf / 改 AGENTS.md / 改 SpringBlade 启动配置)在 bypass 下拦不住——它们只是给 Claude 的建议。
  • 真正能硬拦的只有两样:PreToolUse hook(见「Hooks」节模板)和 /sandbox OS 级隔离

建议(按你情况)

  • 红线操作用 PreToolUse hook 真正拦(exit 2),bypass 下仍生效。
  • 跑前端 pnpm、后端构建、各种脚本时开 /sandbox:bypassPermissions + sandbox = 既不弹窗又有 OS 兜底,是更安全的组合。
  • 对不信任的外部内容(网页/第三方仓库)保持警惕——prompt injection 在 bypass 下更危险。

其余(凭据加密、MCP 不做安全审计、云端执行隔离、合规认证)见下方官方要点。


官方文档要点

以下为按官方文档整理的系统性参考。

是什么

本页讲的是 Claude Code 的安全设计理念与内置防护机制。核心是 permission-based architecture(基于权限的架构):默认严格只读,任何写文件、跑命令、发网络请求等额外动作都要显式授权。围绕这个核心,再叠加 sandboxed bash tool、写入范围限制、prompt injection 防护、信任校验(trust verification)、凭证加密存储等多层安全措施。Anthropic 按其完整安全计划开发,并持有 SOC 2 Type 2、ISO 27001 等认证(见 Anthropic Trust Center)。文中明确:Claude Code 只拥有你授予的权限,用户自己负责在批准前审查代码和命令的安全性。

怎么工作

  • 权限架构:默认 strict read-only permissions(严格只读)。需要编辑文件/运行测试/执行命令时,Claude Code 请求显式授权,用户可选择批准一次或自动允许。bash 命令在执行前必须批准。
  • 写入范围限制(Write access restriction):Claude Code 只能写入它启动时所在的文件夹及其子文件夹;未经显式许可不能修改父目录中的文件。读取可以越界(方便访问系统库和依赖),但写入被严格限定在 project scope 内,形成明确的安全边界。
  • Sandboxed bash tool:用 /sandbox 启用,对 bash 命令做 filesystem(文件系统)和 network(网络)隔离,在维持安全的同时减少权限弹窗,定义出 Claude Code 可自主工作的边界。
  • Accept Edits mode:自动批准文件编辑,以及一组固定的文件系统类 Bash 命令(mkdir、touch、rm、mv、cp、sed)用于工作目录内路径;其他 Bash 命令和超出范围的路径仍会弹窗。
  • 防 prompt injection 四类核心防护:permission system(敏感操作需显式批准)、context-aware analysis(分析完整请求以检测有害指令)、input sanitization(处理用户输入防命令注入)、command blocklist(默认拦截 curl、wget 等从网络抓取任意内容的高危命令)。
  • 网络与上下文隔离:发网络请求的工具默认需用户批准;web fetch 使用单独的 context window(隔离上下文窗口),避免把潜在恶意 prompt 注入主对话。
  • 信任校验(Trust verification):首次运行某代码库、新增 MCP server 都要做信任校验。
  • 命令注入检测 + fail-closed:可疑 bash 命令即使之前已加入 allowlist 仍需人工批准;未匹配到规则的命令默认要求人工批准(fail-closed matching)。复杂 bash 命令附带自然语言解释帮助理解。
  • 凭证安全:API keys 和 tokens 加密存储(见 Credential Management)。
  • 云端执行(Claude Code on the web):每个云会话跑在 Anthropic 托管的隔离 VM;网络访问默认受限、可配置为禁用或仅允许特定域名;通过安全代理用 sandbox 内的 scoped credential 再翻译成真实 GitHub token;git push 限制在当前工作分支;全操作审计日志;会话结束后自动清理环境。
  • Remote Control 与云端不同:web 界面连接到本地机器上运行的 Claude Code 进程,代码执行和文件访问全部留在本地,数据经 Anthropic API 走 TLS,不涉及云 VM 或沙箱;连接使用多个短期、窄范围凭证,各自独立过期以缩小被攻破时的影响面。

怎么配置 / 用法

启用沙箱:在交互中用 /sandbox 命令定义文件系统/网络隔离边界。审计权限设置:/permissions。报告可疑行为:/feedback。\n\nMCP server 白名单写在 Claude Code 设置里,作为工程师签入源码(source control)的配置一部分管理。\n\n团队安全:用 managed settings(见 /en/settings#settings-files)强制组织标准;通过版本控制共享已批准的权限配置;用 OpenTelemetry metrics(/en/monitoring-usage)监控使用;用 ConfigChange hooks(/en/hooks#configchange)审计或阻止会话中的设置变更。\n\n非交互运行:-p flag 下 trust verification 被禁用;例外是 --worktree,它仍要求该目录已被接受信任。

什么时候用

  • 处理敏感代码库时:对敏感仓库用 project-specific 权限设置,批准前审查所有建议变更。
  • 需要额外隔离时:用 dev containers(/en/devcontainer);或用 VM 来运行脚本/做工具调用,尤其涉及外部 web 服务时。
  • 想减少权限弹窗又保持安全:对可信项目用 /sandbox 沙箱,或对常用安全命令做 allowlist(按 per-user / per-codebase / per-organization)。
  • 处理不可信内容时务必谨慎:审查建议命令再批准、不要把不可信内容直接 pipe 给 Claude、验证对关键文件的改动。
  • 何时别图省事:不要在 Windows 上启用 WebDAV 或允许访问像 \* 这类可能含 WebDAV 子目录的路径;不要把不可信内容直连给模型。

限制 / 坑

  • 没有系统能完全免疫所有攻击:官方明确这些防护显著降低风险但并非绝对安全,使用任何 AI 工具都要保持良好安全习惯。
  • permission pattern 有局限:当显式允许 curl、wget 等命令时,要注意 permission 规则的局限(见 /en/permissions#tool-specific-permission-rules)。
  • 非交互模式信任校验失效:用 -p flag 非交互运行时 trust verification 被禁用(例外 --worktree)。
  • home 目录启动的信任不持久化:直接在 home 目录启动 Claude Code 时,信任接受只对当前会话有效、不写入磁盘,每次启动都会再弹窗,且没有设置可持久化——建议改从项目子目录启动(那里信任按目录保存)。
  • Windows WebDAV 风险:WebDAV 已被微软弃用,启用它可能让 Claude Code 触发对远程主机的网络请求,从而绕过权限系统。
  • MCP server 不做安全审计:Anthropic 只按 listing criteria 审核连接器再加入 Anthropic Directory,但不对任何 MCP server 做安全审计或托管管理——建议自写或只用可信来源的 MCP server。
  • Accept Edits 自动批准的 Bash 命令是固定一组(mkdir/touch/rm/mv/cp/sed),其余命令和越界路径仍会弹窗——别误以为整个 Bash 都被放行。

硬事实速查(23 条)

  • 默认权限模型:strict read-only permissions(默认严格只读),额外动作需显式授权。
  • 写入边界:只能写启动目录及其子目录,不能写父目录;读取可越界。
  • 沙箱命令:/sandbox,做 filesystem + network 隔离。
  • Accept Edits mode 自动批准的固定 Bash 命令集:mkdirtouchrmmvcpsed(仅限工作目录内路径)。
  • 默认拦截的高危抓取命令:curlwget(command blocklist)。
  • 防 prompt injection 四核心:permission system / context-aware analysis / input sanitization / command blocklist。
  • web fetch 使用独立 context window(隔离上下文窗口)。
  • 网络请求工具默认需用户批准。
  • trust verification 触发点:首次运行某代码库、新增 MCP server。
  • -p flag 非交互运行时 trust verification 被禁用;--worktree 是例外(仍要求目录已被信任)。
  • home 目录启动:信任仅当前会话有效、不写盘、每次启动重新弹窗,无持久化设置。
  • fail-closed matching:未匹配规则的命令默认需人工批准。
  • command injection detection:可疑 bash 命令即使已 allowlist 也需人工批准。
  • 凭证:API keys 和 tokens 加密存储(见 /en/authentication#credential-management)。
  • MCP 白名单配置随源码签入 source control 管理。
  • Anthropic 审核 MCP 连接器依据 listing criteria,收录进 Anthropic Directory,但不做安全审计/托管。
  • 认证合规:SOC 2 Type 2 报告、ISO 27001 证书(见 trust.anthropic.com)。
  • 云端执行:每会话独立 Anthropic 托管 VM;网络默认受限、可禁用或仅允许特定域名;安全代理用 scoped credential 翻译成真实 GitHub token;git push 仅限当前工作分支;全操作审计日志;会话结束自动清理。
  • Remote Control:连接本地运行的 Claude Code 进程,执行与文件访问全本地,数据经 Anthropic API 走 TLS,无云 VM/沙箱;使用多个短期、窄范围、独立过期的凭证。
  • 审计/管理命令与机制:/permissions(审计权限)、/feedback(报告可疑行为)、managed settings、OpenTelemetry metrics、ConfigChange hooks。
  • Windows 安全警告:不建议启用 WebDAV 或允许访问 \\* 路径;WebDAV 已被微软弃用。
  • 漏洞上报:不要公开披露,通过 HackerOne program 提交(含详细复现步骤),给 Anthropic 时间修复后再公开披露。
  • 处理不可信内容 5 条最佳实践:1) 批准前审查命令 2) 不直接 pipe 不可信内容给 Claude 3) 验证关键文件改动 4) 用 VM 跑脚本/工具调用 5) 用 /feedback 报告可疑行为。

官方出处:https://code.claude.com/docs/en/security