wenzi-runse
Hardcoded API key embedded in source and undeclared Tencent Cloud network endpoints constitute significant hidden behavior not reflected in documentation, with plaintext local credential storage as an additional concern.
A full OpenAI-format API key (sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7) is hardcoded as DEFAULT_API_KEY in scripts/runse.py line 21. This key is packaged and distributed with the skill, making it trivially extractable by anyone who installs the skill. The key's purpose and ownership are unclear — it is not the user's key but a shared/developer key embedded in the delivery artifact.
scripts/runse.py:21 Why this conclusion was reached
2/4 dimensions flaggedDeclared resources and inferred behavior are broadly aligned.
2 high-risk artifacts or egress signals were extracted.
The report includes 0 attack-chain steps and 1 severe findings.
Dependencies are present but no obvious high-risk issue stands out.
What drove the risk score up
scripts/runse.py:21 contains sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7 hardcoded as DEFAULT_API_KEY — a credential distributed with the skill package
SKILL.md declares Bash but does not mention the two Tencent Cloud Function URLs (ap-shanghai.tencentscf.com); skill-card.md vaguely mentions 'cloud service' but omits the specific infrastructure endpoint
SKILL.md describes '无状态运行,不存储原文' but the implementation writes user text to a temp file (./tmp_input.txt) before sending — this file I/O is not declared
Most important evidence
Hardcoded API key in distributed skill package
A full OpenAI-format API key (sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7) is hardcoded as DEFAULT_API_KEY in scripts/runse.py line 21. This key is packaged and distributed with the skill, making it trivially extractable by anyone who installs the skill. The key's purpose and ownership are unclear — it is not the user's key but a shared/developer key embedded in the delivery artifact.
scripts/runse.py:21 Undeclared external network endpoints
SKILL.md and skill-card.md describe the skill as calling a 'cloud function' but do not name the specific infrastructure. The actual implementation makes HTTP requests to https://1257707270-955niawhww.ap-shanghai.tencentscf.com/bailian/chat and https://1257707270-955niawhww.ap-shanghai.tencentscf.com/v1/models — Tencent Cloud Function endpoints — neither of which is mentioned in any documentation. Users cannot audit which external service their text is sent to.
scripts/runse.py:19 Undeclared temporary file I/O
SKILL.md instructs to write text to a temporary file (./tmp_input.txt) before processing but does not declare filesystem WRITE access as part of the skill's capabilities. The file write/read cycle is used for the main processing flow but is not mentioned in the allowed-tools mapping or capability description.
scripts/runse.py:163 Plaintext local credential storage without encryption
User-provided personal API keys are saved in plaintext JSON format (0o600 file mode) to a user-specified or default path (~/.workbuddy/wenzi-runse-config.json). While the skill-card.md mentions this, SKILL.md frames it as an optional '进阶' feature and does not prominently warn about plaintext storage risks.
scripts/runse.py:62 Declared capability vs actual capability
SKILL.md declares Write; runse.py writes temp files at line 163 Bash declared in allowed-tools; HTTP POST to tencentscf.com implicit via script invocation SKILL.md declares Bash; runse.py executed as subprocess runse.py reads os.environ via sys.stdout.encoding check; documented key storage path includes ~ expansion Suspicious artifacts and egress
sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7 scripts/runse.py:21
API_KEY = "sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7" scripts/runse.py:21
https://1257707270-955niawhww.ap-shanghai.tencentscf.com/bailian/chat scripts/runse.py:19
https://1257707270-955niawhww.ap-shanghai.tencentscf.com/v1/models scripts/runse.py:20
https://clawhub.ai/user/abcqq1234567 skill-card.md:9
https://clawhub.ai/abcqq1234567/skills/wenzi-runse skill-card.md:39
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| urllib | stdlib | Python standard library | No | Used for HTTP requests — stdlib, no external dependency |
| json | stdlib | Python standard library | No | Stdlib JSON serialization |
| os | stdlib | Python standard library | No | Stdlib file system operations |
| argparse | stdlib | Python standard library | No | Stdlib CLI argument parsing |
File composition
scripts/runse.py skill-card.md