返回更新列表
新发布Aug 31, 2026

ship-safe v9.7.5

面向 AI 编写软件的独立安全代理。发现问题,调查其是否真实存在,并向你展示证据。确定性核心,无需 API 密钥,支持 JSON 和 SARIF 输出。

分享

Ship Safe Logo

面向 AI 编写软件的独立安全代理。它发现问题、调查问题是否真实存在,并向你展示证据。

网站 · 文档 · 安全与数据流 · 基准测试 · 定价 · 博客 · 参与贡献

npm version npm downloads CI License: MIT GitHub stars Sponsor

Ship Safe CLI

Ship Safe 在你的仓库中本地运行,分为两个层次。

一个确定性引擎会在应用代码、AI 代理、MCP 配置、提示词、依赖项、CI/CD、密钥以及云相关配置中发现问题。快速、可重复且经过基准测试——这是传感器层。

随后,一个调查层会判断这些发现的价值。它会追踪到达 sink 的值,在项目中搜索某条规则声称缺失的控制措施,跨单个文件无法容纳的配置构建攻击链,并且——在你要求时——用泄露的密钥对其提供商进行探测。每个结论都带有得出该结论的检查过程及其读取的行:

CONFIRMED — traced end to end (10)

    NoSQL Injection via $where [high]
    app/data/allocations-dao.js:78  NOSQL_INJECTION_WHERE
    why: threshold is assigned from the HTTP request and reaches the sink without validation on that path.
    decided by: dataflow
      1. value reaches NOSQL_INJECTION_WHERE here  app/data/allocations-dao.js:78
      2. getByUserIdAndThreshold is called here with threshold  app/routes/allocations.js:23
      3. threshold is assigned here  app/routes/allocations.js:20
    fix: Replace $where with standard MongoDB operators ($eq, $gt, $regex, etc.)

来自 ship-safe investigate 针对 OWASP NodeGoat 的真实输出。被污染的值在路由文件中被解构,并传递到三个目录之外的 DAO 中。

从一个命令开始:

npx ship-safe

无需注册。扫描无需 API 密钥。核心检查可离线运行。AI 支持的红队模式在可用时使用你配置的提供商。

使用 --no-ai 可确保完全本地扫描。由提供商支持的分类、深度分析和 GPT-Red 会在尽力进行凭据掩码后,将有限上下文直接发送到你选择的提供商。有关确切边界和上下文限制,请参阅 Security & Data Flow。

Ship Safe REPL demo


快速开始

# Interactive REPL: scan, fix, and ask questions in one session
npx ship-safe

# Full audit: secrets + 30 agents + deps + remediation plan
npx ship-safe audit .

# Investigate: confirmed / likely / unresolved / refuted, with the evidence
npx ship-safe investigate .
npx ship-safe investigate . --all       # also detail unresolved and refuted
npx ship-safe investigate . --verify    # probe leaked keys against their providers

# Before you open an unfamiliar folder with an agent: what runs on open?
npx ship-safe trust ~/Downloads/take-home
npx ship-safe trust . --json

# What can an AI agent working in this repo actually reach?
npx ship-safe capabilities .

# AI agent red-team scenarios for agent-readable content
npx ship-safe red-team . --gpt-red

# Interactive fix agent: plan, diff, approve, verify the path closed
npx ship-safe agent .
npx ship-safe agent . --severity critical   # critical findings only
npx ship-safe agent . --branch --pr         # fix on a branch + open a PR

# Undo the last fix
npx ship-safe undo

# CI/CD mode — fails on any critical finding
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high              # stricter: critical or high

# Gate on evidence instead of severity: block only what was established
npx ship-safe ci . --fail-on-verdict confirmed
npx ship-safe ci . --ignore-refuted            # do not block on what was argued away

对于拉取请求,将可信的基线扫描与头部扫描进行比较,使现有仓库债务保持可见,而不会阻塞无关的更改:

# On the trusted base revision
npx ship-safe ci . --fail-on none --no-deps \
  --write-baseline-report /tmp/ship-safe-base.json

# On the pull request head
npx ship-safe ci . --base-report /tmp/ship-safe-base.json --fail-on high

基础产物包含哈希后的发现标识、相对路径和规则元数据。它不存储原始匹配的机密信息。PR 结果将发现分类为引入、已解决、未变更或不确定;模糊匹配会显示但不会阻止拉取请求。

Ship Safe 能发现什么

