# 给 Claude Code 配好项目测试权限：从一条命令到验收记录

为项目配置 Claude Code 权限时，可以先选一条已经检查过的测试命令，记录当前确认行为，再通过 /permissions 设置精确规则并复测。本文用前端项目示例说明本地配置的合并方法、deny 和 ask 冲突的检查，以及自动编辑与远端推送权限的区别，附可复制的验收记录格式。整个流程只针对确认过的命令授权，项目脚本改变后需要重新检查其实际行为。

原页面：https://ccmaxplan.com/articles/claude-code-project-test-permission-recipe

发布时间：2026-11-10T01:56:07.61165+00:00

更新时间：2026-11-10T01:56:07.61165+00:00

一个项目每天都要跑同一条测试命令，可以把这条命令的授权固定下来。**先确认脚本做什么，再配置精确 allow，最后用同一命令验收。** 下面以已有 `npm run lint` 的项目为例。

## 第一步：建立授权前的基线

打开 package.json，找到 lint 对应脚本，确认它是否只做检查，是否还会改文件或连接外部服务。再让 Claude Code 在项目目录运行一次，记下确认框展示的完整命令。

如果项目使用 pnpm 或其他工具，将示例替换为项目实际命令。测试名称相同，不代表不同仓库中的脚本内容相同。

## 第二步：配置这一项操作

输入 `/permissions`，查看当前规则和来源。个人项目设置可保存在 `.claude/settings.local.json`。例如把这一项合并到已有 permissions 中：

```json
{
  "permissions": {
    "allow": ["Bash(npm run lint)"]
  }
}
```

**保留文件中其他已有键和规则。** 使用编辑器检查 JSON 语法，再回到 `/permissions` 确认规则被识别。

若已存在 ask 或 deny 匹配，先查其用途。Claude Code 按 deny、ask、allow 的顺序判断，新增 allow 无法跳过更高优先级规则。

## 第三步：用可观察结果验收

让 Claude 再执行与基线完全相同的命令。记录是否免确认执行、命令退出状态和检查输出。当前版本的权限修改从下一次工具调用开始生效。

可保存下面的简短记录：

```text
项目：示例前端仓库
已审阅脚本：package.json 中的 lint
规则：Bash(npm run lint)
配置来源：项目本地设置
复测命令：npm run lint
确认框：填写实际结果
检查结果：填写实际退出状态和报错
```

免确认运行与测试通过是两个结果，分别记录。测试失败时，根据输出修复具体问题；授权成功本身不改变测试结果。

## 后续扩展保持逐项可解释

确实需要添加第二条测试命令时，用同样步骤检查。远端推送、发布、修改权限等操作独立决定。acceptEdits 模式会自动接受工作范围内的文件编辑和部分文件系统命令，选择前应了解实际范围。

团队共享规则可由项目负责人审阅后管理；个人免确认需求先保留在本地设置，避免未经讨论改变所有人的工作方式。

## 常见问题

Q: 项目只有 pnpm lint，可以照抄 npm 示例吗？

A: 使用项目实际命令，授权规则应匹配真正执行的命令文本。

Q: 配置保存后怎么确认被识别？

A: 在 `/permissions` 检查规则和来源，再运行同一命令观察确认行为。

Q: allow 存在却仍然弹窗怎么查？

A: 核对完整命令、附加参数，以及更高优先级的 ask 和 deny 规则。

Q: lint 脚本更新后需要重查吗？

A: 需要。规则仍匹配同一命令名，实际执行内容已经可能改变。

Q: 免确认执行成功就能算配置完成吗？

A: 还要记录测试本身是否通过；权限验收和项目测试各自有结果。

Q: 本地规则能直接给全团队使用吗？

A: 先由团队审阅授权范围，再放到适当的共享配置；本地设置适合个人项目需求。

## 参考资料

* [Claude Code 权限规则](https://code.claude.com/docs/en/permissions)
