Skip to content
Report library
Purpose / Other

Higgsfield Video Explainer Skill Security Audit

What the author says it does (original text)

|

Independent security check

Do not install or run it yet

Files checked
2
Risks found
4
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 2
High risk

Runs a downloaded program right away

Source references: 2
What we found

This line runs the downloaded content without giving you a chance to read it first.

Why this matters

Once run, the downloaded program could read or change your files. The owner of the website can also replace the program without changing its URL.

Only when `higgsfield` is unavailable, the Skill pipes an installer returned from GitHub's current branch directly into `sh`. The executed content is neither shown first nor pinned to a commit or checksum; if the source or delivered content is compromised, it could access or modify files with the current user's permissions. A user can ask for a pinned version and hash, or require download-and-review before execution.

SKILL.md:45In the instructionsOpen original file
   ```bash   curl -fsSL https://raw.githubusercontent.com/higgsfield-ai/cli/main/install.sh | sh   ```
Show 1 other places
SKILL.md:42In the instructionsOpen original file
1. If `higgsfield` is unavailable, install it:   ```bash   curl -fsSL https://raw.githubusercontent.com/higgsfield-ai/cli/main/install.sh | sh   ```
High risk

The installation step pipes an unpinned, unverified remote script directly into a shell

Source references: 2
What we found

The Skill downloads an installer from the current GitHub branch and immediately pipes it to `sh`. The content is neither pinned to a commit nor checked against a displayed hash, so it can change between runs.

Why this matters

If the download source, repository, or delivery path serves malicious or compromised content, it executes with the local account's privileges and could read accessible files, alter the environment, or obtain Higgsfield login material. The evidence does not show that this has occurred.

The candidate correctly identifies a supply-chain risk, although this is a conditional bootstrap step rather than something run every time. The URL targets the mutable `main/install.sh`, and these lines provide no version pin, signature, or hash verification, so the executed content can change with remote updates. A user can require a verifiable, pinned installation method.

SKILL.md:42In the instructionsOpen original file
1. If `higgsfield` is unavailable, install it:   ```bash   curl -fsSL https://raw.githubusercontent.com/higgsfield-ai/cli/main/install.sh | sh   ```
Show 1 other places
SKILL.md:40In the instructionsOpen original file
## Bootstrap1. If `higgsfield` is unavailable, install it:   ```bash   curl -fsSL https://raw.githubusercontent.com/higgsfield-ai/cli/main/install.sh | sh   ```
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 1
Medium risk

Personal stories, document-derived text, and style references may be sent to Higgsfield

Source references: 5
What we found

The Skill reads local source documents and submits each narration block as a `seed_audio` prompt; video prompts and the shared style image are also submitted to remote generation jobs. Local or downloaded images can be used as style inputs. The original documents are not explicitly uploaded, but details incorporated into narration or visual prompts leave the device.

Why this matters

Narration can disclose personal experiences, names, or confidential facts from documents. Reference images may contain personal information, copyrighted material, or uncleared metadata. The provided files do not state retention, training use, or access controls.

The Skill reads local documents and submits narration text, video prompts, and style-image references through Higgsfield generation commands. Sensitive details incorporated from documents or personal stories into narration or scene prompts—and images selected as style references—may therefore leave the device; the evidence does not show that whole source documents are uploaded. Users can withhold sensitive material and ask about retention, training use, and deletion policies.

SKILL.md:88In the instructionsOpen original file
- Topic or personal/philosophical story.- Optional local source documents; read/extract them before scripting. They are factual input, not generation media.- Optional preset UUID, mutually exclusive with custom style-reference images.- Optional style-reference images. Use only their rendering style and color grading; never copy their people, text, logos, or objects unless requested.- Duration, language, character mode, aspect, and subtitle choice from Phase 0.For local style donors, pass each path with a repeated `--image`. For a web image, download it locally first or use an existing uploaded media ID.
Show 4 other places
SKILL.md:203In the instructionsOpen original file
```bashhiggsfield generate create seed_audio \  --prompt "<Block N narration only>" \  --voice_type "<preset|element>" \  --voice_id "<voice UUID>" \  --wait \  --json```
SKILL.md:218In the instructionsOpen original file
```bashhiggsfield generate create gemini_omni \  --prompt "<Block N video prompt>" \  --image "<STYLE_KEY_ID>" \  --duration 10 \  --resolution 720p \  --aspect_ratio 16:9 \  --wait \  --json```
SKILL.md:201In the instructionsOpen original file
Generate one completed `seed_audio` job per narration block, always with the same voice:```bashhiggsfield generate create seed_audio \  --prompt "<Block N narration only>" \  --voice_type "<preset|element>" \  --voice_id "<voice UUID>" \  --wait \  --json```
SKILL.md:216In the instructionsOpen original file
Generate one completed 10-second `gemini_omni` clip per block. Attach the same style key to every call:```bashhiggsfield generate create gemini_omni \  --prompt "<Block N video prompt>" \  --image "<STYLE_KEY_ID>" \  --duration 10 \  --resolution 720p \  --aspect_ratio 16:9 \  --wait \  --json```
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.No risks found
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.Risks found: 1
Medium risk

