Back to skill

Security audit

transcript

Security checks for vulnerabilities and agentic risk

Overview

The skill does the advertised transcript fetching, but its setup flow gives the agent broad responsibility for account signup, OTP handling, API-key handling, and persistent secret storage.

Install only if you are comfortable with the agent contacting TranscriptOut and handling setup credentials. Prefer creating the TranscriptOut account and API key yourself in the provider dashboard, then store the key using your platform's protected secret store rather than pasting it into chat or letting the agent persist it in shell/profile files.

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:23
Finding

Unsafe Collection, Temporary Storage, and Persistence of Authentication Secrets

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. ``` At `references/auth-setup.md:60-62`: ```text **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 arrives as `[REDACTED]` and the flow dead-ends. File in, file out, one chained command. ``` At `references/auth-setup.md:109-110`: ```text 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. ``` At `references/auth-setup.md:162-169`: ```text 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 setup workflow handles three sensitive values: 1. An existing TranscriptOut API key supplied by the user. 2. A short-lived bearer token returned by the registration endpoint. 3. A newly issued TranscriptOut API key returned by the verification en ...[truncated 3169 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The file is dedicated to account signup and API key wiring even though the skill metadata explicitly says to skip account chores. This mismatch is dangerous because it broadens the agent's authority in a way users and reviewers would not expect, increasing the chance of unintended credential collection and secret persistence under the guise of a transcript skill.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This documentation instructs the agent to perform account signup, collect user email and OTPs, obtain API credentials, and persist secrets across sessions. That exceeds the stated transcript-retrieval scope and creates a secret-handling/account-management capability that can expose credentials, alter user accounts, and normalize collection of authentication material by the agent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The skill is explicitly designed to transmit user-provided video identifiers to api.transcriptout.com, an external service, along with authentication and normal request metadata. This is an actual data egress surface: even if expected for functionality, it can expose user interests, research subjects, and access patterns to a third party if not clearly disclosed and constrained.

Content

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

Fetch the transcript of any YouTube video.

bash
curl -s "https://api.transcriptout.com/v1/transcript?video=VIDEO_URL_OR_ID&format=text" \
  -H "Authorization: Bearer $TRANSCRIPTOUT_API_KEY"

External Transmission

Medium
Category
Data Exfiltration
Confidence
78% confidence
Finding

This external transmission sends a user email to a third-party API to create or sign into an account. While contacting an API is expected for service use, in this skill context it is part of an out-of-scope account-creation flow and therefore expands data disclosure and user-tracking risk beyond simple transcript retrieval.

Content

Scanner excerpt · references/auth-setup.md (reported line 54)May include surrounding context.

Make a POST request to:

text
POST https://api.transcriptout.com/auth/register-cli
Content-Type: application/json

{ "email": "the_user_email" }

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This step directs the agent to transmit a bearer session token and a user-provided OTP to verify an account and mint an API key. Handling live authentication artifacts inside the agent materially increases the risk of credential interception, misuse, or unintended retention, especially because the resulting API key is then persisted for future sessions.

Content

Scanner excerpt · references/auth-setup.md (reported line 102)May include surrounding context.

Once the user gives you the code, make a POST request to:

text
POST https://api.transcriptout.com/auth/verify-cli
Authorization: Bearer <the access_token from Step B-2>
Content-Type: application/json

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.

One free call confirms both the key and the balance (/auth/* endpoints never spend credits):

bash
curl -s https://api.transcriptout.com/auth/me \
  -H "Authorization: Bearer $TRANSCRIPTOUT_API_KEY"

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill sends user-supplied YouTube URLs or video IDs to a third-party API, but the user-facing description does not disclose that external transmission. This is a real transparency and privacy issue because users may reasonably assume analysis happens locally or within the host platform, especially when links can reveal viewing interests or sensitive research topics.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The parameter table states that lang defaults to en, which sets a specific language/locale behavior in the skill documentation. The file does not indicate that users should be asked for their preferred language first or that English is only a fallback when appropriate.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.