Back to skill

Security audit

Create Project

Security checks for vulnerabilities and agentic risk

Overview

This project-creation skill is coherent for Orchestrix automation, but it installs persistent agent hooks, auto-approves trust or approval prompts, and may commit a license key into Git history.

Review carefully before installing. Only use this in a repository where you intentionally want Orchestrix to install Claude Code hooks, run multi-agent tmux automation, and activate MCP-provided agents. Do not provide a real license key unless .mcp.json is ignored or kept out of commits, and manually review any trust or approval prompts instead of relying on the included auto-accept behavior.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (4)

T01 · Skill Instruction Hijacking

Error
Location
resources/o.md:48
Finding

Untrusted Remote MCP Resources Can Replace Agent Instructions and Persona

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
resources/start-orchestrix.sh:294
Finding

Automation Bypasses Claude Code Trust and Approval Prompts

Content
View full analysis
/dev/null || true) if echo "$PANE" | grep -qi "trust this folder\|safety check"; then tmux send-keys -t "$SESSION_NAME:$w" Enter echo "" echo " 🔓 Auto-accepted trust dialog in window $w" fi done ``` From `resources/ensure-session.sh`: ```bash # Wait for Claude Code to start, auto-accepting trust dialog if it appears. # The trust prompt shows "Do you trust" and blocks until user responds. # We poll the pane every 2s and send Enter if we detect trust-related text. for i in $(seq 1 6); do sleep 2 PANE_TEXT=$(tmux capture-pane -t "$SESSION:0" -p -S -10 2>/dev/null || true) if echo "$PANE_TEXT" | grep -qi "trust this folder\|safety check"; then tmux send-keys -t "$SESSION:0" Enter sleep 2 break fi ``` From `resources/monitor-agent.sh`: ```bash # Priority 3: Handle approval prompt — auto-approve if echo "$LAST_LINES" | grep -q '◐'; then tmux send-keys -t "$SESSION:$WINDOW" "y" Enter sleep 2 continue fi ``` ### Technical Analysis Directory-trust and operation-approval prompts are security boundar ...[truncated 1848 chars]
Remediation
View remediation

T01 · Skill Instruction Hijacking

Error
Location
resources/handoff-detector.sh:114
Finding

Unauthenticated Terminal Output Is Converted into Cross-Agent Commands

Content
View full analysis
/dev/null) [[ -z "$OUTPUT" ]] && continue # Pattern 1: Standard HANDOFF format (🎯 HANDOFF TO agent: *command args) LINE=$(echo "$OUTPUT" | grep -E '🎯.*HANDOFF.*TO' | tail -1) if [[ -n "$LINE" ]]; then # Calculate hash to avoid re-processing HASH=$(echo "$LINE" | md5 2>/dev/null || echo "$LINE" | md5sum 2>/dev/null | cut -d' ' -f1) # Skip if already processed if grep -q "$HASH" "$PROCESSED_FILE" 2>/dev/null; then continue fi # Parse HANDOFF message if [[ "$LINE" =~ HANDOFF[[:space:]]+TO[[:space:]]+([a-zA-Z0-9_-]+):[[:space:]]*\*?([a-z0-9-]+)([[:space:]]+([0-9]+\.[0-9]+))? ]]; then SOURCE_WIN=$win TARGET=$(echo "${BASH_REMATCH[1]}" | tr '[:upper:]' '[:lower:]') CMD="*${BASH_REMATCH[2]}${BASH_REMATCH[4]:+ ${BASH_REMATCH[4]}}" HANDOFF_HASH=$HASH log "Found HANDOFF in window $win: $LINE" break fi fi # Pattern 2: Simplified format - more flexible detection # Handles: "*develop-story 10.4", "*draft", "* review 10.4", etc. if [[ -z "$TARGET" ]]; then # Search last ...[truncated 4024 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:318
Finding

