内容
# taskbounty-check
**用于 GitHub Actions 和 CI 维护卫生的本地检查** (第三方动作锁定、 工作流令牌权限和更新自动化),适用于与 Lovable、Bolt、Replit、Cursor 或 v0 捆绑销售的应用程序。
**默认本地运行。无需上传。无需遥测。** 它只读取您的工作流文件,在您的机器上运行。 默认代码路径不会发出任何网络请求,本地写入报告,并且不会将任何数据发送到其他地方。 没有分析或电话-home 类型的行为。 只有选择加入的 `--gh-org` 模式(通过您自己的 `gh` 会话)使用网络。
**与 Cursor、Claude Code 和 Codex 兼容** (本地 MCP 服务器,以下有详细介绍)。
## 三种使用方式
**1. GitHub Action** — 在 CI 中添加维护检查,写入运行摘要(无 PR 评论,无源码上传):
```yaml
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- run: npx taskbounty-check@0.1.6 . --github-summary --no-network
```
希望人类解释或修复 Action 暴露的问题? [请求免费的启动安全审查](https://www.task-bounty.com/ai-app-security-check/review?utm_source=github&utm_medium=marketplace&utm_campaign=agent_distribution)。 TaskBounty 在您提交该表单之前不会访问您的存储库、源码或工作流。
**2. 代理 / MCP** — 用于 Cursor、Claude Code 和 Codex 的本地标准输入/输出服务器:
```bash
npx -y taskbounty-check@0.1.6 mcp
```
**3. 一次性 CLI** — 在本地扫描当前存储库并写入报告:
```bash
npx -y taskbounty-check@0.1.6 .
```
> 在提交的配置和 CI 中固定版本(`@0.1.6`)以实现可重复性。 `@latest` 方便进行快速一次性检查,但固定版本是可重复的选择。
### GitHub 工作流摘要
Action 写入工作流运行的仅包含计数信息的维护摘要(类别和下一步骤,无文件名、行号或存储库源码)。以下是该确切摘要,从此存储库的 CI 输出中渲染:

在 [此存储库的 Actions 运行](https://github.com/eliottreich/taskbounty-check/actions) 中实时查看它生成的 **自检** 工作流。
更喜欢引导式演练? 遵循 [五分钟真实存储库快速入门](docs/real-repo-quickstart.md)。
### 了解更多
- [方法论](https://www.task-bounty.com/github-actions-security-check/methodology) — 它审查的内容以及发现结果如何标记。
- [隐私和范围](https://www.task-bounty.com/ai-app-security-check) — 默认本地数据处理。
- [限制](#supported-checks-and-honest-limitations) — 它不检查的内容(如下)。
## 支持的检查(和诚实的限制)
**检查(GitHub Actions + CI 维护卫生):**
- 第三方动作固定到可移动的标签/分支而不是提交 SHA
- 广泛(写入所有)工作流令牌权限
- 缺失的显式 `permissions:` 块
- 更新自动化(Dependabot/Renovate)存在
- 依赖上下文的工作流模式标记为私有审查(例如 `pull_request_target`、脚本注入)
**不检查** (这些需要手动审查):暴露的机密、身份验证/授权、支付、Webhook、运行时行为。 它是维护/卫生检查,**不是**完整的安全审计或渗透测试。
## 它做什么
- 只读取您的 GitHub Actions 工作流文件和更新自动化配置,在进程中扫描它们并使用确定性规则集(与公共检查器相同的规则),并写入本地 HTML + JSON 报告。 它 **不** 执行工作流、安装依赖项或运行任何存储库代码。
## 模式
| 模式 | 命令 | 网络 |
|------|---------|---------|
| 单个存储库 | `npx taskbounty-check .` | 无 |
| 存储库目录 | `npx taskbounty-check ./all-repos` | 无 |
| 显式路径 | `npx taskbounty-check --manifest repos.json` | 无 |
| GitHub 组织(您的 `gh` 会话) | `npx taskbounty-check --gh-org <org>` | **是,选择加入** |
`--gh-org` 使用您现有的 `gh` CLI 会话获取每个存储库的工作流文件 **到此机器** (只读)。 您的 GitHub 令牌从未被此工具读取,也从未发送到 TaskBounty。
## 读取、写入、传输
在任何时候运行 `--explain-data` 打印此信息。
- **读取(允许列表 - 除了以下内容外不打开任何文件):** `<repo>/.github/workflows/*.yml|*.yaml` 和更新自动化配置(`dependabot.yml`/`renovate.json*`)。 绝不读取源文件、`.env`、机密、SSH 密钥、凭据存储或选定存储库根目录之外的任何内容。 跳过并永远不会跟随超出根目录的符号链接。
- **写入(仅本地):** `<out>.json` (完整详细信息)和 `<out>.html`。
- **传输:** 默认情况下无。 **`--share` 上传无** - 它写入一个 *净化、仅包含计数信息* 的文件(扫描 ID、标签、类别的候选计数、私人审查 **计数**、扫描器版本、时间戳;仅在 `--include-repo-names` 下包含存储库名称),供您 **手动** 提交。 在 `--share` 下,网络保持关闭。 只有 `--gh-org` 有意使用网络。
## 标志
`--share` · `--gh-org <org>` · `--manifest <file>` · `--org-label <label>` ·
`--include-repo-names` · `--dry-run` · `--explain-data` · `--delete-local-report` ·
`--no-network` (除 `--gh-org` 外的默认设置)· `--out <basename>` · `--version` · `--help`
## 需要帮助解释或修复这些结果?
请求免费的 20 分钟启动安全审查:
https://www.task-bounty.com/ai-app-security-check/review?utm_source=npm&utm_medium=npm_readme&utm_campaign=workflow_security
**TaskBounty 在您提交该表单之前不会接收任何信息。** 扫描在本地运行,完整报告保留在您的机器上;审查表单不会让我们访问您的存储库、源代码、工作流或机密。
## GitHub 代码扫描(SARIF)
发出 SARIF 2.1.0 并在存储库的安全 → 代码扫描选项卡中显示发现结果:
```bash
npx taskbounty-check@latest . --format sarif --output taskbounty.sarif
```
SARIF 携带确定性规则 ID (`taskbounty/<rule>`)、严重性级别和文件/行引用 - **无源代码内容、机密或环境值**,且无需网络访问。 确认的发现结果以 `kind: fail` 发出;置信度较低的项目以 `kind: review` 发出。
帮助解释 SARIF 结果: https://www.task-bounty.com/ai-app-security-check/review?utm_source=github&utm_medium=sarif_docs&utm_campaign=workflow_security
使用官方操作上传它(完整示例见 [`examples/code-scanning.yml`](examples/code-scanning.yml)):
```yaml
permissions:
contents: read
security-events: write
steps:
- uses: actions/checkout@v4
- run: npx taskbounty-check@0.1.6 . --format sarif --output taskbounty.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: taskbounty.sarif
```
## 本地代理(MCP)
运行一个 **本地** 标准输入/输出 MCP 服务器,以便 Codex、Claude Code 或 Cursor 可以扫描和推理您的编辑器中的发现结果。 它在本地运行,发出 **零个外向网络请求**,上传 **没有源代码**,并且 **从不修改文件** - `generate_fix_plan` 返回一个文本计划,供您自己应用。
```bash
npx taskbounty-check@latest mcp
```
工具:`scan_repo` (本地扫描摘要),`explain_finding` (纯语言解释),`generate_fix_plan` (文本修复计划)。
希望有人审查计划? https://www.task-bounty.com/ai-app-security-check/review?utm_source=mcp&utm_medium=mcp_docs&utm_campaign=workflow_security
**Cursor** — `.cursor/mcp.json`:
```json
{ "mcpServers": { "taskbounty-check": { "command": "npx", "args": ["-y", "taskbounty-check@latest", "mcp"] } } }
```
**Claude Code**:
```bash
claude mcp add taskbounty-check -- npx -y taskbounty-check@latest mcp
```
**Codex** — 在 `~/.codex/config.toml` 中:
```toml
[mcp_servers.taskbounty-check]
command = "npx"
args = ["-y", "taskbounty-check@latest", "mcp"]
```
## 安全
零运行时依赖。 使用出处发布到 npm(在包的 npm 页面上验证)。 默认运行不会发出任何外向请求,也不会上传任何数据; 有关数据处理和范围边界的详细信息,请参见 [方法论](https://www.task-bounty.com/github-actions-security-check/methodology)。