seipass/agenthusk
GitHub: seipass/agenthusk
AgentHusk 是一款本地优先的取证扫描器,用于检测AI编码代理留下的秘密和风险残留。
Stars: 1 | Forks: 0
# 代理Husk
**在本地 AI 编码代理存储中找到成为事件前的秘密形状残留。**
AgentHusk 是一个本地优先的取证扫描器。它检查已知的代理目录,而不故意修改源工件,标记秘密和风险残留,并将匹配的内容值排除在其默认匿名报告中。它写入包含简短指纹的本地报告工件,以便在不需要将匹配凭据复制到另一个工件的情况下对重复匹配进行分组。
无外部 API。无上传。无遥测。
AgentHusk 不会启动配置的 MCP 服务器,执行发现的命令或检查实时代理流量。其范围故意较窄:代理运行后的静态本地残留。

## 30 秒快速入门
需要 Node.js 20 或更高版本。
```
npx agenthusk demo
npx agenthusk scan
```
`demo` 创建一个安全的合成报告。`scan` 检查您家目录下存在的受支持代理目录,并为您编写一个本地报告以供审查。
如果您更喜欢持久命令,请全局安装:
```
npm install -g agenthusk
agenthusk demo
agenthusk scan
```
## 它检测什么
AgentHusk 当前寻找以下内容:
- 秘密形状的值,包括常见的 API 密钥、访问令牌、承载令牌、webhook URL 和分配的秘密值。
- 在多个扫描文件中出现的相同检测到的秘密,按简短指纹分组。
- 环境文件副本、shell 历史文件和本地保留的代理会话记录。
- 可由其他本地用户读取的敏感残留文件和可由其他本地用户遍历的代理目录。
- 值得信任边界审查的 MCP 服务器配置声明。
- 覆盖范围缺口,例如未进行内容扫描的超大文件。
发现是审查的线索,而不是妥协的证据。
报告的总体风险信号是视觉分类辅助工具,不是安全等级或机器安全的证明。使用发现证据和覆盖范围部分来决定要本地检查的内容。
## 信任模型
AgentHusk 被设计为添加比其发现的更少的敏感残留:
- AgentHusk 不会故意编辑、删除、隔离、轮换或上传扫描的源工件。它确实会写入请求的本地报告工件。
- 扫描器不调用外部 API,也不发送遥测数据。
- 匹配的内容值不会复制到内容派生的报告字段中。每次运行都会生成一个 32 个字符的随机 HMAC 密钥,用于在该报告中分组匹配项。
- 指纹故意不在不同的运行之间保持稳定。
- 报告默认匿名化源路径。它们仍然包含元数据,例如匿名化路径、行号、权限模式和发现细节。在共享之前审查报告。
- 仅当您明确传递不安全的 `--show-paths` 选项时,才包括原始源路径。原始路径本身可能包含敏感文本,包括文件内容中也存在的值。
- 如果有的话,原始秘密仍然保留在源文件中,直到您修复它。
尽可能在快照或复制的树上运行扫描,作为普通用户。避免扫描可写树、FUSE 或网络挂载,或以提升权限运行 AgentHusk。扫描器跳过符号链接,但它不是设计来防御同时更改或敌对文件系统的。
## 支持的代理
默认扫描检查当前用户家目录下的这些已知位置:
| 代理 | 位置 |
| --- | --- |
| Codex | `~/.codex` |
| Claude Code | `~/.claude` |
| Gemini | `~/.gemini` |
| OpenClaw | `~/.openclaw` |
| Hermes | `~/.hermes` |
| Cursor | `~/.cursor` |
| Windsurf | `~/.windsurf` |
| OpenCode | `~/.config/opencode` |
| Continue | `~/.continue` |
| Cline | `~/.cline` |
支持意味着 AgentHusk 知道在哪里查找。这并不意味着与任何代理有关联、认可或完全覆盖任何代理。
## 有用的选项
默认情况下,AgentHusk 在当前目录中写入 `agenthusk-report.html` 和 `agenthusk-report.json`。在 POSIX 平台上,报告以所有者仅有的模式 `0600` 创建。Windows ACL 强制执行未实现。
```
npx agenthusk scan --root /path/to/review --max-files 5000
npx agenthusk scan --root /path/to/review-copy --max-bytes 8388608
npx agenthusk scan --card agenthusk-card.svg
npx agenthusk demo --out demo/report.html --json demo/report.json --card demo/card.svg
```
使用 `--root` 来扫描显式目录而不是默认已知根;重复它以扫描多个。运行 `npx agenthusk help` 以获取完整的选项列表。
默认情况下,路径会被匿名化,以便报告更安全地审查和共享。使用 `--max-bytes` 来更改每个文件的内容检查限制。SVG 分享卡片完全省略路径。
`--show-paths` 是仅用于本地调查的不安全选项。对于家目录下的根,它包括本地相对路径。对于外部显式根,它保留绝对根的隐藏状态,但包括子名称。路径本身可能包含敏感文本,因此不要为此选项使用可能共享的工件。
## 限制
AgentHusk 是一种狭窄的取证辅助工具,而不是秘密管理器、恶意软件扫描器或合规性控制。
- 模式匹配可能会产生误报和漏报。
- 默认情况下,会跳过大于 4 MiB 的文件进行内容检查。
- 默认情况下,聚合内容读取限制为 64 MiB。
- 默认情况下,扫描限制为 20,000 个访问的文件和最大遍历深度为 14。
- 扫描器会跳过符号链接、符号链接的最终根和具有符号链接子组件的选定家目录下的根。`.git`、`node_modules` 和 `coverage` 目录不会被遍历。
- 二进制文件不会进行内容扫描。
- 扫描器无法检测不匹配其当前规则的秘密、扫描根之外的残留或已离开机器的凭据。
- 扫描可写树、FUSE 挂载、网络挂载或攻击者控制的文件系统可能会产生不一致的结果或使扫描器暴露于文件系统竞争条件。请优先选择快照或复制的树。
- 清洁报告不是机器或账户安全的证据。
## 如何处理发现
1. 在本地审查引用的源文件。不要将底层值粘贴到问题中。
2. 如果可能或保留意外,则轮换或吊销凭据。
3. 在适当的地方删除陈旧的残留或限制权限。
4. 重新运行扫描并检查新的本地报告。
## 开发
```
npm test
npm run check
npm run smoke:pack
```
在更改检测或擦除行为之前,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。扫描器边界在 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 中记录。计划的工作在 [docs/ROADMAP.md](docs/ROADMAP.md) 中跟踪。有关使用问题,请阅读 [SUPPORT.md](SUPPORT.md)。有关安全报告,请阅读 [SECURITY.md](SECURITY.md)。维护者可以使用 [docs/RELEASE.md](docs/RELEASE.md) 作为发布清单。
## 许可证
MIT
标签:AI 安全, C2日志可视化, GNU通用公共许可证, MITM代理, Node.js, URL发现, 云安全监控, 代理检测, 命令行历史扫描, 安全合规, 安全报告, 安全检测, 安全防护, 指纹识别, 数据泄露防护, 无服务器安全, 本地化安全, 本地安全扫描, 环境变量扫描, 秘密泄露检测, 网络代理, 网络探测, 自定义脚本, 静态分析