← 返回 Blog

个人开发机跑 Claude Code:最小风险权限配置方案,该放行什么、该拦什么一张表收齐

在终端中运行 Claude Code,它能够自主执行指令、修改文件、发起网络检索,强大的自动化能力大幅提升开发效率。但与此同时,默认配置会向 AI 开放项目目录读写权限以及部分外网访问权限,安全隐患随之而来。此前 GitHub 平台上已出现多起 Claude Code 误删本地文件的反馈,问题并非源于程序本身,而是默认权限配置的防护能力不足。

ClaudeClaude CodeClaude Code 多层安全防护

Claude Code 多层安全防护指南:为个人开发机搭建纵深权限体系

在终端中运行 Claude Code,它能够自主执行指令、修改文件、发起网络检索,强大的自动化能力大幅提升开发效率。但与此同时,默认配置会向 AI 开放项目目录读写权限以及部分外网访问权限,安全隐患随之而来。此前 GitHub 平台上已出现多起 Claude Code 误删本地文件的反馈,问题并非源于程序本身,而是默认权限配置的防护能力不足。

对于个人开发设备而言,安全风险与收益的平衡尤为关键。机器中往往存放着云服务账单凭证、各类平台密钥、接口令牌等敏感信息,一旦 AI 会话失控,不法分子便可借此作为跳板,发起横向渗透攻击。本文结合实际使用场景,为个人开发者打造一套完整的权限配置方案,层层筑牢安全防线,每一项设置均为硬性防护规则,而非仅供参考的建议。

层级零 核心准则:理清权限判定优先级

Claude Code 拥有清晰的权限裁决逻辑,是所有安全配置的基础,核心顺序为:Deny(拒绝)> Ask(询问)> Allow(允许)。

拒绝规则拥有最高优先级,会直接覆盖放行规则,且无法通过命令行参数绕过。在配置层级上,项目目录下的.claude/settings.json优先级高于局部配置,上级目录设置的拒绝规则,不会被下级目录的放行规则抵消。

安全配置底线

建议采用最小信任原则部署配置:先开启全局拒绝模式,再根据实际使用需求,逐一放开必要权限。这种方式远比批量添加放行规则、被动规避风险更加稳妥。

层级一 基础权限管控:配置文件构建第一道防线

首先需要纠正路径误区,Claude Code 的权限配置文件标准路径为.claude/settings.json,并非.code/settings.json/permissions指令也默认读写该文件。

下文提供一套可直接落地的配置模板,遵循 “先拦截高危操作,再按需开放只读、编译类指令” 的思路,适配绝大多数个人开发场景。

json

// .claude/settings.json
{
  "permissions": {
    // 1. 优先拦截:破坏性操作、高权限指令、敏感文件读写、高危网络行为
    "deny": [
      // 危险删除指令
      "Bash(rm -rf *)", "Bash(rm -rf /*)", "Bash(rm -rf ~/*)",

      // 强制推送代码,覆盖远端版本
      "Bash(git push --force*)", "Bash(git push -f*)",

      // 管理员提权操作
      "Bash(sudo *)",

      // 下载脚本并执行,典型注入攻击链路
      "Bash(curl *)|bash*)", "Bash(wget *)|bash*)",
      "Bash(curl -o /tmp/* *)", "Bash(wget -O /tmp/* *)",

      // 开放全域文件权限
      "Bash(chmod 777 *)",

      // 敏感配置与密钥文件,禁止读写
      "Read(**/.env)", "Read(**/.env.*)", "Read(**/secrets/**)",
      "Edit(**/.env*)", "Edit(**/secrets/**)",

      // 远程连接跳板
      "Bash(ssh *)", "Bash(scp *)",

      // 磁盘分区、数据销毁类高危指令
      "Bash(dd *)", "Bash(mkfs *)",

      // 全局安装依赖,污染本地运行环境
      "Bash(npm install -g *)", "Bash(yarn global add *)"
    ],

    // 2. 灰色操作区:可根据需求开启,触发后人工确认
    // "ask": [],

    // 3. 按需放行:仅开放风险可控、日常高频使用的指令
    "allow": [
      // Git 本地查询、提交操作,不自动放行推送
      "Bash(git status*)", "Bash(git diff*)", "Bash(git log*)",
      "Bash(git add *)", "Bash(git commit -m*)",

      // 项目代码校验、编译、测试指令
      "Bash(npm run test*)", "Bash(npm run lint*)", "Bash(npm run build*)",
      "Bash(pnpm test*)", "Bash(pnpm lint*)",

      // 基础文件浏览指令
      "Bash(ls *)", "Bash(find *)", "Bash(cat *)",

      // 文件检索、读取能力
      "Read(**)", "Glob(**)", "Grep(**)"
    ]
  }
}

