跳转到正文
报告库
用途分类 / 其他用途

Opencli Usage Skill 安全审计

作者说它能做什么(原文)

Use at the start of any OpenCLI session — this is the top-level map of what `opencli` can do, how to discover adapters, what flags and output formats are universal, and which specialized skill to load next. Point here when an agent asks "what can opencli do?" or "how do I find the right command?".

第三方安全检查结论

先别安装或运行

已检查文件
1
发现的风险
7
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 2 项风险
高风险

可从任意 Git 仓库安装第三方插件

原文依据:1 处
发现了什么

插件安装命令接受 `github:user/repo`,即第三方仓库代码。所提供的 Skill 没有要求固定提交、验证签名、审查代码或在沙箱中运行。

为什么需要注意

恶意或被入侵的插件可能在 OpenCLI 权限范围内读取文件、获取会话数据、执行命令或更改账户。

插件被描述为从 Git 拉取的第三方扩展,安装接口接受 GitHub 仓库标识,更新命令也可能取得后续代码。所给流程没有固定提交或审查步骤,因此安装或更新时会把仓库代码引入 OpenCLI 环境。用户可只允许已审查并固定提交的仓库,且在隔离环境验证。

SKILL.md:113来自说明文档打开原文件
Plugins are third-party extensions pulled from git, separate from the main adapter registry:```bashopencli plugin install github:user/repo    # installopencli plugin list [-f json]              # see installedopencli plugin update [name] | --all       # keep currentopencli plugin uninstall <name>opencli plugin create <name>               # scaffold a new plugin
高风险

外部 CLI 注册可保存并运行任意安装命令

原文依据:3 处
发现了什么

`external register` 示例接受自由形式的 `--install` 命令,安装也可经 brew、apt 或 npm 自动进行;外部程序运行时继承标准输入输出。清单还能由用户目录中的 YAML 覆盖,因此命令名称本身不能证明实际安装内容。

为什么需要注意

被篡改的清单或不可信注册项可能安装并执行其他软件;继承的输入输出还可能让该程序看到交互输入或认证提示。

外部 CLI 功能可按配置通过 brew、apt 或 npm 自动安装,也允许注册自由形式的安装字符串;运行外部程序时继承标准输入输出。用户目录还能覆盖内置清单,因此同一名称可能对应不同配置。若调用这些功能,安装命令和程序将以用户进程权限运行。用户可禁止自动安装和用户覆盖,只允许审核后的绝对二进制路径。

SKILL.md:128来自说明文档打开原文件
```bashopencli external install gh    # auto-install via brew/apt/npm per external-clis.yamlopencli external register my-tool \    --binary my-tool \    --install "npm i -g my-tool" \    --desc "My internal CLI"opencli external listopencli gh pr list --limit 5   # passthrough; stdio is inherited, exit code propagatedopencli docker ps
查看另外 2 个位置
SKILL.md:138来自说明文档打开原文件
Built-in entries live in `src/external-clis.yaml`; user overrides and additions in `~/.opencli/external-clis.yaml`. Commonly shipped: `gh`, `docker`, `vercel`, `lark-cli`, `longbridge`, `dws`, `wecom-cli`, `obsidian`, `ntn`, `tg(tg-cli)`, `discord(discord-cli)`, `wx(wx-cli)`.
SKILL.md:127来自说明文档打开原文件
```bashopencli external install gh    # auto-install via brew/apt/npm per external-clis.yamlopencli external register my-tool \    --binary my-tool \    --install "npm i -g my-tool" \    --desc "My internal CLI"opencli external listopencli gh pr list --limit 5   # passthrough; stdio is inherited, exit code propagatedopencli docker ps
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

网络捕获和浏览器状态会持久化到本地缓存

原文依据:2 处
发现了什么

Skill 明确把网络捕获和浏览器状态存入 `~/.opencli/cache`,失败追踪还会保留浏览器证据。所给材料没有说明加密、自动清理或敏感字段脱敏。

为什么需要注意

缓存可能包含请求内容、页面状态或认证相关材料;同机其他进程、备份或之后的诊断操作可能接触这些数据。

配置表明确把“网络捕获 + 浏览器状态缓存”放在用户主目录,失败修复流程还要求保留追踪并使用其中的浏览器证据。这些材料可能包含会话或页面敏感信息;文档未说明保存期限或保护措施。用户可限制缓存目录权限,并要求作者说明脱敏、加密和清理策略。

SKILL.md:85来自说明文档打开原文件
| `OPENCLI_CDP_ENDPOINT` | — | Manual CDP endpoint override (dev / remote Chrome / Electron). || `OPENCLI_CACHE_DIR` | `~/.opencli/cache` | Network capture + browser-state cache. || `OPENCLI_WINDOW` | command-specific | `foreground` or `background` browser window mode. |
查看另外 1 个位置
SKILL.md:91来自说明文档打开原文件
When an adapter command fails because the site changed (selectors drifted, API rotated, response schema shifted), re-run with `--trace retain-on-failure`. The error envelope includes a `trace` block pointing at `summary.md`; patch only the `adapterSourcePath` from that summary and retry. Max 3 repair rounds. The full flow is in `opencli-autofix`.
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
中风险

失败后的自修复流程会直接修改适配器源码

原文依据:1 处
发现了什么

发生站点变化时,Skill 指示代理根据追踪摘要中的 `adapterSourcePath` 修补文件并重试,最多三轮;没有要求先向用户展示差异或取得确认。路径来自命令生成的失败材料,而不是用户明确指定。

为什么需要注意

错误或受操纵的追踪结果可能导致持久修改错误文件,使适配器行为变化,并在重试时以登录会话执行新逻辑。

这是活动的自修复指令:失败后保留追踪,从生成的 summary.md 取得 adapterSourcePath,修改该源码并重试,最多三轮。即使限定为单个适配器文件,仍会在没有此处所述人工审阅步骤的情况下改变本地代码,并可能反复执行修改后的适配器。用户可要求每轮先展示目标路径和差异,并仅在明确批准后写入和重试。

SKILL.md:91来自说明文档打开原文件
When an adapter command fails because the site changed (selectors drifted, API rotated, response schema shifted), re-run with `--trace retain-on-failure`. The error envelope includes a `trace` block pointing at `summary.md`; patch only the `adapterSourcePath` from that summary and retry. Max 3 repair rounds. The full flow is in `opencli-autofix`.
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 3 项风险
高风险

可使用已登录会话的凭据并操作网站账户

原文依据:2 处
发现了什么

COOKIE 命令明确从实时 Chrome 会话捕获凭据,INTERCEPT 可捕获签名请求,UI 策略可进行完整 DOM 交互。绑定当前标签页虽然声称阻止标签页变更,但其他浏览器或 UI 工作流仍包含点击、输入和选择能力。

为什么需要注意

如果代理选择了这些策略,命令可能以用户身份读取私人内容或执行账户操作,其权限等同于该登录会话。

这是实际能力说明:浏览器子命令包括点击、输入和选择;COOKIE 策略会从已登录 Chrome 会话捕获凭据,INTERCEPT 捕获签名请求,UI 进行完整 DOM 交互。执行这些命令时可能读取账户数据或代表用户操作网站。用户应限定站点、命令和允许的写操作,并使用权限较低的专用会话。

SKILL.md:14来自说明文档打开原文件
- **Adapter commands** — `opencli <site> <command> [...]`. Built-in adapters live in `clis/`, user adapters in `~/.opencli/clis/`. Each is backed by a strategy (`PUBLIC | COOKIE | INTERCEPT | UI | LOCAL`) that tells you whether a Chrome session is needed.- **Browser driving** — `opencli browser *` subcommands (`open`, `state`, `click`, `type`, `select`, `find`, `extract`, `network`, …) for ad-hoc interaction and scraping when no adapter covers the task. See `opencli-browser`.- **Current-tab binding** — `opencli browser <session> bind` attaches the Chrome tab the user already opened/logged into to that browser session. Follow-up commands use `opencli browser <session> ...`. See `opencli-browser` before using it; bound sessions still block tab mutation.- **External CLI passthrough** — `opencli gh`, `opencli docker`, `opencli vercel`, etc. Managed via `opencli external install <name>` (auto-install from `external-clis.yaml`) or `opencli external register <name>` (bring your own).
查看另外 1 个位置
SKILL.md:38来自说明文档打开原文件
| `PUBLIC` | Nothing — pure HTTP, no browser. || `COOKIE` | Chrome logged into the target site + **OpenCLI** extension installed from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk). Command captures the credential from your live session — no re-login. || `INTERCEPT` | Same as COOKIE, plus opencli opens an automation window to capture a signed request. || `UI` | Same as COOKIE, full DOM interaction. || `LOCAL` | No browser; talks to a local/dev endpoint. |
高风险

可通过 CDP 接触已登录桌面应用

原文依据:1 处
发现了什么

Skill 指示 OpenCLI 通过 CDP 连接正在运行的 Cursor、Codex、Discord、ChatGPT 等 Electron 应用,并称其具有类似已登录浏览器的访问流程。文档未在所提供内容中限定可读取的数据或可调用的应用功能。

为什么需要注意

连接后可能暴露应用中的对话、工作区内容、账户会话或可代表用户执行的功能。

文档明确要求通过 CDP 连接正在运行且已登录的 Electron 应用,包括 Cursor、Codex、Discord 和 ChatGPT。连接后可接触这些应用的已认证上下文;但所给材料没有列出具体可读数据或可执行动作。用户可要求明确每个适配器的权限边界,并关闭无关应用或使用隔离账户。

SKILL.md:43来自说明文档打开原文件
Electron desktop apps (cursor, codex, chatwise, discord-app, doubao-app, antigravity, chatgpt-app) route through CDP against the running app — same cookie-less flow as a logged-in browser. Make sure the app is running before invoking.
低风险

安装命令没有固定依赖版本

原文依据:3 处
发现了什么

安装命令没有指定依赖版本。同样的命令以后可能下载不同代码,你实际安装的内容可能与这次检查时不同。

为什么需要注意

即使命令和报告没变,以后安装时也可能下载到另一份代码。

安装说明未固定 OpenCLI 的 npm 版本;源码方式也克隆仓库当前默认分支并按当时的依赖解析结果安装。因此,不同时间执行可能获得不同代码。用户可要求作者提供固定版本、提交哈希和锁文件校验方式。

SKILL.md:28来自说明文档打开原文件
cd OpenCLI && npm installnpx tsx src/main.ts <command>               # same surface, no global install```
查看另外 2 个位置
SKILL.md:22来自说明文档打开原文件
# npm globalnpm install -g @jackwener/opencli          # binary: opencli, requires Node >= 21opencli doctor                              # run before browser-dependent work (see below)
SKILL.md:26来自说明文档打开原文件
# From sourcegit clone git@github.com:jackwener/OpenCLI.gitcd OpenCLI && npm installnpx tsx src/main.ts <command>               # same surface, no global install```
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

