Back to skill

Security audit

Qcut Video Edit

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent QCut automation documentation, but it includes broadly privileged AI-agent delegation and high-impact editor operations that need careful review before use.

Install only if you trust QCut automation to modify projects, process media with external AI providers, capture editor output, and manage local provider keys. Before using it, avoid --no-confirm for paid pipelines, review destructive commands before execution, and be especially cautious with generate-remotion because it delegates to another Claude process with all tools.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
editor-ai.md:277
Finding

Remotion Generation Invokes a Nested AI Agent with Unrestricted Tool Access

Content
View full analysis

Vulnerability Details

File Location: editor-ai.md, lines 277–278
Vulnerability Type: Excessive privileges assigned to a nested AI agent
Risk Level: High

Vulnerable Code Snippet

text
1. Locates the Remotion skill at `.agents/skills/remotion-best-practices/SKILL.md`
2. Invokes `claude -p` with all tools — Claude reads the skill, learns best practices, then writes files

Technical Analysis

The Remotion workflow delegates generation to a separate Claude process and explicitly grants it access to all tools. The declared operation only requires reading the Remotion guidance and creating project files under the selected output directory. Providing every available tool therefore exceeds the minimum privileges necessary.

The delegated agent also reads .agents/skills/remotion-best-practices/SKILL.md, which is not included in the audited artifact. Consequently, the effective instructions executed by the nested agent depend on mutable, unaudited local content.

If either the user-supplied generation prompt or the separately loaded Remotion Skill contains adversarial instructions, the nested agent may be induced to use shell, network, or broad filesystem tools unrelated to animation generation. The documentation does not describe an allowlist, output-directory sandbox, path validation, or approval boundary for such operations.

Attack Path

  1. An attacker supplies a crafted Remotion generation prompt, or modifies the local .agents/skills/remotion-best-practices/SKILL.md file.
  2. The user or parent agent runs generate-remotion.
  3. The command launches claude -p and grants the nested process all available tools.
  4. The nested agent processes the attacker-controlled instructions.
  5. Those instructions induce it to invoke unnecessary shell, filesystem, or network-capable tools.
  6. The process reads or changes resources outside the intended Remotion output directory, or executes unrelated commands with the invoking user's privilege ...[truncated 1083 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace “all tools” with an explicit allowlist containing only the file operations required to generate the Remotion project.
  2. Deny shell execution, arbitrary process spawning, credential access, and network tools by default.
  3. Restrict reads to the approved Remotion Skill and necessary project context.
  4. Confine writes to a canonicalized output directory such as output/<ComponentName>/; reject resolved paths that escape it through absolute paths, .., or symbolic links.
  5. Pin, package, and audit the exact Remotion Skill loaded by the workflow instead of relying on mutable external local content.
  6. Treat the generation prompt and loaded Skill text as untrusted data, and prevent either from expanding tool permissions.
  7. Require explicit user confirmation for any operation outside the generated component directory.
  8. Run the nested agent in an operating-system sandbox with minimal filesystem visibility and no credential-directory access.
  9. Record tool calls and modified paths in an audit log so unexpected behavior can be detected and reviewed.
  10. Add tests proving that adversarial prompts cannot read arbitrary files, execute commands, access ~/.qcut/.env, use the network, or write outside the approved output directory.
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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (30)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
84% confidence
Finding

The example use of run-pipeline ... --no-confirm encourages suppression of an approval checkpoint for a command that may execute multi-step workflows, consume paid APIs, modify project state, or produce outputs without further review. In an agent setting, removing confirmation increases the chance of unintended tool execution and parameter abuse because the agent may proceed with costly or state-changing operations automatically.

Content

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

bun run pipeline generate-avatar -m omnihuman_v1_5 -t "Hello world" --image-url avatar.png bun run pipeline analyze-video -i video.mp4 --analysis-type summary bun run pipeline transcribe -i audio.mp3 --srt bun run pipeline run-pipeline -c pipeline.yaml -i "A sunset" --no-confirm bun run pipeline estimate-cost -m veo3 -d 8s