One run can automatically create up to 120 generation jobs and assemble them without a total-cost confirmation

Source references: 5
What we found

A duration of one to ten minutes creates six blocks per minute. Each block triggers one audio and one video job—up to sixty of each—followed immediately by assembly. The Skill discloses only the subtitle charge of 0.05 credit per voiced block and does not require a full estimate before submitting the batch or retries.

Why this matters

The account may consume substantial quota before the user sees the result. With subtitles enabled, the disclosed add-on alone is 0.3 to 3 credits; the evidence does not establish whether audio, video, assembly, or retries have additional charges. Intermediate job IDs are hidden by default, which can make job and billing reconciliation harder.

What this evidence establishes

The source permits ten minutes (sixty blocks), creates one audio and one video job per block, then assembles them immediately; failed blocks may also be retried. However, only subtitles have an explicit price, and the user must opt into them. These lines do not establish whether audio, video, assembly, or retries are billed or at what rates, so the claimed total-cost exposure cannot be confirmed from the source alone. Users can require a preflight task count, itemized pricing, retry cap, maximum total, and confirmation.

This assessment concerns the code and conditions shown, not proof that harm has occurred.
SKILL.md:78In the instructionsOpen original file
- Duration: one to ten whole minutes. `N = duration_minutes × 6` fixed 10-second blocks.- Narration language: English by default, but still offer the choice.- Character: recurring mascot or faceless stylistic scenes. Always ask.- Aspect: `16:9` by default or `9:16` vertical.- Subtitles: off by default. Explain that subtitles cost 0.05 credit per voiced block. If enabled, make the user choose `patrick`, `caveat`, `marker`, or `anton`; never choose silently.Every choice belongs to the user unless they explicitly delegate it.
Show 4 other places
SKILL.md:201In the instructionsOpen original file
Generate one completed `seed_audio` job per narration block, always with the same voice:```bashhiggsfield generate create seed_audio \  --prompt "<Block N narration only>" \  --voice_type "<preset|element>" \  --voice_id "<voice UUID>" \  --wait \  --json```Record every audio job UUID in block order. Regenerate only a failed or excessively long take. Shorten that block or adjust `--speech_rate` modestly when needed. Do not begin Phase 5 until all `N` audio jobs are complete.
SKILL.md:216In the instructionsOpen original file
Generate one completed 10-second `gemini_omni` clip per block. Attach the same style key to every call:```bashhiggsfield generate create gemini_omni \  --prompt "<Block N video prompt>" \  --image "<STYLE_KEY_ID>" \  --duration 10 \  --resolution 720p \  --aspect_ratio 16:9 \  --wait \  --json```Use `9:16` when selected. Record every video job UUID in block order. Independent jobs may run concurrently inside this phase, but the audio-phase barrier is strict. Re-submit only failed blocks. Never silently replace `gemini_omni`; inspect the live video catalog if the model is unavailable.
SKILL.md:279In the instructionsOpen original file
## DeliverReturn the final assembled video URL, exact duration, aspect, narration language, selected style, narrator, subtitle status, and a Sources list for researched topics. Keep intermediate job IDs and loose asset URLs internal unless requested.
SKILL.md:248In the instructionsOpen original file
Submit the server-side assembler immediately:```bashhiggsfield generate create explainer_video \  --items @blocks.json \  --width 1280 \  --height 720 \  --wait \  --json```

Inside this skill

8 instruction sections

