robrounsavall/ai-agent-audit
GitHub: robrounsavall/ai-agent-audit
一款 Windows 离线扫描工具,用于评估和盘点本机 AI 编程智能体的安全态势与数据暴露风险。
Stars: 1 | Forks: 0
# ai-agent-audit
用于评估 AI 编程智能体安全态势的 Windows 端点离线扫描工具。仅需一条命令即可盘点 Claude Code、Cursor、Codex、GitHub Copilot 和 Grok Build 在机器上被允许执行的操作、本地存储的聊天记录,以及可能遗留机密数据的位置。其输出为一个证据层(绝对不包含原始记录或可识别身份的文件系统路径),外加一份 HTML 格式的执行摘要报告(采用深色排版布局,包含安全态势网格和各工具的 MCP 摘要)。
```
.\aiscan.ps1 all -OutDir C:\scans\today -Briefing
```
该命令会运行所有的收集器,并打开一个独立的 HTML 报告。在运行任何操作之前,请先查看[基于合成数据构建的示例报告](https://robrounsavall.github.io/ai-agent-audit/sample-report.html)。
[](https://robrounsavall.github.io/ai-agent-audit/sample-report.html)
## 诞生背景
AI 编程智能体是开发者端点上拥有特权的半自治执行者。它们掌握着用于 shell 执行、网络出口和 MCP 工具调用的白名单。它们会将完整的聊天记录(其中会不断累积机密信息)存储在可预测的本地路径中。大多数安全团队对此毫无盘点和感知。该工具旨在回答首要问题:**当前端点上暴露了什么?**
## 信任声明
- **只读。** 收集器绝不会修改工具配置、会话或凭证库。
- **离线。** 无任何网络调用。不会有任何数据离开你的机器。
- **仅检测凭证库,绝不提取其值。** `auth.json` 及同类文件仅用于判断其存在性及授权方式。
- **记录保留在本地。** 原始聊天内容只会存放在本地的 `raw/` 目录中。`evidence/` 证据层仅包含计数、大小、哈希值和脱敏样本——其遵循的契约是 [SCHEMA.md](SCHEMA.md)。
- 标准库优先的 Python:9 个收集器中有 8 个可在原生 Python 3.10+ 上运行,无需 pip install。代码库足够小巧,方便你在运行前进行审计。
## 采集内容
| 收集器 | 读取内容 | 报告内容 |
|---|---|---|
| `claude` | `~/.claude` 设置 + 项目设置 | allow/deny/ask 规则、MCP servers、绕过模式 |
| `cursor` | Cursor `state.vscdb` + 项目数据 | 权限态势、MCP 配置 |
| `codex` | `~/.codex` 会话 + `config.toml` | 批准事件、受信任项目、沙箱/遥测态势 |
| `copilot` | VS Code / JetBrains Copilot 设置 | 启用状态、排除项、遥测信息 |
| `grok` | `~/.grok/config.toml` + 会话元数据 | 权限模式 (always-approve/yolo)、MCP servers |
| `chat-history` | 所有记录源 | 数量、留存时间、机密命中指标(内容仅保留在本地 `raw/` 中) |
| `git-posture` | `~/repos`, `~/code`, `~/src`, `~/projects`, `~/source` 下的仓库 | 历史记录中的 `.env`、hooks、忽略策略、超大 blobs |
| `secrets-scan` | 聊天语料库 + 仓库根目录 | gitleaks 扫描结果(附带脱敏样本) |
| `pii-scan` (可选) | 聊天语料库 | Presidio PII 实体;需要 venv + 约 600MB 的模型 |
| `tools/mcp-visibility` | 跨所有工具的 MCP 配置 | server 清单、定义漂移、授权态势(token 始终被脱敏) |
## 前置条件
必需条件:
- Windows 10/11,PowerShell 5.1+
- 加入 PATH 的 Python 3.10+
除 `pii-scan` 外的所有收集器仅凭此即可运行——纯标准库,无需 pip install。两个收集器依赖额外工具,如果缺少这些工具,它们将报告异常发现而不是返回结果:
**`secrets-scan`** 会调用 [gitleaks](https://github.com/gitleaks/gitleaks)。
请安装它并确保其已加入 PATH:
```
winget install Gitleaks.Gitleaks
# 或:scoop install gitleaks / choco install gitleaks
# 或下载 release 二进制文件并将其文件夹添加到 PATH
```
**`pii-scan`** 需要 Microsoft Presidio 以及一个 spaCy 模型(约 600MB)。它是唯一需要 venv 的收集器,且 `aiscan.ps1 all` 默认会跳过它:
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python -m spacy download en_core_web_lg
.\aiscan.ps1 pii-scan # run inside the venv
```
目前暂不支持 macOS/Linux。证据模式和收集器逻辑是可移植的;但路径解析以 Windows 优先。欢迎贡献代码。
## 用法
```
# Everything,一次性输出,结果打印到控制台
.\aiscan.ps1
# 单个 collector
.\aiscan.ps1 claude
# 持久化输出 + HTML 简报
.\aiscan.ps1 all -OutDir C:\scans\2026-07-07 -Briefing
# 为您打算分享的输出遮盖用户名/路径/机密
.\aiscan.ps1 all -Redact
# 将扫描的内容,不读取任何内容
.\aiscan.ps1 discover
```
跨这五个工具的 MCP server 清单:
```
python tools\mcp-visibility\mcp_visibility.py --format summary
```
## 证据模型
每个收集器都会向 `evidence/.json` 写入一个 JSON 封装:
`findings`(按严重程度排序)、`rules`(标准化的 allow/deny/ask 清单)、`summary`(仅包含数字/受控词汇)、`raw_pointers`(仅限本地文件引用,绝不可安全共享)。工作区身份会被哈希化(`scope_label_redacted`),完整的文件系统路径绝不会出现在证据中,且记录文本绝不会离开本地的 `raw/` 目录。
[SCHEMA.md](SCHEMA.md) 是一种契约;若收集器违反了该契约,则视为 Bug。
## 仓库布局(组件)
单一 GitHub 仓库;工具按文件夹划分,便于独立测试:
```
core/ # shared common.py, paths.py, discover.py
components/
claude/ # collector + tests + fixtures + README
cursor/
codex/
copilot/
grok/
chat-history/
git-posture/
secrets-scan/
pii-scan/
report/ # HTML briefing builder
tools/mcp-visibility/ # cross-tool MCP inventory utility
scripts/test-component.ps1
aiscan.ps1 # orchestrator (one tool or all)
SCHEMA.md # evidence contract (all collectors)
```
## 开发 / 测试单个工具
```
# 单个 component
.\scripts\test-component.ps1 -Name claude
.\scripts\test-component.ps1 -Name codex
# Everything(所有 components + 集成 + mcp-visibility)
.\scripts\test-component.ps1 -Name all
# 在本机对单个工具进行 live scan
.\aiscan.ps1 claude
```
CI 会在 `windows-latest` 上为每个组件运行矩阵作业,这样某一个收集器的回归问题只会在其对应的矩阵单元中触发失败。
合成演示证据(无真实机器数据)位于 `samples/synthetic-demo/`;可通过 `python samples\make-synthetic-demo.py` 重新生成。
## 许可证
MIT。请参阅 [LICENSE](LICENSE) 和 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
本工具不附属于 Anthropic、OpenAI、Cursor、xAI、Microsoft 或 GitHub。
标签:AI合规, StruQ, 人工智能, 安全态势, 敏感信息发现, 用户模式Hook绕过, 离线扫描, 网络安全审计, 逆向工具, 配置检查