大模型应用
需要为 Claude Code…
在 Claude Code 项目中配置 Cedar 策略执行与 Ed25519 签名收据,为每次工具调用留下防篡改、可离线验证的合规证据。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要为 Claude Code 工具调用特定
解决思路
- 安装插件:运行 claude plugin install wshobson/agents/protect-mcp,它会向项目添加 hooks 和 skill。
- 在项目根目录创建 ./protect.cedar 策略文件,插件会自动安装 hooks。
- 启动本地收据签名服务器:npx protect-mcp@latest serve --enforce(本地运行,无外部调用)。
- 之后正常使用 Claude Code,每次工具调用都会被策略评估并在 ./receipts/ 生成签名收据。
- 配置 hooks:PreToolUse 匹配 .* 执行 "${CLAUDE_PLUGIN_ROOT}"/hooks/evaluate.sh;PostToolUse 匹配 .* 执行 "${CLAUDE_PLUGIN_ROOT}"/hooks/sign.sh。
- 注意 Claude Code 通过 stdin 以 JSON 传入 hook 事件,不设置 TOOL_NAME 或 TOOL_INPUT 变量;evaluate.sh 从 payload 读取 tool_name 和 tool_input 并作为 flags 传给 protect-mcp,sign.sh 只读取 tool_name(0.7.4 签名器不记录其他内容)。
- 通过环境变量 PROTECT_MCP_POLICY、PROTECT_MCP_RECEIPTS、PROTECT_MCP_KEY 修改默认路径;策略文件缺失时 PreToolUse hook 会向 stderr 打印警告并放行调用。
- PreToolUse 在工具执行前运行:用 Cedar 策略评估工具调用,若返回 deny 则 hook 以退出码 2 结束,Claude Code 完全阻止该工具调用。
- PostToolUse 在工具完成后运行:签名一份收据,包含工具名、输入哈希、输出哈希、决策、策略摘要和时间戳,写入 ./receipts/<timestamp>.json。
- 编写 Cedar 策略:默认允许只读工具(Read、Glob、Grep、WebFetch);对 Bash 要求显式允许且 context.command_pattern 属于 ["git","npm","ls","cat","echo","pwd","test"];禁止 context.command_pattern == "rm -rf";禁止 context.path_starts_with != "." 的 Edit/Write。
- 验证单份收据:npx @veritasacta/verify receipts/2026-04-15T10-30-00Z.json(退出码 0=有效,1=被篡改,2=格式错误)。
- 验证整条链:npx @veritasacta/verify receipts/*.json。
- 在 Claude Code 内使用斜杠命令:/verify-receipt receipts/latest.json 和 /audit-chain ./receipts/ --last 20。
- 收据为 JSON,字段包括 receipt_id、receipt_version、issuer_id、event_time、tool_name、input_hash、decision、policy_id、policy_digest、parent_receipt_id、public_key、signature;使用 Ed25519(RFC 8032)签名、签名前做 JCS 规范化(RFC 8785)、通过 parent_receipt_id 哈希链式连接、可离线验证(无网络调用、无厂商查询)。
适用边界 · 注意事项
- 项目不需要加密审计轨迹、策略门控或合规证据时。
- 无法运行本地 Node/npx 服务或不允许安装 Claude Code 插件时。
- 仅需普通会话日志、不要求第三方在无需信任操作者的前提下验证时。