Back to skill

Security audit

将 Markdown 技术文档自动转换成带配音旁白的专业视频

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed document-to-video workflow, but it includes review-worthy maintenance instructions that can overwrite active agent skill files and relies on risky dependency/install practices.

Review this skill before installing. Use the video-generation templates only inside a dedicated project or virtual environment, pin and update dependencies before running npm or pip, and avoid the Hermes/OpenClaw sync helper unless you intentionally want to replace active skill files. Check the working directory before running any cleanup commands.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (3)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:107
Finding
Unpinned Python Dependency Creates a Supply-Chain Exposure<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:107-111`; `references/macos-gotchas.md:12` **Vulnerability Type**: Unpinned third-party package installation **Risk Level**: Medium ### Vulnerable Code From `SKILL.md`: ```bash # 1. Install Python dependencies pip3 install edge-tts ``` From `references/macos-gotchas.md`: ```bash pip3 install --user edge-tts ``` ### Technical Analysis The documented installation commands resolve and install the latest version of `edge-tts` available at execution time. They do not specify a reviewed version, dependency lock file, package hash, or other integrity constraint. Consequently, the code installed by two users at different times may differ from the code reviewed during this audit. If the package itself or one of its transitive dependencies is compromised, a future installation can execute attacker-controlled package installation logic in the user's Python environment. The package name does not appear to be a typographical error, and the audit found no evidence that the currently referenced dependency is malicious. The vulnerability is the absence of reproducible version and integrity controls. ### Attack Path 1. An attacker compromises the package publisher account, package distribution channel, or a transitive dependency. 2. The attacker publishes a malicious version that retains the expected package name. 3. A user follows the Skill's documented `pip3 install edge-tts` command. 4. `pip` selects the newly published version because no version constraint or hash is provided. 5. Malicious installation or runtime code executes with the privileges of the user running `pip` or the audio-generation script. ### Impact Assessment Successful exploitation could execute arbitrary code under the installing user's account. Depending on that account's permissions, the malicious package could read or alter user files, access environment variables and application credentials, modify generated media, or make add ...[truncated 215 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `edge-tts` to a specific version that has been reviewed and tested: ```bash python3 -m pip install "edge-tts==REVIEWED_VERSION" ``` 2. Publish a `requirements.txt` or lock file containing all resolved transitive dependency versions. 3. Use hash verification for reproducible installation: ```text edge-tts==REVIEWED_VERSION \ --hash=sha256:EXPECTED_PACKAGE_HASH ``` Install it with: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 4. Install dependencies in a dedicated virtual environment rather than the user's global Python environment. 5. Add a documented dependency-update process that includes package provenance review, changelog inspection, malware scanning, and regression testing before changing pinned versions. ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
references/syncing-to-openclaw.md:23
Finding
Cross-Agent Synchronization Can Overwrite Active Skill Instructions and Executable Files<![CDATA[ ## Vulnerability Details **File Location**: `references/syncing-to-openclaw.md:23-49`, `114-128`, and `139-207` **Vulnerability Type**: Excessive filesystem access and replacement of active Agent Skill files **Risk Level**: Medium ### Vulnerable Code The documented forward synchronization directly replaces files in an OpenClaw Skill directory: ```bash SRC=/Users/neo/.hermes/skills/doc-to-video DST=/Users/neo/.openclaw/workspace/skills/doc-to-video cp "$SRC/SKILL.md" "$DST/SKILL.md" cp "$SRC/generate_audio.py" "$DST/generate_audio.py" mkdir -p "$DST/references" cp "$SRC/references/macos-gotchas.md" "$DST/references/" cp "$SRC/references/voice-swap-and-iterate.md" "$DST/references/" cp "$SRC/references/worked-example-tsp-solidity04.md" "$DST/references/" mkdir -p "$DST/templates" for f in audio_frames.py generate_audio.py voice_test.py Scene.tsx index.tsx \ merge.sh remotion-package.json remotion-tsconfig.json remotion.config.ts; do cp "$SRC/templates/$f" "$DST/templates/$f" done chmod +x "$DST/templates/audio_frames.py" ``` The reverse synchronization similarly replaces files in the Hermes Skill directory: ```bash SRC=/Users/neo/.openclaw/workspace/skills/doc-to-video DST=/Users/neo/.hermes/skills/doc-to-video for f in SKILL.md generate_audio.py references/*.md templates/*.{py,tsx,ts,sh,json}; do cp "$SRC/$f" "$DST/$f" done chmod +x "$DST/templates/audio_frames.py" ``` The reusable helper is installed as an executable under the Hermes user directory: ```bash chmod +x ~/.hermes/bin/sync-skill.sh ~/.hermes/bin/sync-skill.sh doc-to-video ``` ### Technical Analysis The Skill's declared core purpose is converting Markdown documents into narrated videos. That operation does not require replacing instructions and executable templates in the active Skill directories of two separate Agent environments. The synchronization workflow trusts all files in the source tree and copies them into the destination without: - authenticating the s ...[truncated 1948 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove cross-Agent maintenance instructions from the document-to-video Skill and distribute them as a separate, explicitly administrative tool. 2. Require explicit confirmation before replacing active `SKILL.md`, Python, or shell files. 3. Maintain an allowlist manifest containing expected relative paths and SHA-256 hashes. Refuse synchronization when a source file is missing, unexpected, or does not match an approved hash. 4. Resolve source and destination paths to canonical paths and reject symbolic links in the source tree. 5. Use staged deployment: - copy files into a temporary directory; - validate their paths, types, hashes, and syntax; - display the proposed changes; - create a timestamped backup; - atomically replace only approved files. 6. Do not automatically mark copied files executable. Preserve reviewed permissions from a trusted manifest. 7. Restrict synchronization to this specific Skill rather than accepting arbitrary Skill names. 8. Document a rollback procedure and automatically restore the previous version if validation or installation fails. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
references/syncing-to-openclaw.md:139
Finding
Caller-Controlled Skill Name Is Embedded into Generated Python Source<![CDATA[ ## Vulnerability Details **File Location**: `references/syncing-to-openclaw.md:139-199` **Vulnerability Type**: Code injection through unsafe shell and heredoc interpolation **Risk Level**: Medium ### Vulnerable Code The synchronization helper accepts an unrestricted positional argument and uses it to construct paths: ```bash #!/bin/bash set -e SKILL=$1 SRC=/Users/neo/.hermes/skills/$SKILL DST=/Users/neo/.openclaw/workspace/skills/$SKILL if [[ ! -d "$SRC" ]] || [[ ! -d "$DST" ]]; then echo "Directory does not exist: $SRC or $DST" exit 1 fi ``` Those values are then directly interpolated into an unquoted Python heredoc: ```bash python3 <<EOF import os, hashlib def sha(p): with open(p, 'rb') as f: return hashlib.sha256(f.read()).hexdigest()[:12] mismatches = [] for root, _, files in os.walk("$SRC"): for f in files: rel = os.path.relpath(os.path.join(root, f), "$SRC") h = sha(f'$SRC/{rel}') o = sha(f'$DST/{rel}') if os.path.exists(f'$DST/{rel}') else 'MISSING' if h != o: mismatches.append(rel) if mismatches: print(f'{len(mismatches)} mismatch(es):') for m in mismatches: print(f' {m}') print('Copying again...') for m in mismatches: cp "$SRC/$m" "$DST/$m" print('Repair complete') else: print('All files match') EOF ``` ### Technical Analysis `SKILL` is not constrained to a safe identifier. Shell variables derived from it are then substituted into the heredoc before Python parses the generated program. If a caller supplies an argument containing quote characters, line breaks, or Python syntax, the interpolated `$SRC` and `$DST` values can alter the structure of the generated Python source. Exploitation additionally requires the script's directory-existence checks to succeed, such as when an attacker can create or influence matching source and destination paths. The helper also attempts to execute the shell command `cp` inside Python: ```python for m in m ...[truncated 1498 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Validate the argument before using it: ```bash SKILL=${1-} if [[ ! "$SKILL" =~ ^[A-Za-z0-9._-]+$ ]]; then printf '%s\n' "Invalid Skill name" >&2 exit 2 fi ``` 2. Quote all assignments: ```bash SRC="/Users/neo/.hermes/skills/$SKILL" DST="/Users/neo/.openclaw/workspace/skills/$SKILL" ``` 3. Use a quoted heredoc delimiter to disable shell expansion, and pass values through arguments or environment variables: ```bash export SRC DST python3 <<'PY' import os src = os.environ["SRC"] dst = os.environ["DST"] PY ``` 4. Canonicalize both paths with `realpath` and verify that they remain beneath the intended Hermes and OpenClaw base directories. 5. Replace the invalid embedded `cp` statement with Python's `shutil.copy2`, or perform all copying in carefully quoted shell code after Python emits a machine-readable mismatch list. 6. Avoid generating source code through string interpolation. Treat all external values as data passed through `sys.argv`, environment variables, or a structured input file. 7. Add tests covering quotes, whitespace, newlines, path traversal sequences, symbolic links, missing arguments, and mismatched files. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (82)

Known Vulnerable Dependency: remotion==4.0.242 — 2 advisory(ies): CVE-2026-30120 (Remotion: remote code execution (RCE) vulnerability); CVE-2026-30121 (Remotion: arbitrary file write vulnerability)

Critical
Category
Supply Chain
Confidence
96% confidence
Finding
The package pins Remotion to version 4.0.242, which the finding identifies as affected by critical advisories including remote code execution and arbitrary file write. In this skill, Remotion is used to render user-supplied Markdown-derived video content, so a vulnerable renderer increases risk because untrusted project content or render inputs may reach the build pipeline and trigger code execution or filesystem compromise.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
声明描述的是一个端到端“Markdown 文档转专业视频”工具,包含文档解析、配音生成、视觉场景渲染、FFmpeg 合成以及高清视频输出。实际代码块只覆盖其中很小一部分:基于硬编码/手工编辑的旁白文本列表生成音频文件,并写出 FFmpeg concat 所需的 file_list.txt,还打印后续手动执行的 ffmpeg/ffprobe 命令。代码没有读取或解析 Markdown,没有从文档自动生成场景,没有调用 Remotion 或任何视频渲染逻辑,也没有执行音视频合并或输出视频文件。因此该代码的实际行为与声明的主要用途存在明显且实质性的差异。

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
声明描述的是一个端到端的 Markdown 文档视频生成能力:输入文档,自动生成旁白、渲染视觉内容并导出高清视频。实际代码仅实现其中很小的一部分辅助流程,即分析已有 m4a 音频片段时长并计算 Remotion 用的帧边界数组。它不处理 Markdown、不生成 TTS、不渲染视频、不输出视频文件,也不做音视频合成。虽然该脚本可能属于更大视频制作模板中的支持工具,但就此代码块本身而言,其实际行为与声明的主要用途存在明显且实质性的不一致。

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
声明描述的是一个完整的“文档转视频”流水线,但提供的代码片段只是其中的音频生成模板。它通过 edge-tts 为静态 SCENES 列表生成配音文件,并额外生成一个 concat 用的 file_list.txt。代码中没有 Markdown 解析、文档到分镜转换、Remotion 调用、FFmpeg 执行、视频渲染或成品导出逻辑。虽然音频生成是声明功能的一部分,但该片段的实际主要行为明显比声明范围窄,属于对能力的实质性高估,因此应判定为描述与行为不匹配。

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Self-Modification

High
Category
Rogue Agent
Content
# v1.0.8 — references/batch-rendering.md 加 §9-§14 (6 个新坑): 复杂项目委派 ≤2 个、JSX 文本里 `<code>` 标签、长文压缩策略、skill 自我更新行为实测、17+ 视频磁盘管理、22 视频统计表
# v1.0.7 — references/batch-rendering.md §2 加 4 个 subagent 陷阱:600s 超时、JSX 字符串转义、`cp -R` 缺 out/、voice 系列化偏好
# v1.0.6 — add references/batch-rendering.md (subagent 委派 + 并行渲染 + 跳过第二遍 render 的 F[] 优化); Step 8 加 "skip-second-render" 快路径; 新增 ⚠️ 坑 "自动化工具偏向 non-binding helper, 不要 opinionated workflow"
# v1.0.5 — add references/second-video-pattern.md (cp -R 复用 + 4 新 visual patterns), references/syncing-to-openclaw.md (Hermes self-update 陷阱), SKILL.md Step 1.5 加"从已有项目派生"
# v1.0.4 — add templates/audio_frames.py (measure + frames 子命令),templates/voice_test.py,Step 0 voice 试听流程,Step 4 替换为工具调用,macos-gotchas.md 加 §8.1 频谱分析辅助选 voice + §9 templates 索引
# v1.0.3 — add references/voice-swap-and-iterate.md: 换 voice / 改语速 / 改文本后的迭代工作流(含 F[] 整体缩放 vs 逐段重算、整体 atempo 误区)
# v1.0.2 — add Q8: edge-tts 48kbps MP3 硬上限 + voice 对比表 + macos-gotchas.md 对应小节
Confidence
90% confidence
Finding
References to self-update behavior are risky because they encourage a skill to participate in modifying or syncing its own supporting materials, which can blur trust boundaries and enable unauthorized changes if automated later. In an agent context, self-modification expands from content generation into code or configuration mutation, materially increasing the chance of abuse.

Self-Modification

High
Category
Rogue Agent
Content
> **技能类型**:文档 → 视频自动化
> **输出格式**:1920×1080 MP4,H.264 视频 + AAC 音频
|> **v1.0.6 修订**:加 `references/batch-rendering.md`(subagent 委派 + 并行渲染 + 跳过第二遍 render 的 F[] 优化)。Step 8 加"skip-second-render"快路径(如果 F[] 是从实测 audio 算的,**整遍"先 render → ffprobe → 改 F[] → 再 render"可以只跑第一步**——实测 5 个视频全部一次命中)。新加"工具设计原则"小节:non-binding helper vs opinionated workflow(用户偏好:helper 高,workflow 低)。
|> **v1.0.5 修订**:加 `references/second-video-pattern.md`(`cp -R` 复用 + 4 个新 visual patterns:CEI 时间线 / 双卡对比 / 4-file 列表 / 4-列对比表)和 `references/syncing-to-openclaw.md`(Hermes self-update 陷阱 + 可复用 sync 脚本)。SKILL.md Step 1.5 加"从已有项目派生"快路径。`voice-swap-and-iterate.md` 之外多了迭代 patterns 参考。
|> **v1.0.4 修订**:加 `templates/audio_frames.py`(measure + frames 子命令)替代手写 ffprobe 和 F[] 公式。加 `templates/voice_test.py` 把 6 voice 对比做成一行命令。Step 0 加 voice 试听流程,Step 4 用工具替代。`macos-gotchas.md` 加 §8.1 频谱分析辅助选 voice + §9 templates 索引表。配合 v1.0.3 的 `voice-swap-and-iterate.md`,换 voice 后的 F[] 重算一行命令完成。
|> **v1.0.3 修订**:加 `references/voice-swap-and-iterate.md` — 换 voice / 改语速 / 改文本后的完整迭代工作流(含 F[] 整体缩放 vs 逐段重算、整体 atempo 误区)
|> **v1.0.2 修订**:补 edge-tts 48kbps MP3 硬上限说明(Q8)—— 之前没说清楚"音听着别扭"的根因不是参数,是源端码率天花板
Confidence
90% confidence
Finding
This section normalizes the same self-update/sync concept inside the main workflow narrative, making it more likely users or agents will treat repository modification as part of normal operation. Because the skill otherwise performs local shell actions, combining that with update behavior creates a broader and riskier capability set.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
cd ~/vscode
cp -R my-first-video-project my-second-video-project
cd my-second-video-project
rm -rf audio/* out/*.mp4 out/*.jpg node_modules package-lock.json build
npm install --no-audit --no-fund   # 3s,缓存命中
```
Confidence
96% confidence
Finding
The documented `rm -rf audio/* out/*.mp4 out/*.jpg node_modules package-lock.json build` command is a destructive shell pattern that can be dangerous if run from the wrong directory or with unexpected shell expansion. In an agent or automation setting, this can lead to significant data loss or deletion of dependencies and local build state without adequate guardrails.

Self-Modification

High
Category
Rogue Agent
Content
| `references/worked-example-tsp-solidity04.md` | 第一个视频(10 段)端到端实例 |
| `references/second-video-pattern.md` | 第二个及之后视频的 `cp -R` 复用 + 4 个新 visual patterns |
| `references/voice-swap-and-iterate.md` | 换 voice / 改语速 / 改文本后的 F[] 重算 |
| `references/syncing-to-openclaw.md` | Hermes ↔ OpenClaw 两端 sync(self-update 陷阱) |
| `references/batch-rendering.md` | **N 个视频批量 pipeline**(v1.0.6 新增):subagent 委派 + 并行渲染 + 跳过第二遍 render |
| `references/macos-gotchas.md` | macOS 平台专项坑(Remotion Chrome、ffmpeg 路径等)|
| `references/case-study-pattern.md` | **历史 / 安全案例复盘类**内容的 visual patterns:timeline、year-marker、attack-flow、response phases(v1.0.9 新增)|
Confidence
90% confidence
Finding
The references index includes a sync/self-update document, which embeds self-modification capability into the skill's documented ecosystem. Even if not directly executed here, such guidance encourages behavior that can alter tools, repositories, or agent state beyond the advertised function.

Ae1

High
Category
analysis-evasion
Content
1. 确保 `SKILL.md` 包含完整的 frontmatter(name, description, author, version, tags 等)
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Tool Parameter Abuse

High
Category
Tool Misuse
Content
ffmpeg -y -i out/temp.mp4 -an -c:v copy /tmp/noaudio_${n}.mp4 && \
   ffmpeg -y -i /tmp/noaudio_${n}.mp4 -i audio/combined.m4a \
     -c:v copy -c:a aac -b:a 128k -shortest out/final_with_audio.mp4 && \
   rm /tmp/noaudio_${n}.mp4)
done
```
Confidence
85% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```bash
# 删 temp.mp4 释放磁盘
for n in 06 07 08 09 10; do
  rm -f tsp-solidity${n}-video/out/temp.mp4
done

# 批量 ffprobe 验证音视频同步
Confidence
85% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```bash
# 删 temp.mp4 释放磁盘
for n in 06 07 08 09 10; do
  rm -f tsp-solidity${n}-video/out/temp.mp4
done

# 批量 ffprobe 验证音视频同步
Confidence
85% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Self-Modification

High
Category
Rogue Agent
Content
## ⚠️ 批量模式独有的坑

### 1. Skill self-update 陷阱(v1.0.6 新发现)

`~/.hermes/skills/doc-to-video/` 的 SKILL.md 和 references/ 会在 **你写入后 1-10 秒内被 skill 自我更新机制修改**(v1.0.5 → v1.0.6 转换期间实测到两次自动编辑)。
Confidence
99% confidence
Finding
The document states that the skill has a self-update/self-modification mechanism that rewrites `SKILL.md` and references after writes. A skill capable of modifying its own instructions or code can persist changes, evade review, and alter future agent behavior in ways unrelated to the user’s request, which is especially dangerous in an adversarial prompt environment.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
`cp -R` 派生新项目时记得删 `build/`:

```bash
rm -rf tsp-solidity{N}-video/build/
```

否则可能渲染出**旧项目的场景**(Remotion 默认会从 `build/` 读 cached bundle)。
Confidence
85% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
cd ~/vscode
cp -R tsp-solidity04-video tsp-solidity05-video
cd tsp-solidity05-video
rm -rf audio/* out/*.mp4 out/*.jpg node_modules package-lock.json
# build/ 是 Remotion 缓存,也可以删(重新 render 会自动重建)
rm -rf build
```
Confidence
97% confidence
Finding
The documented command includes powerful recursive deletion primitives (`rm -rf audio/* ... node_modules package-lock.json`) that assume the working directory is correct and trusted. If executed from an unexpected location, after a mistaken `cd`, or with altered path expansion, it can irreversibly delete unintended files and disrupt the environment, making this a real tool-parameter abuse risk in copy-paste workflow automation.

Static analysis

No suspicious patterns detected.