text

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 96)May include surrounding context.

Keys stored in ~/.qcut/.env (mode 0600).

bash
bun run pipeline setup          # Create .env template
bun run pipeline set-key --name FAL_KEY   # Set a key (interactive)
bun run pipeline check-keys     # Check configured keys

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

Project deletion is a high-impact destructive operation and the documentation provides no warning about permanence, scope, or recovery options. In this skill's deterministic editor-control context, an agent or user can easily remove an entire project through a single command, causing major data loss if invoked mistakenly or through prompt manipulation.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

editor:editing:delete-range removes content over a specified interval, and options like --ripple and --cross-track-ripple can alter the broader project structure. The markdown does not warn users that this operation is destructive and can affect multiple tracks, which is the kind of system/data-impact behavior that should be disclosed.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
84% confidence
Finding

A --no-confirm flag can be abused by an agent or wrapper to bypass an intended human approval checkpoint before incurring model or pipeline costs. In this skill context, which emphasizes deterministic control and multi-step pipeline execution, removing confirmation is more dangerous because it enables rapid unattended execution of potentially expensive jobs.

Content

Scanner excerpt · reference-pipelines.md (reported line 22)May include surrounding context.

md
| `--save-intermediates` | | boolean | `false` | Save each step's output |
| `--parallel` | | boolean | `false` | Parallel step execution |
| `--max-workers` | | integer | `8` | Max concurrent workers |
| `--no-confirm` | | boolean | `false` | Skip cost confirmation |
| `--stream` | | boolean | `false` | JSONL progress on stderr |

### Pipeline YAML Schema

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file describes operations such as create-video, generate-avatar, transfer-motion, analyze-video, and transcribe that process user-supplied media URLs or files, which implies sending potentially sensitive content to remote AI services. The reference does not include any warning about privacy, external processing, or handling of uploaded media, despite the skill description covering behaviors that could affect user data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The analysis and generation commands imply that user media, prompts, images, and project content may be sent to external AI services, yet the documentation provides no warning or boundary on external data sharing. In a media-editing context, this can expose sensitive visuals, transcripts, prompts, or proprietary project data to third-party model providers without informed consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The transcription section describes sending media for processing via an external provider such as Deepgram but omits any privacy, retention, or third-party data transfer warning. Users may unknowingly submit sensitive audio, speech, or project content to external services, creating confidentiality and compliance risks.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documented behavior includes delegated AI code generation, file creation, and timeline import workflows that are broader than the declared native CLI/editor automation scope. This scope mismatch is dangerous because operators may authorize the skill expecting controlled editor actions, while it can actually create files and invoke another agent with broader capabilities.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

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.

Content

Scanner excerpt · editor-ai.md (reported line 277)May include surrounding context.

md
### How it works

1. Locates the Remotion skill at `.agents/skills/remotion-best-practices/SKILL.md`
2. Invokes `claude -p` with all tools — Claude reads the skill, learns best practices, then writes files
3. Generates a folder at `output/<ComponentName>/src/`:
   - `Root.tsx` — `<Composition>` declarations

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

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.

Content

Scanner excerpt · editor-ai.md (reported line 407)May include surrounding context.

md
### How it works