静态拦截规则是基础防护手段,拒绝规则作为硬性屏障,优先级高于放行规则,介于两者之间的操作会默认触发人工询问,从源头减少越权行为。

层级二 沙箱隔离:升级至操作系统级防护

单纯依靠权限黑白名单,无法抵御变量拼接、嵌套命令、别名调用等绕过手段。想要进一步提升安全性,就需要启用沙箱功能,将 Claude Code 运行在独立隔离环境中,限制文件系统与网络访问边界。

Anthropic 官方在云端服务中便采用沙箱隔离搭配 Git 代理的安全方案,同时建议本地用户:若需要开启高自主运行模式,优先使用隔离沙箱,切勿直接使用--dangerously-skip-permissions关闭权限校验。

本地沙箱参考配置,可直接部署使用:

json

{
  "sandbox": {
    "enabled": true,
    // 禁止未受管控的指令跳出沙箱环境
    "allowUnsandboxedCommands": false,

    "filesystem": {
      // 禁止读取本地密钥、证书、云服务凭证等敏感目录与文件
      "denyRead": [
        "~/.aws/credentials",
        "~/.ssh",
        "**/.env", "**/*.pem", "**/*.key", "**/*.p12"
      ]
    },

    "network": {
      // 网络白名单,仅允许访问开发常用可信域名
      "allowedDomains": [
        "github.com",
        "*.githubusercontent.com",
        "registry.npmjs.org",
        "pypi.org",
        "registry.yarnpkg.com"
      ]
    }
  }
}

配置完成后,在终端执行/sandbox指令,查看运行状态,确认会话已成功进入沙箱模式。

层级三 自动模式:合理启用,坚守兜底规则

Auto Mode 目前处于预览阶段,该功能依托模型分类器替代人工审批,自动区分安全操作与高危操作。结合相关测试数据来看,在复杂歧义场景下,模型存在一定漏判概率,因此不可将其当作万能安全防护工具。

启用该功能必须遵守两项原则:

  1. 优先使用 Plan Mode(连续按下两次 Shift+Tab),查看完整执行计划,人工审核通过后再启动运行;
  2. Auto Mode 不会覆盖手动配置的deny拦截规则,硬性防护始终生效。

个人设备安全使用规范

  1. 审核执行计划 → 临时开启 Auto Mode 运行任务 → 任务结束立即切回默认模式;
  2. 对于来源不明的代码仓库、未经安全审计的 MCP 配置,坚决不启用 Auto Mode。

层级四 钩子机制:代码级确定性门禁

相较于仅作为自然语言提示、容易在长会话中失效的CLAUDE.md,Hooks 属于代码级拦截机制,触发逻辑固定、执行稳定,安全防护能力更强。

下面提供三组必备钩子脚本,统一存放至.claude/hooks/目录下,分别实现高危命令拦截、包管理器规范、代码质量校验。

1. 前置拦截:Shell 命令防火墙

文件路径:.claude/hooks/pre_tool_use_bash_firewall.sh

bash

运行

#!/usr/bin/env bash
# 读取输入内容,识别并拦截高危指令
set -euo pipefail
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.input.command // ""')

# 高危指令正则匹配规则
DANGER_PAT='(rm\s+-rf\s+[/~])|(curl.*\|.*bash)|(sudo\s)|(git push.*--force|git push.*-f)|(ssh\s|scp\s)'

