Back to skill

Security audit

captions

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it says for caption retrieval, but its setup flow gives the agent broad credential, account-creation, and persistent secret-storage responsibilities that users should review before installing.

Install only if you are comfortable with TranscriptOut receiving the video URLs or IDs you request and with configuring a TranscriptOut API key. Prefer creating the account and key yourself in the browser, then store the key in a dedicated secret manager rather than pasting it into chat or saving it in shell profiles or project files. Rotate or revoke the key if it may have been exposed.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
references/auth-setup.md:18
Finding

Insecure Collection, Temporary Storage, and Persistence of API Credentials

Content
View full analysis
Do you have a TranscriptOut key already? Paste it and I'll wire it up. If not, give me an email > address and I'll open a free account for you: 100 credits included, no card asked. - If they paste a key (starts with `sk_`), go straight to **Storing the Key** below. ``` From `references/auth-setup.md:59-61`: ```markdown **Pipe the response into a temporary file and build the next request by reading the token out of that file. Never echo the token on its own.** Several agent runtimes scrub anything shaped like `access_token` or a bearer token from tool output before the model sees it, so a printed token ``` From `references/auth-setup.md:107-108`: ```markdown Same discipline as before: **response into a file, key read out of the file**, because `sk_`-prefixed values get scrubbed from tool output by the same runtimes. ``` From `references/auth-setup.md:157-168`: ```markdown ## Storing the Key You now have a string that starts with `sk_`. This is the `TRANSCRIPTOUT_API_KEY`. Store it persistently using whatever method is correct for this environment (which you determined in Step 0). Make sure it will be available in future sessions, including non-interactive shells, without any manual sourcing step from the user. Once stored, verify it is accessible in the current session. If the session needs a reload or restart to pick up the new value, do that or tell the user to do it. Delete the temporary files this process created. ``` ### Technical Analysis The Skill instructs the user to paste ...[truncated 3187 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs the agent to register a third-party account on the user’s behalf using the user’s email and to intermediate OTP-based verification. This gives the agent an unnecessary identity/authorization role for a simple caption service and creates risk of unintended account creation, privacy leakage, and abuse of delegated trust.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The instructions require persistently storing an API key so future sessions and non-interactive shells can access it, effectively granting long-lived access beyond the immediate task. For a captions skill, this persistence is excessive and increases the blast radius if the host, shell config, temp files, or agent environment are later exposed.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 37)May include surrounding context.

bash
# SRT body inside the JSON envelope
curl -s "https://api.transcriptout.com/v1/transcript?video=VIDEO_URL_OR_ID&format=srt" \
  -H "Authorization: Bearer $TRANSCRIPTOUT_API_KEY"

# or the raw .srt file itself

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 41)May include surrounding context.

bash
# SRT body inside the JSON envelope
curl -s "https://api.transcriptout.com/v1/transcript?video=VIDEO_URL_OR_ID&format=srt" \
  -H "Authorization: Bearer $TRANSCRIPTOUT_API_KEY"

# or the raw .srt file itself

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/auth-setup.md (reported line 54)May include surrounding context.

bash
# SRT body inside the JSON envelope
curl -s "https://api.transcriptout.com/v1/transcript?video=VIDEO_URL_OR_ID&format=srt" \
  -H "Authorization: Bearer $TRANSCRIPTOUT_API_KEY"

# or the raw .srt file itself

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/auth-setup.md (reported line 102)May include surrounding context.

bash
# SRT body inside the JSON envelope
curl -s "https://api.transcriptout.com/v1/transcript?video=VIDEO_URL_OR_ID&format=srt" \
  -H "Authorization: Bearer $TRANSCRIPTOUT_API_KEY"

# or the raw .srt file itself

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/auth-setup.md (reported line 176)May include surrounding context.

bash
# SRT body inside the JSON envelope
curl -s "https://api.transcriptout.com/v1/transcript?video=VIDEO_URL_OR_ID&format=srt" \
  -H "Authorization: Bearer $TRANSCRIPTOUT_API_KEY"

# or the raw .srt file itself

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documentation expands a caption-retrieval capability into onboarding for a third-party service, including account creation, credential handling, and persistent secret setup. That materially broadens the agent’s authority beyond the stated purpose and can lead users to disclose credentials or permit durable access they did not expect from a captions skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill asks for a user email to create a service account and perform verification requests, but this material behavior is not clearly disclosed in the skill description or upfront consent language. Users invoking a captions skill may reasonably not expect third-party account provisioning and external transmission of their email for signup.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The guidance explicitly handles bearer/session tokens via temporary files and instructs persistent API-key storage, but it does not include concrete safeguards such as secure file permissions, deletion guarantees, or user-facing risk disclosure. Temporary-file token handling can expose secrets to other processes, shell history, backup systems, or later forensic recovery if implemented carelessly.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill sends user-supplied YouTube URLs or video IDs to TranscriptOut, a third-party service, but the documentation section around setup/required headers does not clearly warn users about that data sharing. This is a real transparency/privacy issue because users may reasonably assume the tool only accesses YouTube directly, when in fact their requested targets are disclosed to an external provider.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.