Plaintext License Credential Is Included in the Initial Git Commit

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (32)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Beyond creating files, the skill installs hooks, modifies agent configuration, manages multi-agent tmux sessions, and auto-accepts safety/trust interactions. That is materially broader than 'create project' and can establish persistent automation inside the new workspace, which users may not understand from the title and description alone.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Beyond creating files, the skill installs hooks, modifies agent configuration, manages multi-agent tmux sessions, and auto-accepts safety/trust interactions. That is materially broader than 'create project' and can establish persistent automation inside the new workspace, which users may not understand from the title and description alone.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Beyond creating files, the skill installs hooks, modifies agent configuration, manages multi-agent tmux sessions, and auto-accepts safety/trust interactions. That is materially broader than 'create project' and can establish persistent automation inside the new workspace, which users may not understand from the title and description alone.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Beyond creating files, the skill installs hooks, modifies agent configuration, manages multi-agent tmux sessions, and auto-accepts safety/trust interactions. That is materially broader than 'create project' and can establish persistent automation inside the new workspace, which users may not understand from the title and description alone.

Content

No source excerpt is available for this finding.

Agent Config Directory Access

High
Category
Agent Snooping
Confidence
95% confidence
Finding

The skill writes into the agent configuration area under .claude and installs a hook script there, which can alter future agent behavior inside the workspace. Modifying agent config and hook paths is sensitive because it creates persistent execution surfaces that may run automatically later, not just during initial setup.

Content

Scanner excerpt · SKILL.md (reported line 140)May include surrounding context.

bash
# Claude Code hooks 配置
cp "$RESOURCE_DIR/settings.local.json" "$PROJECT_DIR/.claude/settings.local.json"

# Hook 脚本
cp "$RESOURCE_DIR/handoff-detector.sh" "$PROJECT_DIR/.claude/hooks/handoff-detector.sh"

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The instruction to automatically accept Claude Code 'trust this directory' prompts bypasses an important security boundary intended to let users assess whether a workspace should be trusted. Auto-approving that decision can enable execution of hooks, config, and other workspace-controlled behaviors without informed user consent.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 301)May include surrounding context.

md
__pycache__/

# Environment
.env
.env.local
.env.*.local

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 302)May include surrounding context.

md
# Environment
.env
.env.local
.env.*.local

# OS

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Automatically accepting a trust or safety prompt without notifying the user defeats the purpose of the prompt and can silently place the environment into a more trusted execution mode. Because this skill scaffolds and initializes workspaces, the user is likely to assume safe setup behavior, making the hidden acceptance more security-relevant rather than less.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

This is a true vulnerability: the script is presented as a passive completion monitor, but it actively sends approval input to a tmux pane whenever a matching prompt indicator is seen. That can authorize unintended actions by an agent or tool running in the pane, bypassing human review and turning a status-check helper into an execution/consent primitive.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Automatically sending 'y' to an interactive prompt without user warning or confirmation is unsafe because it may approve destructive, privileged, or externally triggered operations. In a tmux-driven agent workflow, any mistaken prompt detection or maliciously induced prompt can result in silent authorization of actions the user never reviewed.

Content

No source excerpt is available for this finding.

Agent Config Directory Access

High
Category
Agent Snooping
Confidence
94% confidence
Finding

The script intentionally targets the project's .claude settings directory to persist a Stop hook. Accessing and modifying agent configuration is security-sensitive because it changes how the agent behaves in future runs and can introduce automatic command execution in response to agent events.

Content

Scanner excerpt · resources/start-orchestrix.sh (reported line 84)May include surrounding context.

sh
# Inject handoff-detector hook into target project
# ============================================
# CRITICAL: The tmux agents run Claude Code in WORK_DIR, so their Stop hooks
# come from WORK_DIR/.claude/settings*.json, NOT from the orchestrix-mcp-server project.
# We must inject the handoff-detector hook into the target project's settings.local.json
# so that agent Stop events trigger local handoff detection.
SETTINGS_LOCAL="$WORK_DIR/.claude/settings.local.json"

