Caveat verdict
douyin-upload-mcp-skill
Complex Douyin content automation (digital human training, Feishu notifications, scheduled publishing) that matches its stated purpose; all operations route through the declared MCP tool and require explicit user confirmation at key stages.
⚠ Flagged for review — coarse, uncorroborated signal, not a confirmed exploit. Review the config yourself before installing.
Automated static analysis — not a human review. Caveat flags capabilities, not confirmed intent, and can produce false positives. Disagree with this verdict? Use Dispute below.
Permission integrity
package_install
Findings (18)
Possible hardcoded credential
vendor/xiaoice-video-tool/README.md · code · TOKEN='+r());console.log(
References sudo — requests elevated privileges
README.md · code · sudo
HTTP request to bare IP address — common in malicious payloads
vendor/xiaoice-video-tool/adapters/openclaw-plugin/skills/xiaoice-video/SKILL.md · code · http://127.0.0.1
Uses eval() — can execute arbitrary code
scripts/douyin-comment-reply.js · prose · downgraded · eval(
References tunneling service
vendor/xiaoice-video-tool/docs/04-deployment.md · code · NGROK
References child_process — can spawn system processes
scripts/agent-ready.js · prose · downgraded · child_process
Uses spawn() — can execute external programs
scripts/background-job.js · prose · downgraded · spawn(
apt-get install — installs system packages
scripts/bootstrap-openclaw.js · prose · downgraded · apt-get install
Uses exec() — may execute shell commands
scripts/douyin-auto-reply.js · prose · downgraded · exec(
Dynamic import() — loads module at runtime
scripts/douyin-cli.js · prose · downgraded · import('
setuid — privilege escalation mechanism
src/daemon/engine.js · prose · downgraded · setuid
Instructs covert action — may act without user awareness
vendor/xiaoice-video-tool/docs/07-openclaw-thin-plugin-plan.md · prose · downgraded · silently
Python os.environ.get — reads environment variable
scripts/close-browser-prompts.py · prose · downgraded · os.environ.get(
Accesses sensitive environment variables
scripts/digital-human-training.js · prose · downgraded · process.env.DIGITAL_HUMAN_TRAINING_API_KEY
Opens WebSocket connection
scripts/publish-task.js · prose · downgraded · WebSocket
Popular HTTP library — network access
vendor/xiaoice-video-tool/adapters/openclaw-plugin/__tests__/openclaw-plugin.test.js · prose · downgraded · got
References webhook/callback URL
vendor/xiaoice-video-tool/docs/00-migration-plan.md · prose · downgraded · callbackUrl
Node http/https module — low-level network access
vendor/xiaoice-video-tool/src/service/server.js · prose · downgraded · require('http')
Why the tier is capped
Execution sink present in raw bytes (Hard Floor: class D). Final tier capped at Caution — cannot be lifted by any downgrade, example-payload opt-in, or allowlist.
Permissions & capabilities
No declared permissions — minimal attack surface.
package_install Is this flag fair?
Thanks — recorded.