跳转到主要内容
CC Safety Net 把每个命令决策记入审计日志,日志只保存在你的机器上,从不上传。每个文件都是 JSON Lines(JSONL)格式,每行一个 JSON 对象。可以在仪表板中查看,也可以在终端里用 logs 查看。

日志布局

记录写入按项目、按月划分的路径:
CC_SAFETY_NET_AUDIT_HOME 可以更改审计根目录所在的主目录。CC Safety Net 以模式 0700 创建目录,以模式 0600 创建文件。写入失败绝不会改变允许或阻止的决策。 直接位于 ~/.cc-safety-net/logs/ 下的平面 *.jsonl 文件是早期版本的旧版布局。logs 仍会读取它们,保留期清理也仍会删除它们;想现在就移除,参见 logs --prune-legacy。

每条记录包含一个决策

每行记录一条允许或阻止的命令决策:命令、促成该决策的命令段、理由,以及匹配的规则。
  • CC Safety Net 从不读取或存储命令输出、模型提示词、工具结果或对话内容。
  • 拒绝始终会被记录。
  • 允许的决策只针对命令类工具调用记录。被允许的文件编辑或读取不产生记录。
  • fail-closed 路径上的阻止同样会被记录:分析失败、CC Safety Net 无法得出判定,于是阻止了命令。这类记录带有 failureStage 和 errorCode 字段,logs --suspect 正是依据这两个字段筛选的。

记录 schema

示例记录:
segment、toolName 和 cwd 的值过长时,CC Safety Net 会截断它们,并在记录上设置 truncated: true。过长的 command 同样会被截断,只有带 failureStage 的记录例外,这类记录保留完整命令。该字段从不写成 false。

failureStage 的取值

failureStage 指出按 fail closed 处理的是哪一项检查。各项检查的执行顺序见工作原理。 由输入上限、已声明命令工具的检查、策略文件保护或 Git 元数据保护产生的拒绝,发生在策略加载之前,因此记录中没有 level,也没有 configFallback。

记录的内容:审计范围

CC_SAFETY_NET_AUDIT_SCOPE 决定允许的命令决策是否与拒绝一起记入日志。 范围从不抑制拒绝记录,只决定 CC Safety Net 是否记录允许的决策。

保留期

无效值的处理方式见审计保留。同一个值也是 logs --since 的上限,并限定仪表板活动视图可选的时间窗口。 CC Safety Net 在下一次运行时删除过期记录:写入一条记录之后,或者 logs、doctor、仪表板读取日志之前。没有任何定时任务,因此 CC Safety Net 空闲期间,过期记录可能一直留在磁盘上,logs --id 也仍能找到它们。
缩短保留期不可撤销。调低该值后,较旧的记录会在下一次运行时符合删除条件,CC Safety Net 删除它们时没有归档、回收站,也无法撤销。仪表板在调低该值之前会要求你确认。

机密脱敏

CC Safety Net 在写入记录之前,会对命令、命令段、工具名称和工作目录做脱敏,把识别出的以下值替换为 <redacted>:
  • 名称包含 TOKEN、SECRET、PASSWORD、PASS、KEY 或 CREDENTIALS 的环境变量赋值
  • 数据库连接变量(DATABASE_URL、POSTGRES_URL、MYSQL_URL、REDIS_URL、MONGODB_URL,以及其他 DSN/URL/URI/连接字符串变量)
  • PEM 私钥块(-----BEGIN ... PRIVATE KEY-----)
  • 携带机密的 HTTP 标头(Authorization、Cookie、X-API-KEY、API-KEY)
  • URL 凭证(scheme://user:pass@host 和 scheme://token@host)以及 -u user:pass
  • 预签名 URL 的签名查询参数,即 x-amz-signature、x-goog-signature、sig 和 signature 的值
  • 一份固定的服务商令牌格式列表(ghp_...、gho_...、xoxb-...、npm_...、sk_live_...、rk_live_...、pypi-... 等)
  • JWT(eyJ...)和 AWS 访问密钥 ID(AKIA... / ASIA...)
脱敏的范围是有限的。它只是一份固定的模式列表,而不是分类器。其他一切都原样保留:绝对文件系统路径、项目和目录名称、主机名、IP 地址、用户名、工单 ID、文件名,以及形式不在列表中的任何凭证。CC Safety Net 不对 reason 字段脱敏。请把审计日志当作敏感的本地数据,把任何摘录粘贴到 issue 或聊天之前先检查一遍。
文件权限限制的是谁能读取日志。它不会对日志脱敏,也不会让日志变得可以安全分享。
最后修改于 2026年10月22日