策略限制
源码:
policy.ts|config/policies.ts
1. 策略系统
策略(Policy)是 Claude Code 的最高层级安全约束,控制整体行为模式。
Config (用户设置)
│
↓
Policy (策略层)
│
├── NetworkPolicy # 网络访问策略
├── FilePolicy # 文件操作策略
├── ExecutionPolicy # 命令执行策略
└── DataPolicy # 数据处理策略
2. 网络策略
interface NetworkPolicy {
// 是否允许出站请求
allowOutbound: boolean
// 允许访问的域名白名单
allowedDomains: string[]
// 禁止访问的域名
blockedDomains: string[]
// 请求超时
timeout: number
}
默认策略:
- WebSearch: 允许(默认启用)
- WebFetch: 允许但受限
- MCP: 仅允许配置的服务器
3. 文件策略
interface FilePolicy {
// 最大单文件大小(字节)
maxFileSize: number
// 允许的文件类型
allowedExtensions: string[]
// 禁止的文件类型
blockedExtensions: string[]
// 是否允许写入
allowWrite: boolean
// 是否允许删除
allowDelete: boolean
}
默认限制:
- 禁止操作
.env,.git, 密钥文件 - 禁止删除操作在
node_modules目录 - 单文件读取限制 1MB
4. 命令执行策略
interface ExecutionPolicy {
// 最大执行时间(毫秒)
maxExecutionTime: number
// 最大输出大小(字节)
maxOutputSize: number
// 禁止的命令前缀
bannedPrefixes: string[]
// 允许的工作目录
allowedWorkingDirs: string[]
}
5. 数据处理策略
interface DataPolicy {
// 是否允许发送文件内容到 API
allowFileContentInAPI: boolean
// 敏感信息过滤
sensitivePatterns: RegExp[]
// 最大上下文长度
maxContextLength: number
}
敏感信息自动过滤:
- API 密钥
- 密码
- Token
- 数据库连接字符串
6. 策略配置
// ~/.claude/policies.json
{
"network": {
"allowOutbound": true,
"blockedDomains": ["*.malicious.com"]
},
"file": {
"maxFileSize": 1048576,
"blockedExtensions": [".exe", ".bin"],
"allowDelete": false
},
"execution": {
"maxExecutionTime": 30000,
"bannedPrefixes": ["sudo", "rm -rf /"]
}
}
7. 策略优先级
系统默认策略(不可覆盖)
│
↓
组织策略(企业部署)
│
↓
用户策略(~/.claude/)
│
↓
项目策略(.claude/ 目录)
│
↓
会话策略(运行时动态)
优先级:系统 > 组织 > 用户 > 项目 > 会话,上层策略不能被下层覆盖。