1. Locates the Remotion skill at `.agents/skills/remotion-best-practices/SKILL.md`
2. Invokes `claude -p` with all tools — Claude reads the skill, learns best practices, then writes files
3. Generates a folder at `output/<ComponentName>/src/`:
   - `Root.tsx` — `<Composition>` declarations

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documents a workflow that invokes Claude with 'all tools' to generate files, which materially expands capability beyond narrowly scoped editor analysis and deterministic CLI control. Broad delegated tool access increases the chance of unintended file writes, command execution, data access, or privilege misuse if prompts, downstream skills, or model behavior are manipulated.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The markdown includes a workflow that deletes a timeline element with editor:timeline:delete-element, but the surrounding documentation does not warn that this changes project state and may remove user content. Under the markdown-file criteria, destructive behaviors that could affect user data should be disclosed to the user.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The media deletion command is presented as a simple one-liner with no warning, dry-run guidance, or confirmation safeguard. In an agentic/CLI workflow, this increases the chance of accidental destructive actions against project assets, especially when commands may be generated or executed programmatically from user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

The editor:project:import-state command implies modifying project state from external JSON input, which could affect data integrity, but the markdown does not warn users about overwrite risks or validating the input file. Even though the command is noted as not yet implemented, the documented behavior lacks the expected safety disclosure.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The documented project:info output includes apiKeys booleans revealing which third-party providers are configured. While no secrets are exposed, this leaks internal capability and vendor-usage metadata that can help an attacker profile the environment, tailor follow-on social engineering, or infer available paid services. In this skill context, the command is for editor/project inspection, so exposing provider configuration is not clearly necessary and increases attack surface.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The screen recording commands can capture arbitrary on-screen content and save it to disk, but the documentation provides no warning or consent guidance. In an agent skill context, this increases the chance that an automated workflow could record sensitive information visible in the editor or elsewhere on screen without the user fully understanding the privacy implications.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The screenshot command captures the editor window and stores the image on disk, yet the skill text omits any privacy or data-handling warning. In a deterministic automation skill, this is risky because screenshots may include project data, API keys, media previews, or other sensitive content that could be unintentionally persisted or exfiltrated through subsequent workflows.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · editor-state-control.md (reported line 19)May include surrounding context.

Event Streaming

bash
curl http://127.0.0.1:8765/api/claude/events                              # Last 100 events
curl "http://127.0.0.1:8765/api/claude/events?category=timeline&limit=50" # Filtered
curl -N http://127.0.0.1:8765/api/claude/events/stream                    # SSE real-time

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The notification bridge explicitly forwards QCut user actions into an active Claude PTY session, creating a cross-context data flow that can expose project activity, filenames, user behavior, or other sensitive editor context to another terminal session. In a skill intended for automation, this is more dangerous because it normalizes sending ambient editor events into an AI/PTY channel without documenting consent, scoping, redaction, or access-control safeguards.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · editor-state-control.md (reported line 61)May include surrounding context.

Group multiple operations into a single undo entry.

bash
curl -X POST .../transaction/begin -d '{"label":"Add intro","timeoutMs":30000}'  # → transactionId
curl -X POST .../transaction/<id>/commit                                          # Commit
curl -X POST .../transaction/<id>/rollback                                        # Rollback
curl .../transaction/<id>                                                         # Status

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The markdown documents --replace for timeline import as 'From file / replace existing' but does not warn that this can overwrite existing timeline contents. For markdown files, destructive behaviors that can affect user data should include an explicit warning so users understand the impact before running the command.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file shows single and batch delete commands, including --ripple, but does not include a user-facing warning about deleting timeline elements or changing downstream timing. In markdown skill documentation, destructive editing operations should disclose their impact on project data and timeline structure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The auto-edit examples include --remove-fillers and --remove-silences, which can change media edits automatically, but the documentation provides no warning except one dry-run example. Because these actions can materially alter user content, the markdown should explicitly disclose that they perform automated edits and recommend review or dry-run first.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
65% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
| `--save-intermediates` | | boolean | `false` | Save each step's output |
| `--parallel` | | boolean | `false` | Parallel step execution |
| `--max-workers` | | integer | `8` | Max concurrent workers |
| `--no-confirm` | | boolean | `false` | Skip cost confirmation |
| `--stream` | | boolean | `false` | JSONL progress on stderr |

### Pipeline YAML Schema

Static analysis

No suspicious patterns detected.