名称: 权限清理 描述: “审计settings.local.json中的危险权限。在授予权限后定期使用,或在安全卫生重要时使用。”
审计.claude/settings.local.json权限中绕过安全钩子、授予过度广泛访问权限或创建注入向量的条目。这是一项深度防御措施——钩子在运行时阻止危险命令,但预先批准的权限会跳过使钩子可见的确认步骤。
何时使用
- 定期(每周或在繁忙会话后)
- 在会话中授予多个权限后
- 提交设置更改前
- 当用户询问"我的权限安全吗?"时
- 如果注意到允许列表快速增长,主动使用
何时不使用
- 用户正在积极调试权限问题时
- 当用户明确表示"我知道我在做什么"时 n
使用示例
/权限清理
/权限清理(在那次长会话后)
执行步骤
步骤1:读取当前权限
cat .claude/settings.local.json
解析permissions.allow数组。
步骤2:检查危险模式
标记匹配以下类别的任何权限:
类别A:钩子绕过(关键)
这些预先批准了安全钩子设计用于拦截的命令。钩子仍然运行,但用户永远不会看到确认对话框——因此他们无法拒绝它。
| 模式 | 危险原因 |
|---|---|
Bash(git push:*) |
绕过block-git-push.sh钩子确认 |
Bash(git push) |
相同——精确匹配变体 |
Bash(git push --force:*) |
强制推送,无需确认 |
类别B:破坏性命令(高)
| 模式 | 危险原因 |
|---|---|
Bash(rm -rf:*) |
递归删除,无需确认 |
Bash(git reset --hard:*) |
丢弃未提交的工作 |
Bash(git checkout .:*) |
丢弃所有未暂存的更改 |
Bash(git clean -f:*) |
删除未跟踪的文件 |
Bash(git branch -D:*) |
强制删除分支 |
Bash(sudo:*) |
提升权限 |
类别C:配置注入向量(高)
这些允许代理修改控制其自身行为的文件——通过提示注入可能被利用的自我修改向量。
| 模式 | 危险原因 |
|---|---|
任何可能写入.claude/settings.local.json的Bash(...) |
代理修改自身权限 |
任何可能写入CLAUDE.md的Bash(...) |
代理修改自身指令 |
任何可能写入.claude/hooks/*.sh的Bash(...) |
代理修改安全钩子 |
任何可能写入.context/CONSTITUTION.md的Bash(...) |
代理修改自身硬规则 |
这些仅通过模式更难检测。寻找过度广泛的权限,如Bash(echo:*)、Bash(cat:*)、Bash(tee:*)、Bash(cp:*),这些可能组合成对敏感路径的写入。将它们标记为信息性——它们有合法用途但值得注意。
类别D:过度广泛(中)
| 模式 | 危险原因 |
|---|---|
Bash(*:*)或Bash(*) |
允许任何命令 |
Bash(curl:*) |
任意网络请求 |
Bash(wget:*) |
任意下载 |
Bash(pip install:*) |
任意包安装 |
Bash(npm install:*) |
任意包安装 |
步骤3:检查重复项
查找冗余的权限:
- 完全重复项
- 更广泛模式已覆盖较窄条目的条目(例如,
Bash(git:*)使Bash(git status:*)冗余)
步骤4:报告
按严重性格式化发现:
## 权限审计结果
### 关键(钩子绕过)
- `Bash(git push:*)` — 绕过block-git-push.sh
### 高(破坏性/注入向量)
- `Bash(rm -rf:*)` — 递归删除,无需确认
### 中(过度广泛)
- `Bash(curl:*)` — 任意网络访问
### 信息性
- `Bash(cat:*)` — 可能组合成配置文件写入
- 发现3个重复条目
### 干净
- 已审查45个权限,未发现问题
步骤5:提供修复建议
对于每个发现,提供具体操作:
- 关键/高:“删除此权限?(是/否)”
- 中:“此权限较广泛——您想保留它吗?”
- 重复项:“删除N个重复条目?”
- 信息性:仅作记录,无需操作
删除权限时,直接编辑.claude/settings.local.json。显示更改前后的差异。
重要说明
- 切勿在不向用户显示将删除内容并获得确认的情况下删除权限
- 用户在本会话中刚刚授予的权限更可能是故意的——记录它们但不要警告
- 某些广泛权限对于开发工作流程是合法的(例如,
Bash(go test:*))——使用判断力 - 目标是提高意识,而非锁定。标记风险,让用户决定
质量检查清单
运行审计后,验证:
- [ ] 读取了实际设置文件(未猜测)
- [ ] 检查了所有四个类别(绕过、破坏性、注入、广泛)
- [ ] 检查了重复项
- [ ] 按严重性报告了发现
- [ ] 为关键/高提供了具体修复操作
- [ ] 未经确认未删除任何内容