T01 · Skill Instruction Hijacking
- Location
auto.md:86- Finding
Repository-Controlled Instructions Can Hijack Agent Behavior
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent GitHub contribution automation skill, but it deserves Review because it combines authenticated GitHub actions and local command execution with under-scoped trust in repository/profile instructions.
Install only if you want an agent to run local repo commands and use your authenticated GitHub identity to push branches, open PRs, and comment. Prefer a container or VM for unfamiliar repos, pin installer versions where possible, review repository/profile instructions as untrusted, and approve shell/GitHub actions one at a time.
auto.md:86Repository-Controlled Instructions Can Hijack Agent Behavior
discover.md:228Mandatory Dependency Installation Executes Untrusted Repository Lifecycle Scripts
README.md:49Installation Instructions Execute a Mutable Remote Package Release
auto.md:83Unquoted Profile and Input Values Are Interpolated into Shell Commands
Referenced artifact was not completely inspected
**Read: `discover.md`**
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
---
## Repo-Specific Rules
<!-- required -- start with build commands, add rules as you learn them -->
<!-- Example:
- Default branch: main
- Package manager: pnpm (monorepo with Turbo)
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
- [accepted] <bot> <concern>: <what changed>
## Outcome
<!-- added by oss-check retrospective when PR is merged/closed -->
- **Result**: merged / closed (reason)
- **Reviewed by**: @who -- what they cared about
- **What worked**: ...
Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.
---
## Repo-Specific Rules
- Max open PRs: 10 (hygiene bot auto-closes above this -- no warning, just closes)
- Commit script: `scripts/committer` (runs full lint/format/check suite before committing)
- Generated files: run `pnpm config:schema:gen` and `pnpm config:docs:gen` after config changes, commit separately
- Always run `pnpm format:fix` before committing -- formatter has strict line-breaking rules that differ from editor auto-format
Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.
### Hygiene bot
- Auto-closes for: dirty branch (too many files), >10 PRs from same author, stale
- No warning -- just closes. Can fire repeatedly.
## Gold Standard Examples
The README recommends installing via npx clawhub@latest install oss-pilot, which executes code fetched at runtime without pinning to a specific version. If the upstream package is compromised, typosquatted, or a malicious new release is published, users could run attacker-controlled code during installation. In this skill’s context, that risk is more significant because the project already automates shell-heavy workflows and asks users to trust local execution paths.
The trigger list includes very generic phrases such as "find issues," "what should I work on," and "morning check," which can overlap with ordinary user conversation and cause the skill to activate unintentionally. In a skill that can drive git and GitHub automation, accidental invocation increases the chance of unintended repository analysis, command planning, or preparation for code-changing workflows.
The skill is user-invocable and includes several generic trigger phrases such as "auto PR" and "auto fix," which can cause accidental or ambiguous activation in normal conversation. Because this skill performs high-impact actions like modifying local repos, pushing branches, and opening PRs, unintended invocation could launch sensitive workflows without sufficiently explicit user intent.
The trigger phrases are broad enough to activate on common conversational language like "check PRs" or "morning check," which can unintentionally invoke a skill that performs repository inspection and follow-on actions. Because this skill can read local files, query GitHub, and later update/archive context files, accidental invocation can cause unintended data access or state changes.
The skill directs the agent to update and move context files, including archiving files, without prominently warning the user in the skill description that invocation may modify local workspace state. This creates a transparency and consent problem: a user may believe they are requesting a status check, while the skill performs persistent local writes and file moves.
The skill declares broad natural-language triggers such as "find issues", "what should I work on", and "next PR", which can match ordinary user intent outside an explicitly security-reviewed OSS workflow. Because this skill performs repository discovery and instructs use of powerful local/GitHub CLI operations, accidental invocation could cause unintended data access, API activity, or autonomous contribution actions in the wrong context.
The trigger phrases include very generic PR-related terms such as "review PR" and "prepare PR", which can unintentionally activate this skill for ordinary user requests that were not meant to invoke automation. Because this skill performs repo inspection and recommends/coordinates GitHub actions, accidental invocation can cause inappropriate context switching, disclosure of local repo metadata, or unsafe automated guidance in the wrong repository context.
The natural-language description presents the system as a GitHub contribution automation workflow using gh CLI and GitHub PR processes as the default operating mode. While this may be intended, the file does not explicitly frame the constraint as a scoped GitHub-only skill in a way that offers user choice or explains locale/platform limitation beyond the tool references.
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.
# OSS PR Check-In Skill
Check all pending PRs and handle everything that needs attention. Works on any repo with a profile at `./oss-pilot-data/profiles/<repo-name>.md`.
## Invocation
The instruction "American English spelling (color not colour)" imposes a specific language/locale convention in natural language. Under the policy, forcing a locale without user opt-in or a clearly justified regional requirement is a reportable policy issue.
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.
1. **"Is this fix at the right layer?"** -- Trace the call chain 3-5 levels deep. Does the fix address WHERE the problem originates, or WHERE it surfaces? A fix at the wrong layer will be rejected even if it passes tests.
2. **"Does this change affect code paths beyond the stated scope?"** (Blast radius) -- If you're changing a shared function, check all callers. A fix that's correct for one path but breaks another will be caught in review.
3. **"Does this preserve existing semantic contracts?"** -- Data structure invariants, lifecycle guarantees, API response shapes. Breaking a contract that downstream code relies on is worse than the original bug.
No suspicious patterns detected.