T01 · Skill Instruction Hijacking
- Location
SKILL.md:303- Finding
Mandatory Branded Content Injection into Published Pull Requests
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent open-source contribution purpose, but it can publish code and PRs under the user's GitHub identity while handling credentials unsafely and bypassing review in automated modes.
Install only if you are comfortable giving this skill a narrowly scoped, revocable GitHub token and allowing it to create forks, commits, pushes, and public pull requests. Avoid --auto, --yes, heartbeat, or cron use unless you first review the exact PR body and fix the credential handling issues, especially token reads from ~/.openclaw/openclaw.json, token-prefix logging, and token-in-URL cloning.
SKILL.md:303Mandatory Branded Content Injection into Published Pull Requests
SKILL.md:263GitHub Token Prefix Disclosed to Agent Output and Logs
SKILL.md:269GitHub Token Embedded in Git Clone Command URL
The sub-agent reads a credential from a local secrets file and then prints part of the token to output for verification. Even partial credential disclosure increases the attack surface through logs, transcripts, or monitoring systems, and reading from a local secrets file bypasses the declared secret-management boundary.
The skill states that GH_TOKEN is already available in the environment, but later instructs the sub-agent to reload it from a local config file. This contradiction weakens operator understanding, undermines secret provenance, and increases the chance of unsafe credential handling or cross-skill secret reuse.
The skill makes repeated authenticated network requests and git operations using GH_TOKEN, but lacks a prominent disclosure that the token will be used for API calls and HTTPS git authentication. Users may not understand that invoking the skill causes authenticated external operations against GitHub.
The --auto mode explicitly removes confirmation prompts and enables headless operation for a workflow that can perform public code contributions and account-linked actions. In a high-impact skill like this, autonomous execution materially increases the chance of unwanted or reputationally damaging actions without immediate human review.
| --languages | _(from config)_ | Filter repos by primary language |
| --max-complexity | medium | Skip issues above this: low, medium, high |
| --dry-run | false | Discover + triage only, no PRs |
| --auto | false | Headless mode for heartbeat/cron (no confirmation prompts) |
| --discover | false | Find trending repos matching your topics (in addition to configured repos) |
| --model | _(agent default)_ | Model for fix sub-agents |
| --notify-channel | _(none)_ | Telegram channel for PR notifications |
The skill supports headless modes that can automatically fork repositories, push commits, and open public pull requests, but the description and flag documentation do not prominently warn users about these externally visible side effects. This creates a consent and safety problem because users may invoke automation without realizing it performs public actions on their behalf.
The --yes flag skips confirmation and processes all eligible issues, allowing the skill to batch public actions without per-issue approval. Given the ability to fork repos, commit code, push, and open PRs, this creates a meaningful risk of unintended external operations.
| --discover | false | Find trending repos matching your topics (in addition to configured repos) |
| --model | _(agent default)_ | Model for fix sub-agents |
| --notify-channel | _(none)_ | Telegram channel for PR notifications |
| --yes | false | Skip confirmation, process all eligible issues |
Load config from workspace:
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Resolve GitHub username:
curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login'
Store as GH_USER.
Marking certain issues as 'auto-approve' allows the agent to make implementation decisions and public contributions based on simplistic heuristics like labels and body length. Those heuristics can be wrong, causing the agent to act on unsuitable issues or make low-quality public changes under the user's identity.
For each candidate issue, estimate complexity:
**Low complexity** (auto-approve):
- Labels: `documentation`, `typo`, `good-first-issue`, `test`
- Issue body < 500 chars
- Single file referenced
The sub-agent is instructed to ignore the declared environment-provided credential source and instead read a token from an unrelated local secrets file. This expands credential exposure across skill boundaries and can cause the agent to use the wrong secret, including one with broader privileges than intended.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Fallback body (ONLY if no PR template exists):
"## Summary\n\n{description}\n\n## Changes\n\n{bullet_list}\n\n## Testing\n\n{test_results}\n\nFixes #{number}"
curl -s -X POST \
-H "Authorization: Bearer $GH_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/{SOURCE_REPO}/pulls \
No suspicious patterns detected.