if echo "$CMD" | grep -Pq "$DANGER_PAT"; then
  echo '{"hookEventName":"PreToolUse","permissionDecision":"deny","reason":"Dangerous command blocked by firewall"}' >&2
  exit 2
fi

echo "$INPUT"

2. 前置拦截:统一包管理器规范

文件路径:.claude/hooks/pre_tool_use_pkg_force.sh

bash

运行

#!/usr/bin/env bash
# 防止pnpm项目混用npm指令
set -euo pipefail
INPUT=$(cat)
TOOL=$(echo "$INPUT" | jq -r '.tool // ""')
CMD=$(echo "$INPUT" | jq -r '.input.command // ""')

if [[ "$TOOL" == "Bash" && "$CMD" == npm* && -f "pnpm-lock.yaml" ]]; then
  echo '{"hookEventName":"PreToolUse","permissionDecision":"deny","reason":"pnpm-lock.yaml exists — use pnpm, not npm"}' >&2
  exit 2
fi
echo "$INPUT"

3. 后置执行:代码质量自动校验

文件路径:.claude/hooks/post_tool_use_quality.sh

bash

运行

#!/usr/bin/env bash
# 文件编辑完成后自动格式化,规避循环触发问题
set -euo pipefail
INPUT=$(cat)
TOOL=$(echo "$INPUT" | jq -r '.tool // ""')
FILE=$(echo "$INPUT" | jq -r '.input.file_path // ""')

if [[ "$TOOL" =~ ^(Edit|Write)$ && -n "$FILE" ]]; then
  npx prettier --write "$FILE" --log-level warn >&2 || true
fi
echo "$INPUT"

挂载钩子配置

.claude/settings.json中添加配置,关联脚本与触发事件:

json

{
  "hooks": {
    "PreToolUse": [
      { "matcher": "Bash", "command": ".claude/hooks/pre_tool_use_bash_firewall.sh" },
      { "matcher": "Bash", "command": ".claude/hooks/pre_tool_use_pkg_force.sh" }
    ],
    "PostToolUse": [
      { "matcher": "(Edit|Write)", "command": ".claude/hooks/post_tool_use_quality.sh" }
    ]
  }
}

层级五 MCP 服务:警惕易被忽略的外部后门

MCP Server 是极易被忽视的安全风险点。当拉取外部代码仓库时,目录内可能附带预设的配置文件与 MCP 服务规则,若盲目点击 “信任该文件夹”,恶意配置将以当前设备权限运行,带来极大隐患。

个人开发机安全准则

  1. 面对陌生仓库,绝不一键信任目录配置;
  2. 严格管控全局 MCP 开关,仅启用经过安全审计的白名单服务;
  3. 优先手动部署自主可控的 MCP 服务,关闭项目配置自动启用功能;
  4. 在无交互的 CI 环境中,务必强化权限管控,避免静默放行高危操作。

完整部署目录结构

一套合格的纵深防御体系,需要各类配置协同生效,完整目录参考如下,同时做好本地配置文件隔离:

plaintext

your-repo/
├── .claude/
│   ├── settings.json          # 权限、沙箱、钩子统一主配置
│   ├── settings.local.json     # 个人本地专属配置,不提交至代码仓库
│   ├── hooks/
│   │   ├── pre_tool_use_bash_firewall.sh
│   │   ├── pre_tool_use_pkg_force.sh
│   │   └── post_tool_use_quality.sh
│   └── CLAUDE.md
└── .gitignore                 # 新增规则:.claude/settings.local.json

权限黑白名单、沙箱隔离、钩子脚本三大模块缺一不可,组合使用才能构建完整防护网,单一配置无法抵御多样化的安全攻击。

对于有高频调用、大规模使用 AI 大模型需求的个人开发者与企业团队,UseAIAPI 是高效省心的选择。平台整合了 Gemini、Claude、ChatGPT、DeepSeek 等多款主流前沿大模型,同时提供专业的企业级定制服务,接入流程简单便捷。平台推出实打实的优惠活动,全线服务最低可享官方定价 5 折,有效降低高强度开发、批量调用场景下的使用成本,助力各类项目稳定高效运行。