T01 · Skill Instruction Hijacking
- Location
SKILL.md:18- Finding
Skill instruction hijacking through explicit Agent role reassignment
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent engineering workflow, but it delegates repository work to Claude agents and includes commit, push, deploy, and broad auto-trigger instructions without enough approval boundaries.
Install only if you are comfortable with Claude/ACP agents reading and modifying your repository. Before use, require explicit approval for each external-agent launch, commit, push, deploy, and production check; avoid adding the broad AGENTS.md auto-trigger unless you really want persistent activation; replace git add -A with reviewed file staging and prefer project-pinned build commands over bare npx.
SKILL.md:18Skill instruction hijacking through explicit Agent role reassignment
SKILL.md:310Persistent Agent configuration poisoning through automatic Skill activation
SKILL.md:216Unapproved repository publication and production deployment workflow
SKILL.md:82Shell injection exposure in unquoted command templates
`
- TypeScript: `npx tsc --noEmit`
- Lint: `grep -rn "console.log\|TODO\|FIXME\|HACK" <changed_files>`
```
### Technical Analysis
The Builder is instructed to run `npx tsc --noEmit` without verifying that the expected compiler is installed locally and pinned by the project lockfile. Depending on the installed npm/npx version and environment configuration, `npx` may resolve and download a package when a matching local executable is unavailable.
The command does not identify a package version, requir
...[truncated 1384 chars]:16Unpinned third-party package execution through npx
The skill explicitly selects an external model/tool (claude --agent=builder) to read project files and implement changes. This can send sensitive source code or repository context to an external provider without a strong warning, consent step, or data-handling boundary, creating confidentiality and supply-chain risk.
git worktree add ../[project]-build feature/[feature-name]
claude --agent=builder -w ../[project]-build --bare -p "Read SPRINT.md and implement all success criteria. Write BUILDER_REPORT.md when done."
The `builder` agent template (in `agents/builder.md`) provides:
This instruction launches an external builder agent for a sub-sprint, which may expose repository contents to a third-party model or service. Because it is framed as standard workflow guidance, users may not realize code is being delegated outside the current trust boundary.
git worktree add ../build-tests sprint/tests
# Run builders in parallel
claude --agent=builder -w ../build-api --bare -p "Read SPRINT-API.md..." &
claude --agent=builder -w ../build-frontend --bare -p "Read SPRINT-FRONTEND.md..." &
claude --agent=builder -w ../build-tests --bare -p "Read SPRINT-TESTS.md..." &
wait
This line repeats the pattern of delegating project work to an external builder agent, now for frontend changes. Frontend code can still contain credentials, internal endpoints, business logic, or unpublished features, so silent provider selection remains a security concern.
claude --agent=builder -w ../build-api --bare -p "Read SPRINT-API.md..." & claude --agent=builder -w ../build-frontend --bare -p "Read SPRINT-FRONTEND.md..." & claude --agent=builder -w ../build-tests --bare -p "Read SPRINT-TESTS.md..." & wait
This instruction spawns another external builder agent instance, multiplying the amount of code and context potentially disclosed to outside tooling. Parallelization increases operational convenience, but also broadens exposure and makes oversight harder if no consent or policy checks are in place.
claude --agent=builder -w ../build-api --bare -p "Read SPRINT-API.md..." & claude --agent=builder -w ../build-frontend --bare -p "Read SPRINT-FRONTEND.md..." & claude --agent=builder -w ../build-tests --bare -p "Read SPRINT-TESTS.md..." & wait
The reviewer path also mandates use of an external claude agent to inspect changed files, which can expose code and change history to a third party. Even read-only review can leak sensitive implementation details, so this should not be treated as risk-free automation.
# Use the reviewer agent template — it sees only the code, not the Builder's reasoning
claude --agent=reviewer -w ../[project]-build --bare -p "Read SPRINT.md and review all changed files. Write REVIEWER_REPORT.md."
Option B: ACP Session
The skill directs the agent to perform repository and operational actions beyond code generation, including git commit, git push, deployment, and production verification. Those steps can create immediate external side effects and move unreviewed or incorrect changes into shared or production environments, which is risky for a generally invocable engineering workflow.
The skill instructs committing, pushing, and potentially deploying as part of the normal success path, but does not warn the user that these actions mutate repositories or may impact production. Lack of explicit disclosure and consent increases the chance of surprising, irreversible, or policy-violating actions.
Including deployment and production verification in a reusable engineering harness expands the skill from development assistance into operational control. If invoked in the wrong context, the skill could trigger deployment-related actions that affect live systems without a separate authorization boundary.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
### 🏭 Harness Engineering
When task involves: new feature, complex bug fix, refactoring, multi-file changes
→ Read `~/.openclaw/skills/harness-engineering/SKILL.md` and follow the 5-phase workflow.
The skill instructs the agent to run npx tsc --noEmit without pinning the package/version, which can cause npx to resolve and execute a package from the registry if TypeScript is not already installed locally. In an agentic build workflow, this creates a supply-chain execution risk because unpinned remote code may run during routine checks.
The checklist item mandates grepping for Chinese characters before shipping in an English app, which encodes a language-based exclusion rule without clear user-consent, accessibility, localization, or compliance justification. In an engineering harness, checklist items are likely to be operationalized and enforced, so this can lead to discriminatory filtering of legitimate content, suppression of multilingual support, and biased review behavior.
The workflow repeatedly instructs use of Claude Code and ACP sessions with agentId: "claude", making a specific provider/agent mandatory in the natural-language instructions. This imposes a tool/vendor constraint without user opt-in or documented justification, which can be treated as a policy-style natural-language constraint issue.
No suspicious patterns detected.