cms-meeting-monitor
Cross-skill subprocess invocation via undeclared `subprocess.run` calls is the primary concern—neither the SKILL.md nor the tool declarations (monitor:read, notifier:write) accurately reflect the exec/shell:WRITE nature of the code.
monitor.py:trigger_pull() uses subprocess.run to invoke cms-meeting-materials/scripts/huiji/trigger-pull.py. This is a shell:WRITE capability that is not declared in SKILL.md. The tool 'monitor' declares permission:read but the code actually executes an external script.
scripts/monitor.py:170 Why this conclusion was reached
2/4 dimensions flagged4 undeclared or violating capabilities were inferred.
No obvious high-risk egress or execution signals were found.
The report includes 0 attack-chain steps and 2 severe findings.
1 dependency or supply-chain issues need attention.
What drove the risk score up
monitor.py:trigger_pull() and notifier.py both call subprocess.run on external scripts without documentation in SKILL.md. tool permission:read ≠ exec/category
monitor tool declares permission:read but code executes external scripts (shell:WRITE). notifier declares permission:write but also invokes subprocess.
Both scripts hard-code a path to cms-meeting-materials/scripts/huiji/trigger-pull.py. If that skill is malicious or compromised, this skill inherits the risk.
Most important evidence
Undeclared cross-skill subprocess execution
monitor.py:trigger_pull() uses subprocess.run to invoke cms-meeting-materials/scripts/huiji/trigger-pull.py. This is a shell:WRITE capability that is not declared in SKILL.md. The tool 'monitor' declares permission:read but the code actually executes an external script.
scripts/monitor.py:170 Notifier also performs undeclared subprocess execution
notifier.py:get_latest_fragments() imports subprocess and calls scripts from cms-meeting-materials. SKILL.md declares notifier permission:write, but the code performs read + exec operations.
scripts/notifier.py:48 Tool permission declarations do not match code capabilities
monitor tool: category=exec, risk_level=medium, permission=read — but the code executes subprocess, which is exec-level. notifier tool: permission=write — but also executes subprocess.
SKILL.md:21 Undeclared hard-coded dependency on cms-meeting-materials skill
Both monitor.py and notifier.py hard-code paths to cms-meeting-materials/scripts/huiji/. If that dependency is absent or compromised, the skill fails or is exploited. No version pinning or integrity check.
scripts/monitor.py:165 Accesses environment variables for credentials
The skill reads XG_BIZ_API_KEY from os.environ. This is declared in SKILL.md metadata and is necessary for the feature, but the code does not validate or sanitize this variable.
scripts/monitor.py:40 Declared capability vs actual capability
scripts/monitor.py:170 — subprocess.run to trigger-pull.py scripts/notifier.py:48 — subprocess to huiji scripts scripts/monitor.py:115 — state write to ~/.openclaw/ monitor.py:170 & notifier.py:48 — cross-skill subprocess to cms-meeting-materials Suspicious artifacts and egress
No obvious IOC was extracted.
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| cms-meeting-materials | unpinned | cross-skill dependency | No | External skill dependency; scripts/huiji/trigger-pull.py is invoked via subprocess. No version pinning, no integrity check. The security posture of this skill is inherited. |
File composition
scripts/monitor.py scripts/notifier.py SKILL.md