8 个说明模块

该 Skill 是 OpenCLI 的入口指南:它要求代理先枚举已安装的站点适配器,再根据任务选择适配器、浏览器控制或外部 CLI。

查看原文
SKILL.md:48来自说明文档打开原文件
```bashopencli list                    # table, grouped by siteopencli list -f json            # machine-readable; pipe to jq or your agentopencli list | grep -i twitter  # find commands for a specific siteopencli <site> --help           # see that site's commands + flagsopencli <site> <command> --help # see positional args and command-specific flags```

部分适配器依赖用户已登录的 Chrome,会从实时会话取得凭据;浏览器子命令还可执行点击、输入、选择、抓取和网络检查。

查看原文
SKILL.md:14来自说明文档打开原文件
- **Adapter commands** — `opencli <site> <command> [...]`. Built-in adapters live in `clis/`, user adapters in `~/.opencli/clis/`. Each is backed by a strategy (`PUBLIC | COOKIE | INTERCEPT | UI | LOCAL`) that tells you whether a Chrome session is needed.- **Browser driving** — `opencli browser *` subcommands (`open`, `state`, `click`, `type`, `select`, `find`, `extract`, `network`, …) for ad-hoc interaction and scraping when no adapter covers the task. See `opencli-browser`.- **Current-tab binding** — `opencli browser <session> bind` attaches the Chrome tab the user already opened/logged into to that browser session. Follow-up commands use `opencli browser <session> ...`. See `opencli-browser` before using it; bound sessions still block tab mutation.- **External CLI passthrough** — `opencli gh`, `opencli docker`, `opencli vercel`, etc. Managed via `opencli external install <name>` (auto-install from `external-clis.yaml`) or `opencli external register <name>` (bring your own).
SKILL.md:38来自说明文档打开原文件
| `PUBLIC` | Nothing — pure HTTP, no browser. || `COOKIE` | Chrome logged into the target site + **OpenCLI** extension installed from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk). Command captures the credential from your live session — no re-login. || `INTERCEPT` | Same as COOKIE, plus opencli opens an automation window to capture a signed request. || `UI` | Same as COOKIE, full DOM interaction. || `LOCAL` | No browser; talks to a local/dev endpoint. |

