用 Sieve 给 AI 编程 Agent 做一次密钥泄露体检——Cursor 与 Claude 对话记录的安全扫描实战
当你用 Cursor、Claude Code 或 Copilot 编写代码时,有没有想过:这些 AI 工具会保存你的对话记录,而你在这个对话里可能无意中泄露了多少 API 密钥和密码?
这不是危言耸听。一个常见的场景是:你在调试某个服务时,直接把 .env 文件的内容粘贴到了聊天框里,或者让 AI 帮你看一个包含 AWS_SECRET_ACCESS_KEY 的配置文件。这些对话记录保存在本地,而你不知道它们何时会被其他进程读取、被备份上传、甚至被不小心提交到版本控制里。
Sieve 就是专门解决这个问题的工具——一个 macOS 原生应用,能扫描 Cursor 和 Claude 的聊天历史,找出其中泄露的 API 密钥和敏感凭证。
Sieve 能做什么
Sieve(App Store 链接)是一款轻量级的本地密钥扫描器,它做的事情非常聚焦:
- 扫描 Cursor 的聊天历史数据库
- 扫描 Claude(Claude Code/Claude Desktop)的对话记录
- 识别各类 API 密钥模式:AWS、GitHub、OpenAI、Slack、Stripe 等 50+ 种常见密钥格式
- 在 macOS 菜单栏显示扫描结果,标识已泄露的密钥类型和所在对话
它不联网、不发送数据、完全本地运行。你只需安装后打开,它就会自动扫描并展示结果。
为什么这是个紧迫的问题
2025 到 2026 年,使用 AI 编程 Agent 的开发者数量增长了数倍,但安全意识并没有同步提升。几个值得注意的数据点:
- 全球有超过 1000 万个 硬编码的 API 密钥和令牌被泄露在公开仓库中(GitHub 已检测并旋转了其中的一部分)
- AI 编程聊天记录是最新也是最容易被忽视的泄露渠道——它不像
.git目录那样有 .gitignore 保护 - Cursor 和 Claude Code 将对话记录存储在
~/Library/Application Support/下,格式为 SQLite 或 JSON,一些备份工具或云同步应用可能会将其上传至云端
Sieve 的价值在于:它把”未知”变成了”已知”。 很多开发者并不知道自己的聊天历史里藏着密钥,直到 Sieve 帮他们扫描出来。
实际使用体验
Sieve 的使用流程极简:
- 从 Mac App Store 下载安装
- 授予 Sieve 访问
~/Library/Application Support/的权限(用于读取聊天数据库) - 启动后自动扫描,几秒内展示结果
- 针对每条泄露记录,Sieve 会显示:泄露的密钥类型、所在的聊天应用、对话的标题或时间戳
如果你发现了泄露的密钥,立即旋转(rotate)该密钥是最重要的补救措施。AI Agent 生成的代码中可能也包含了该密钥——这意味着密钥可能被写入了代码文件、被提交到 git、甚至被推送到远程仓库。
综合防护策略
Sieve 只是 AI 编程安全的一个环节。完整的防护链条包括:
| 防护层 | 工具/方法 | 作用 |
|---|---|---|
| 预防 | .env 文件 + 环境变量 | 避免在对话中粘贴原始密钥 |
| 扫描 | Sieve | 检测已泄露的聊天记录 |
| 扫描 | git-secrets / truffleHog | 检测 Git 仓库中的硬编码密钥 |
| 治理 | Enforra / Veil | 限制 AI Agent 访问敏感文件 |
| 旋转 | 及时更换受影响的密钥 | 消除泄露的实质影响 |
对于日常使用 AI 编程工具的开发者,推荐的工作流是:
- 用 Sieve 做一次性全面检查——扫描所有历史会话,旋转发现的已泄露密钥
- 养成”聊天中不粘贴原始密钥”的习惯——使用环境变量引用,需要粘贴时用
API_KEY=xxx的遮蔽格式 - 定期运行 Sieve——每周一次,养成安全巡检习惯
- 结合 git-secrets 作为 pre-commit hook——防止密钥通过代码提交外泄
总结
Sieve 解决的是一个真实且被普遍忽视的问题:AI 编程 Agent 聊天记录中的密钥泄露。它不追求功能大而全,而是把”扫描聊天历史中的密钥”这一件事做到极致。对于任何在日常工作中使用 Cursor 或 Claude 的开发者来说,花 5 分钟安装 Sieve 跑一次扫描,可能比花一小时配置复杂的密钥管理系统更有实际价值——因为你可能立刻就发现了已泄露但从未意识到的密钥。
安全的第一步,往往只是知道自己暴露了什么。