The Skill first retrieves live Higgsfield style presets and requires the user to select a style. It then separately collects duration, language, character mode, aspect ratio, and subtitle settings. The narrator voice must also be user-selected unless the user explicitly delegates that choice.

View source
SKILL.md:64In the instructionsOpen original file
Always load the live CMS catalog:```bashhiggsfield preset list video-explainer --json```Show the preset names with their thumbnail/video preview URLs. Say one short line asking the user to pick a preset, describe a custom style, or attach style-reference images, then end the turn. Do not ask production questions in the same turn. Choosing a style is mandatory; never choose silently unless the user explicitly says “you choose.”
SKILL.md:76In the instructionsOpen original file
Only after style selection, collect every unresolved setting:- Duration: one to ten whole minutes. `N = duration_minutes × 6` fixed 10-second blocks.- Narration language: English by default, but still offer the choice.- Character: recurring mascot or faceless stylistic scenes. Always ask.- Aspect: `16:9` by default or `9:16` vertical.- Subtitles: off by default. Explain that subtitles cost 0.05 credit per voiced block. If enabled, make the user choose `patrick`, `caveat`, `marker`, or `anton`; never choose silently.Every choice belongs to the user unless they explicitly delegate it.
SKILL.md:193In the instructionsOpen original file
List the live voices, present the choices, and wait for the user to select one narrator:```bashhiggsfield voices list --json```Keep the selected voice's exact `id` and `type` (`preset` or `element`). Never invent or auto-pick a voice unless the user explicitly delegates it.

During production, the Skill submits separate narration and video-generation jobs for every block, then sends the ordered job-ID pairs to Higgsfield's server-side assembler and returns the final video URL.

View source
SKILL.md:201In the instructionsOpen original file
Generate one completed `seed_audio` job per narration block, always with the same voice:```bashhiggsfield generate create seed_audio \  --prompt "<Block N narration only>" \  --voice_type "<preset|element>" \  --voice_id "<voice UUID>" \  --wait \  --json```Record every audio job UUID in block order. Regenerate only a failed or excessively long take. Shorten that block or adjust `--speech_rate` modestly when needed. Do not begin Phase 5 until all `N` audio jobs are complete.
SKILL.md:216In the instructionsOpen original file
Generate one completed 10-second `gemini_omni` clip per block. Attach the same style key to every call:```bashhiggsfield generate create gemini_omni \  --prompt "<Block N video prompt>" \  --image "<STYLE_KEY_ID>" \  --duration 10 \  --resolution 720p \  --aspect_ratio 16:9 \  --wait \  --json```Use `9:16` when selected. Record every video job UUID in block order. Independent jobs may run concurrently inside this phase, but the audio-phase barrier is strict. Re-submit only failed blocks. Never silently replace `gemini_omni`; inspect the live video catalog if the model is unavailable.
SKILL.md:248In the instructionsOpen original file
Submit the server-side assembler immediately:```bashhiggsfield generate create explainer_video \  --items @blocks.json \  --width 1280 \  --height 720 \  --wait \  --json```
SKILL.md:279In the instructionsOpen original file
## DeliverReturn the final assembled video URL, exact duration, aspect, narration language, selected style, narrator, subtitle status, and a Sources list for researched topics. Keep intermediate job IDs and loose asset URLs internal unless requested.
Start here · InstructionsSKILL.md
higgsfield-video-explainer
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source. 7 more sections are available in the original file.

File reference map

References: 1
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records2 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • references/prompts.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • references/prompts.mdSupporting file

Operations mentioned in code and instructions

Run commands
SKILL.md:16In the instructionsOpen original file
argument-hint: "[topic or source files] [duration] [language] [aspect ratio]"allowed-tools: Bash---
SKILL.md:44In the instructionsOpen original file
   ```bash   curl -fsSL https://raw.githubusercontent.com/higgsfield-ai/cli/main/install.sh | sh
SKILL.md:51In the instructionsOpen original file
   ```bash   higgsfield model get nano_banana_2
Connect to websites
SKILL.md:45In the instructionsOpen original file
   ```bash   curl -fsSL https://raw.githubusercontent.com/higgsfield-ai/cli/main/install.sh | sh   ```
Lines read
378
File checksum (to compare versions)
9053251eeffc8dd4bfd540f8db61c57b1548dc6997107339bf1e34357e734698