Agent Config Directory Access

High
Category
Agent Snooping
Confidence
94% confidence
Finding

The HANDOFF_HOOK_CMD value is written into .claude/settings.local.json as a command hook, creating a persistent execution path that runs shell commands in the repository context. In a project scaffolding skill this is more dangerous because users may expect setup automation, making it easier to hide or normalize sensitive agent-config changes.

Content

Scanner excerpt · resources/start-orchestrix.sh (reported line 87)May include surrounding context.

sh
# come from WORK_DIR/.claude/settings*.json, NOT from the orchestrix-mcp-server project.
# We must inject the handoff-detector hook into the target project's settings.local.json
# so that agent Stop events trigger local handoff detection.
SETTINGS_LOCAL="$WORK_DIR/.claude/settings.local.json"
HANDOFF_HOOK_CMD="bash -c 'cd \"\$(git rev-parse --show-toplevel)\" && .orchestrix-core/scripts/handoff-detector.sh'"

# Ensure .claude directory exists

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script detects Claude Code trust or safety prompts and programmatically presses Enter to accept them without user review. That defeats an important security control intended to prevent execution in untrusted folders, allowing agents and hooks to run in repositories the user has not consciously approved.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Automatically approving trust or safety dialogs removes a deliberate human checkpoint designed to protect users from running agents in unsafe contexts. In this skill, that is especially dangerous because the same script also injects hooks and starts multiple automated agent sessions, compounding the consequences of trusting the wrong repository.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill performs shell-based filesystem operations, copies scripts, changes permissions, and initializes git, yet it declares no explicit tool scope or allowed-tools boundary. That increases the chance the agent can invoke broader shell capabilities than the user expects, especially because the workflow writes into home-directory project paths and installs executable hooks/scripts.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 3)May include surrounding context.

md
---
name: create-project
description: "Interactive Orchestrix project scaffolding. Creates project directory under ~/Codes/, generates project brief from Q&A, installs MCP config, hooks, slash commands, tmux scripts, and initializes git. Use when user wants to create a new project, init a project, or start a new Orchestrix workspace."
license: MIT
metadata:
  author: dorayo

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The activation text is broad enough to trigger on common requests like starting or initializing a project, even though the skill performs extensive writes, installs hooks/scripts, and may lead into session automation. Overbroad invocation increases the chance of accidental execution in contexts where the user did not intend those side effects.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The description does not clearly warn that the skill will make extensive filesystem changes, install executable scripts/hooks, and initialize a git repository. Missing side-effect disclosure reduces informed consent and makes the later automation-related behavior more dangerous in context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill asks for a license key and plans to store it in .mcp.json without a clear privacy or retention warning. Users may provide a real credential without realizing it will be written to disk in project state, where it can be committed or exposed to other tools.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill collects an Orchestrix license key and writes it into project configuration despite presenting itself as local scaffolding. Storing secrets in generated project files creates unnecessary exposure risk through local leaks, backups, screenshots, commits, or later automation reading those files.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The instructions explicitly require "用中文提问," which imposes a specific language policy on the interaction. There is no opt-in, fallback, or user choice documented, so this is a natural-language policy violation under the language/locale rule.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script explicitly detects trust/safety-related text in a tmux pane and sends Enter to auto-accept it, bypassing a security gate intended to require user review. In the context of a project-creation skill, this is especially dangerous because newly created or reopened project folders may contain unreviewed code or configuration, and the automation removes the user's chance to assess that risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The dev path changes into the project directory and executes .orchestrix-core/scripts/start-orchestrix.sh in the background. While a comment notes session recreation, there is no visible user-facing warning, prompt, or logging about this subprocess execution and its potential effects.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script changes .orchestrix-core/runtime/pending-handoff.json by marking its status as completed, which is a file write affecting project state. Although comments describe the behavior, there is no user-facing disclosure, confirmation, or prompt before this modification occurs.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.