领域示例
AI 与 LLM 安全提示注入、代理劫持、过度代理、内存投毒、RAG 投毒、不安全的工具调用
MCP 与代理配置过宽的工具权限、被投毒的注册表、不受信任的传输、危险的允许列表
应用安全SQL/NoSQL 注入、XSS、SSRF、认证绕过、路径遍历、不安全的 API 路由
机密与合规API 密钥、令牌、凭据、PII、git 历史中泄露的机密
供应链域名抢注、依赖混淆、有风险的安装脚本、未固定版本的 AI 操作
CI/CD流水线投毒、未固定版本的 GitHub Actions、机密日志记录、不安全的工作流触发器

工作原理

  1. 本地扫描 - Ship Safe 使用针对性代理检查你的仓库,并跳过不适用的检查。
  2. 调查每个发现 - 独立的检查环节决定其是否真实,并按优先级排序,确保成本较低的环节永远不会推翻成本较高的环节:追踪到的数据路径优先于模型对同一文件的解读,而经过身份验证的探测优先于两者。
  3. 阅读证据 - 发现会归结为已确认、可能、未解决或已驳斥,每项都引用得出结论所依据的代码行,因此你可以对某个步骤提出异议,而不是对严重性标签提出异议。
  4. 可控修复 - 代理提出计划和差异,在写入前询问,验证结果,并保持更改可逆。
  5. CI 中门禁 - 使用 ship-safe ci 使有风险的构建失败,并将 SARIF 上传到 GitHub 代码扫描。

Ship Safe agent demo


“为什么不直接让我的编码代理审查仓库?”

你可以这样做,也应该这样做。它会发现真实的问题。但关于它自身的工作,有三个问题它在结构上无法回答。

编写这段代码的代理是不是在给自己的作业打分? 问作者是否犯了错误并不是审查。Ship Safe 是一个独立的审查者,采用独立的方法,并且它公开地自我矛盾——数据流追踪会推翻启发式检查,而实时探测会推翻两者。

它能看到自己能触及的范围吗? 审查你仓库的编码代理无法读取你的 MCP 服务器配置,无法枚举它启动时被授予的权限,而且它正是其触及范围受到质疑的行为者。ship-safe capabilities 从外部读取所有这些信息,并报告那些单独看平平无奇、组合起来却危险的组合:

  CRITICAL  Repository-controlled instructions reach an unattended write capability
    1. CLAUDE.md is read as instructions and can be changed by anyone who lands a commit
       CLAUDE.md:1
    2. Claude Code runs without per-action approval
       .claude/settings.json:2
    3. shell execute granted: Bash(git push:*)
       .claude/settings.json:3
    4. filesystem write granted: Write
       .claude/settings.json:3
    5. mcp-tool write granted: mcp__github__create_pull_request
       .claude/settings.json:3
    Impact: Text committed to this repository can direct the agent to write files
            or run commands with no human in the loop.
    Boundary: Require approval for write and execute tools during sessions on
              untrusted branches, or remove the pre-granted entries.

这些行单独来看都平平无奇。它们合在一起,却构成了一条从拉取请求到特权写入的路径,而任何单文件审查都无法看到它,因为没有哪个单独的文件包含它。

它是否一致,你能否证明它变好了? 问两次,得到两个答案。Ship Safe 的引擎是确定性的,其结论在 CI 中由一个基准把关,该基准评分的是结论质量,而非模式覆盖率:它解决了多少已知真实发现,驳回了多少已知噪声,以及它是否曾驳回真实问题。最后一项的预算是零——它是唯一会静默丢失漏洞的错误类别。参见 benchmarks/。

开发者为何使用它

  • 为 AI 原生应用而构建:捕获 agents、MCP servers、prompts、RAG 流程、managed-agent 配置和 AI 驱动的 CI 中的风险。
  • 与 AI 客户端配合使用:通过本地 stdio server 将 Ship Safe 暴露给 Codex、Claude Desktop、Cursor、Windsurf 及其他 MCP 客户端。
  • 快速的本地反馈:在 PR 之前、审查期间或 CI 内部运行它,无需将代码发送到托管扫描器。
  • 修复可审查:每个建议的更改在触及你的文件之前都以 diff 形式展示。
  • 适配你的技术栈:JavaScript、TypeScript、Python、配置文件、基础设施文件、GitHub Actions 等。
  • 开源核心:MIT 许可的 CLI,附带文档、示例和不断增长的 agent 系统。

免费 CLI,付费团队工作流

开源 CLI 是在本地扫描任何仓库的最快方式。当你需要围绕同一扫描器的托管工作流时,再升级:

需求使用
本地扫描、审计和 agent 辅助修复免费 CLI
扫描历史、云仪表板和 PDF 报告Pro
共享工作区、PR Guardian、团队报告和协作Team

在 shipsafe.sh/pricing 比较各计划。

分类