Grades are a hygiene check, not a security guarantee.

MCP, MCP server

OhMyZcode

OhMyZcode, an MCP server listed in the PlugVet directory.

Compatibility: Not stated.

Grade B

Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV OBFUSCATION_FILE_OVER_READ_CAP

Why this grade

  • PERMISSION_DELETE_FILES Low

    Contains a call that can delete files.

    adapters/zcode/path.mjs, line 99 fs.rmSync(tmp, { force: true });

  • NETWORK_NO_FIXED_HOST Low

    Makes a network call whose host is not written as a fixed address.

    dashboard/renderer/app.js, line 285 return fetch('/api/snapshot', { headers: headers, cache: 'no-store' })

  • NETWORK_UNNAMED_HOST Low

    Calls a fixed host that the description does not name.

    dashboard/renderer/app.js, line 285 return fetch('/api/snapshot', { headers: headers, cache: 'no-store' })

  • SECRETS_PATH_DOTENV Low

    Mentions a .env file.

    skills/review-work/references/lane-prompts.md, line 59 MUST DO: 逐项检查 - - 命令拼接/未转义参数、外部内容当指令(prompt injection)、secrets 与 .env 是否进 diff 或日志、新增网络出站是否外传代码/用户数据、危险操作(递归删除、force push、DB drop)是否有确认门、无认证的网络暴露面。

  • OBFUSCATION_FILE_OVER_READ_CAP Note

    A file was over the read cap and was not fully read.

    DESIGN.md, line 1 **English** | [简体中文](./DESIGN.zh-CN.md)

Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.

Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.

What was checked

Plain notes from the hygiene checks.

  • Permissions

    Concern

    can delete files.

    PERMISSION_DELETE_FILES

    adapters/zcode/path.mjs, line 99

    fs.rmSync(tmp, { force: true });

    hooks/keyword-detect.mjs, line 736

    fs.rmSync(path.join(tmpRoot, '.omz'), { recursive: true, force: true });

    hooks/keyword-detect.mjs, line 739

    fs.rmSync(tmpRoot, { recursive: true, force: true });

  • Install and update

    Pass

    No install-time script found, and dependencies are pinned or absent.

  • Network

    Concern

    can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host.

    NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST

    dashboard/renderer/app.js, line 285

    return fetch('/api/snapshot', { headers: headers, cache: 'no-store' })

    skills/review-work/references/lane-prompts.md, line 33

    MUST DO: 命令逐字留档(含 cwd);双证据(测试 ID + 断言消息 双态 / 真实工件:命令转录、curl 状态码+body、文件产物路径);清理端口/临时目录/后台进程并留清理收据。

    skills/ulw-execute/SKILL.md, line 71

    1. 双证据:① 测试输出(测试 ID + 断言消息,双态:改前失败/改后通过)② 真实工件(命令转录 / curl 状态码+body / 文件产物路径 / 截图)。

    Show more

    tools/lib/license-gate.mjs, line 52

    export const VERIFY_COMMAND = 'curl -s https://api.github.com/repos/code-yeongyu/oh-my-openagent/license';

    CHANGELOG.md, line 584

    HTTP service (`fetch('/api/*')`), the token travels in the address-bar query (`urlOf('/')` appends `?token=` and the

    CHANGELOG.zh-CN.md, line 263

    - **移除 dashboard preload(发布前收尾)**:删除 `dashboard/preload.mjs`,连同 `main.mjs` 的 `windowOptions()` 里的 `preload` 字段与配套的 `OMZ_DASHBOARD_URL`/`OMZ_DASHBOARD_TOKEN` 环境变量写入。三条理由:① 与 `sandbo

    DESIGN.md, line 1042

    - **The preload guard among the original seven ("preload exposes only a minimal contextBridge API", listed last in the CHANGELOG 1.1.0 list and therefore also called the seventh gu

    DESIGN.zh-CN.md, line 1009

    - **原七道里的 preload 那一道("preload 只暴露最小 contextBridge API",CHANGELOG 1.1.0 清单里列在末位,故也称第七道)已撤下,不再适用**:`dashboard/preload.mjs` 连同 `windowOptions()` 里的 `preload` 字段一起删除,因此这道防护**没有可保护的对象*

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_PATH_DOTENV

    skills/review-work/references/lane-prompts.md, line 59

    MUST DO: 逐项检查 - - 命令拼接/未转义参数、外部内容当指令(prompt injection)、secrets 与 .env 是否进 diff 或日志、新增网络出站是否外传代码/用户数据、危险操作(递归删除、force push、DB drop)是否有确认门、无认证的网络暴露面。

    skills/ulw-research/references/worker-prompt.md, line 54

    7. 不得回显 secret 值(按 key 名引用);不得把 `.env` 类文件内容写进 manifest。

    tools/doctor.mjs, line 104

    for (const [ek, ev] of Object.entries(srv?.env ?? {})) {

  • Agent instructions

    Pass

    No instruction to ignore earlier instructions or to hide a step.

  • Obfuscation

    Note

    a file was over the read cap and was not fully read.

    OBFUSCATION_FILE_OVER_READ_CAP

    DESIGN.md, line 1

    **English** | [简体中文](./DESIGN.zh-CN.md)

    DESIGN.zh-CN.md, line 1

    [English](./DESIGN.md) | **简体中文**

    docs/omz-architecture.html, line 1

    <!DOCTYPE html>

    Show more

    docs/omz-architecture.zh-CN.html, line 1

    <!DOCTYPE html>

  • Licence

    Pass

    A licence file is present (LICENSE).

  • Maintainer activity

    Pass

    The latest commit is within the last 365 days.

Note

Hygiene check of commit 4f751637dc6a. can delete files. can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host. reads a credential or environment file. a file was over the read cap and was not fully read.

Date and source

Date checked:

View source

github.com

Commit graded: 4f751637dc6a82ba5f5474937746c4ee65f5ae42

This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.

Read how this letter is chosen