主题
安全(Security)
Claude Code 以"默认只读 + 显式授权"的权限架构为核心,叠加沙箱、防注入、信任校验等多层防护,把 agent 行为约束在可控边界内。
你的真实风险点(重要)
你全局 defaultMode: bypassPermissions + skipDangerousModePermissionPrompt + skipAutoPermissionPrompt——权限弹窗几乎全跳过。这很顺,但意味着:
- 你 CLAUDE.md/AGENTS.md 里那串"必须先确认"(git push / rm -rf / 改 AGENTS.md / 改 SpringBlade 启动配置)在 bypass 下拦不住——它们只是给 Claude 的建议。
- 真正能硬拦的只有两样:
PreToolUsehook(见「Hooks」节模板)和/sandboxOS 级隔离。
建议(按你情况)
- 红线操作用
PreToolUsehook 真正拦(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)。
- 非交互模式信任校验失效:用
-pflag 非交互运行时 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 命令集:
mkdir、touch、rm、mv、cp、sed(仅限工作目录内路径)。 - 默认拦截的高危抓取命令:
curl、wget(command blocklist)。 - 防 prompt injection 四核心:permission system / context-aware analysis / input sanitization / command blocklist。
- web fetch 使用独立 context window(隔离上下文窗口)。
- 网络请求工具默认需用户批准。
- trust verification 触发点:首次运行某代码库、新增 MCP server。
-pflag 非交互运行时 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、ConfigChangehooks。 - Windows 安全警告:不建议启用 WebDAV 或允许访问
\\*路径;WebDAV 已被微软弃用。 - 漏洞上报:不要公开披露,通过 HackerOne program 提交(含详细复现步骤),给 Anthropic 时间修复后再公开披露。
- 处理不可信内容 5 条最佳实践:1) 批准前审查命令 2) 不直接 pipe 不可信内容给 Claude 3) 验证关键文件改动 4) 用 VM 跑脚本/工具调用 5) 用
/feedback报告可疑行为。