它也支持通过 CDP 连接正在运行的桌面应用,并把网络捕获与浏览器状态缓存在用户目录中。

查看原文
SKILL.md:43来自说明文档打开原文件
Electron desktop apps (cursor, codex, chatwise, discord-app, doubao-app, antigravity, chatgpt-app) route through CDP against the running app — same cookie-less flow as a logged-in browser. Make sure the app is running before invoking.
SKILL.md:85来自说明文档打开原文件
| `OPENCLI_CDP_ENDPOINT` | — | Manual CDP endpoint override (dev / remote Chrome / Electron). || `OPENCLI_CACHE_DIR` | `~/.opencli/cache` | Network capture + browser-state cache. || `OPENCLI_WINDOW` | command-specific | `foreground` or `background` browser window mode. |

该指南允许从 Git 仓库安装第三方插件,也允许安装、注册并运行外部命令行程序。

查看原文
SKILL.md:113来自说明文档打开原文件
Plugins are third-party extensions pulled from git, separate from the main adapter registry:```bashopencli plugin install github:user/repo    # installopencli plugin list [-f json]              # see installed
SKILL.md:128来自说明文档打开原文件
```bashopencli external install gh    # auto-install via brew/apt/npm per external-clis.yamlopencli external register my-tool \    --binary my-tool \    --install "npm i -g my-tool" \    --desc "My internal CLI"opencli external listopencli gh pr list --limit 5   # passthrough; stdio is inherited, exit code propagatedopencli docker ps
从这里开始 · 工作说明SKILL.md
opencli-usage
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 7 个章节,可在原文件中查看。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明

