rogerchappel/promptlintel
GitHub: rogerchappel/promptlintel
PromptLintel 是一个本地 CLI 工具,用于在 AI Agent 加载 prompt 文件前对其做静态规则检查,拦截提示注入隐患、密钥泄露、不安全外部操作措辞及缺失来源和安全边界等问题。
Stars: 0 | Forks: 0
# PromptLintel 🧱
PromptLintel 是一个本地 CLI 工具,用于在 agent 摄取类 prompt 文件之前对其进行 lint 检查。它会查找 prompt 注入隐患、密钥特征字符串、不安全的外部操作措辞,以及缺失的来源信息或安全边界。
它以一种最好的方式刻意保持了简单枯燥:确定性的规则、稳定的 Markdown/JSON 报告、无遥测、无网络调用,且不会有令人意外的文件修改。
## 安装
```
npm install -D promptlintel
npx promptlintel scan AGENTS.md prompts/**/*.md
```
从本仓库安装:
```
npm install
npm run build
node dist/cli.js scan examples/fixtures --fail-on high
```
## 快速开始
```
promptlintel scan AGENTS.md skills/**/*.md --out promptlintel-report.md
promptlintel scan prompts/ --format json --fail-on high
promptlintel rules --format markdown
```
失败的结果意味着至少有一项发现达到或超过了 `--fail-on` 阈值(`info`、`low`、`medium`、`high` 或 `critical`)。
## 检测内容
- **Prompt 注入隐患** — 例如“忽略之前的指令”或隐藏指令的措辞。
- **类密钥字符串** — 不应存在于 prompt 文件中的 token/API key/私钥模式。
- **不安全的外部操作** — 鼓励在未经批准的情况下进行发送、发布、删除、购买或公开发布的措辞。
- **缺失来源信息** — 没有来源、所有者、上下文或归属信息的 prompt 文件。
- **缺失安全边界** — 没有安全、权限、安全防护或红线部分的 prompt 文件。
## 内联允许
请谨慎且显眼地使用允许指令。它们适用于引用示例、测试固定数据(fixtures)和记录在案的例外情况——而不是用来隐藏风险。
```
A malicious prompt may say: ignore previous instructions.
```
仅在所有发现都是有意为之的小型 fixture 文件中使用 `promptlintel-allow *`。
## 配置
`promptlintel.config.json` 可以禁用默认规则、添加本地规则,或设置默认的失败阈值:
```
{
"failOn": "high",
"includeDefaultRules": true,
"disabledRules": ["provenance-missing"]
}
```
运行方式:
```
promptlintel scan prompts --config promptlintel.config.json
```
## 报告
Markdown 报告专为人类阅读和 PR 评论设计。JSON 报告足够稳定,适用于 CI 工具和简单的策略脚本。每项发现都包含严重程度、规则 ID、文件、行号、列号、代码片段和修复建议。
## 安全模型
PromptLintel 是一道门梁(lintel),而不是金库大门。它能在 prompt 文件到达 agent 之前减少常见错误,但它不能替代密钥扫描器、代码审查、权限边界或运行时的人机交互控制(human-in-the-loop)。
项目承诺:
- 无遥测;
- 无网络访问;
- 不修改扫描的文件;
- 无隐藏写入;
- 不读取请求路径之外的任何内容。
## 示例
```
node dist/cli.js scan examples/fixtures/safe-agent.md --format markdown
node dist/cli.js scan examples/fixtures/risky-agent.md --format json --fail-on high
node dist/cli.js scan examples/fixtures/allowed-example.md --format json
```
## 开发
```
npm test
npm run check
npm run build
npm run smoke
bash scripts/validate.sh
```
## 局限性
- V1 是基于规则的,不使用 LLM。
- 密钥检测是刻意保持保守的,并非完整的凭证扫描器。
- Glob 支持范围被刻意限制得很小,且仅限于当前工作区。
- 在将各项发现转化为策略之前,应由人工进行审查。
## 发布准备
在开启或发布版本之前,请使用已提交的脚本:
```
npm run check
npm test
npm run build
npm run smoke
npm run package:smoke
npm run release:check
```
包冒烟测试使用 `npm pack --dry-run`,这样无需发布即可审查已发布的文件列表。
标签:AI安全, Chat Copilot, DLL 劫持, MITM代理, StruQ, 人工智能, 代码质量检查, 前端框架, 大语言模型, 提示词工程, 文档结构分析, 暗色界面, 用户模式Hook绕过, 策略决策点, 自动化攻击, 错误基检测, 静态代码分析