Claude Code Harness 安全检查终极清单:AI 长跑前必查 15 项
【免费下载链接】claude-code-harnessClaude Code Dedicated Development Harness - Achieving High-Quality Development Through an Autonomous Plan→Work→Review Cycle项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-harness
Claude Code Harness 是一个为 Claude Code 等 AI 编程助手打造的开发安全框架,通过「Plan → Work → Review」自主开发循环保证交付质量。当你让 AI 长时间无人值守地跑任务(俗称"长跑")时,一个误删、一次密钥外泄、一次强推 main 分支都可能是灾难。这份安全检查终极清单汇总了 15 个必查项,帮助你快速建立 AI 自主运行前的安全底线。
一、先看懂安全网的三层结构
Harness 与"提示词模板"的本质区别在于:每一次工具调用在执行前都会被一个 Go 原生引擎裁决,而不是事后看 diff(文件变更无法看到网络发送和删除操作)。安全网分两层:
| 层级 | 数量 | 裁决方式 | 能否被配置绕过 |
|---|---|---|---|
| Runtime Floor 运行时底线 | 5 大类 | 直接拒绝 | ❌ 任何配置、环境变量、权限模式都无效 |
| Guardrails 护栏 | R01–R15 | 拒绝 / 确认 / 警告 | ⭕ 部分可按项目配置 |
Runtime Floor 覆盖五大类:计费操作、网络外发、密钥读取、生产部署、任务 worktree 之外的破坏性操作。它运行在隔离代码路径上,没有关闭开关——AI 无法"说服"它放行。源码可在 go/internal/runtimefloor/ 和 go/internal/guardrail/ 中查证。
💡 关键认知:长跑风险不来自 AI 变笨,而来自边界没设好。下面的 15 项,就是帮你把边界逐项锁死。
二、起跑前检查(第 1–5 项)
1. 确认 Plan 审批门禁已生效
/harness-plan生成的spec.md和Plans.md必须先由你批准或修正才能进入执行。长跑的第一步永远是人审计划,而不是让 AI 自己定范围。
2. 检查"计划期预审批"是否最小化
Harness 把风险确认从"运行中打断"移到"计划期一次问完"。预审批记录(plan-preapproval.v2)自带过期时间、任务范围、使用次数上限——一项审批绝不成为永久性漏洞。长跑前检查:没有为用不到的操作预批"宽权限"。
3. 声明密钥读取白名单(默认拒绝)
长跑中如果任务需要读取密钥文件,提前在 claude-code-harness.config.schema.json 对应的runtimefloor.secretAllow中声明具体路径。注意三点:
- 空字符串、
*、**、/一律视为无效,按拒绝处理 - 项目根目录之外的绝对路径,配置中声明无效
- 未声明的密钥读取仍会被运行时底线拦停
详细契约见 docs/runtime-floor-secret-allowlist.md。
4. 确认你的宿主工具加固等级
不同宿主的安全强度并不对等,这是新手最容易踩的坑:
| 宿主 | 执行前拦截 | 说明 |
|---|---|---|
| Claude Code | 强(多工具类型) | 首选,主安全基线 |
| Codex CLI | 仅 Bash 命令 | 另有质量门 + 合并门兜底 |
| Cursor | 可拒绝但无文件系统隔离 | 权限白名单只是尽力而为 |
| Grok | ❌ 不在共享底线范围内 | 不要期待危险操作被执行前拦截 |
完整对照表见 docs/hardening-parity.md。安全敏感的长跑任务,优先走 Claude Code 路径。
5. 用/harness-sync校准基线
开工前对比计划与实际代码的偏差(drift)。基线不清就跑全量/harness-work all,等于让 AI 在未知地图上盲跑。
三、权限规则检查(第 6–10 项)
Harness 项目自己的 harness.toml 就是一份"标准答案",可直接对照自己的项目配置。
6. 保护分支推送 = 先问人
protectedBranchPush = "ask"是默认值:AI 直推main/master前必须人工确认。长跑场景下别图省事改成allow。
7. 高危命令在 deny 名单里
对照你的配置,确认以下命令已被拒绝:sudo、rm -rf/rm -fr、数据库客户端(psql、mysql、mongo等)、外部 MCP 通道(如mcp__codex__*)。deny 名单是"硬地板",运行时底线叠加在其上。
8. 敏感操作在 ask 名单里
强推(git push -f/--force-with-lease)、git reset --hard、git clean -fx、npm install/npx等,长跑中每次触发都应弹出确认——这正是你应该在起跑前就确认"它还会问"的行为。
9. 密钥文件读取被全面拦截
确认以下路径在 deny 名单中,AI 无法读取:.env及.env.*、secrets/**、*.pem、*.key、*id_rsa*、*id_ed25519*、.aws/**、.ssh/**、.npmrc。这是防止密钥被"顺手带出去"的第一道闸门。
10. 自我防护:AI 改不了自己的约束
.claude/settings*和.claude-plugin/settings*的 Write/Edit 被禁止——AI 无法自行放宽自己的安全限制。想改安全配置?只能你手动编辑源文件(如 harness.toml)再重新同步生成。这条"AI 无自我解锁权"的设计,是长跑安全的核心支柱之一。
四、运行时封控检查(第 11–13 项)
11. 沙箱"不可用即失败"(fail-closed)
[safety.sandbox] 中failIfUnavailable = true:沙箱起不来就整体停止,而不是降级为"无保护运行"。长跑最怕的正是静默降级——这一项必须为真。参考模板见 templates/sandbox-settings.json.template。
12. 网络出口黑名单覆盖"数据外泄通道"
deniedDomains至少包含两类(即使白名单放行了这些域名也优先拒绝):
- 云元数据端点:
169.254.169.254、metadata.google.internal、metadata.azure.com—— 防止 SSRF 窃取实例凭证 - 粘贴板/临时文件站:
pastebin.com、transfer.sh、0x0.st、paste.ee、termbin.com、ix.io—— 防止代码和密钥被外发
需要临时放开外网域名时,走 docs/sandbox-allowlist-recipe.md 中的手动合并流程(注意:该文件禁止 AI 自行修改,需你本人操作)。
13. worktree 边界:递归删除只许"在自己家里"
R05 规则对rm -rf类操作做目标解析:目标全部落在任务 worktree 内才可能免确认,任何..逃逸、符号链接指向外部、解析失败——一律保持"确认"。worktree 之外的破坏性操作直接命中运行时底线,硬拒绝。另外,worktree 内删除只保护"能恢复的":未提交的变更删掉就是永久丢失,长跑前建议先打 checkpoint(参考 scripts/auto-checkpoint.sh)。
五、可追溯与验证检查(第 14–15 项)
14. 审计日志:每次拦截都有据可查
每一次拦截都会写入 JSONL 日志:规则 ID、类别、裁决结果。命令原文永不落盘——只记录哈希和长度(密钥读取和计费类连这个都不记)。长跑结束后,你可以"数一数实际被拦了什么",而不是靠猜。
15. 起跑前跑一遍验证,证明护栏真的生效
"写好了"不等于"生效了"。起跑前建议:
- 运行护栏行为测试 tests/test-guardrails-r01-r13.sh,确认 R01–R13 各规则实际拦截
- 老用户先跑迁移报告:
bin/harness doctor --migration-report,清点陈旧缓存、重复技能、旧符号链接——只盘点,不删除 - 发布前跑 scripts/release-preflight.sh 预检,未通过绝不发布
漏洞报告渠道与安全支持版本说明见 SECURITY.md,发现异常请优先升级到最新版。
总结:15 项清单速查表
| # | 检查项 | 所属层 |
|---|---|---|
| 1 | Plan 审批门禁生效 | 起跑前 |
| 2 | 预审批最小化(过期+范围+次数) | 起跑前 |
| 3 | 密钥读取白名单已声明 | 起跑前 |
| 4 | 宿主加固等级匹配任务风险 | 起跑前 |
| 5 | 基线 drift 已校准 | 起跑前 |
| 6 | 保护分支推送 = ask | 权限 |
| 7 | 高危命令 deny | 权限 |
| 8 | 敏感操作 ask | 权限 |
| 9 | 密钥文件读取拦截 | 权限 |
| 10 | 自我防护(settings 不可改) | 权限 |
| 11 | 沙箱 fail-closed | 运行时 |
| 12 | 网络外泄通道 deny | 运行时 |
| 13 | worktree 删除边界 | 运行时 |
| 14 | 审计日志可追溯 | 可追溯 |
| 15 | 护栏测试 + preflight 通过 | 可追溯 |
✅ 记住一句话:Runtime Floor 管住"绝对不行",Guardrails 管住"先问再行",审计日志管住"事后能查"。15 项全部打勾,你的 AI 才值得被托付一场长跑。 🚀
【免费下载链接】claude-code-harnessClaude Code Dedicated Development Harness - Achieving High-Quality Development Through an Autonomous Plan→Work→Review Cycle项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-harness
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考