代码和说明中提到的操作

运行命令
SKILL.md:4来自说明文档打开原文件
description: Use at the start of any OpenCLI session — this is the top-level map of what `opencli` can do, how to discover adapters, what flags and output formats are universal, and which specialized skill to load next. Point here when an a allowed-tools: Bash(opencli:*), Read---
SKILL.md:20来自说明文档打开原文件
```bash# npm global
SKILL.md:47来自说明文档打开原文件
```bashopencli list                    # table, grouped by site
安装其他软件包
SKILL.md:22来自说明文档打开原文件
# npm globalnpm install -g @jackwener/opencli          # binary: opencli, requires Node >= 21opencli doctor                              # run before browser-dependent work (see below)
SKILL.md:27来自说明文档打开原文件
git clone git@github.com:jackwener/OpenCLI.gitcd OpenCLI && npm installnpx tsx src/main.ts <command>               # same surface, no global install
SKILL.md:28来自说明文档打开原文件
cd OpenCLI && npm installnpx tsx src/main.ts <command>               # same surface, no global install```
连接外部网站
SKILL.md:38来自说明文档打开原文件
| `PUBLIC` | Nothing — pure HTTP, no browser. || `COOKIE` | Chrome logged into the target site + **OpenCLI** extension installed from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk). Command captures the credential from your live session — no re-login. || `INTERCEPT` | Same as COOKIE, plus opencli opens an automation window to capture a signed request. |
读取文件
SKILL.md:45来自说明文档打开原文件
## Discover what's installed — don't read this file, run a command
读取了多少行
171
文件校验值(用于核对版本)
f03de0904f88919a4a97dd181bc18437e4dff191250b6d83d780f9de27aa45a9