T09 · Insecure Skill Coding Practices
- Location
summarize.sh:19- Finding
Untrusted Transcript Content Can Manipulate Model Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to be a straightforward meeting summarizer, but it sends full transcripts to Anthropic without clear user-facing disclosure.
Install only if you are comfortable sending any transcript you pipe into the script to Anthropic. Do not use it for regulated, confidential, HR, legal, customer, or credential-containing meetings unless that provider use is approved, and verify important decisions or action items against the original transcript.
summarize.sh:19Untrusted Transcript Content Can Manipulate Model Output
Referenced artifact was not completely inspected
./summarize.sh < transcript.txt
Referenced artifact was not completely inspected
./summarize.sh < transcript.txt
Referenced artifact was not completely inspected
./summarize.sh < transcript.txt
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
print(json.dumps(prompt + transcript))
")
RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
The usage and requirements sections show that transcripts are processed using curl and an ANTHROPIC_API_KEY, but they do not explicitly warn users that potentially sensitive meeting content will be transmitted to an external third-party API. Meeting transcripts commonly contain confidential business discussions, PII, credentials, or legal/HR information, so omission of this disclosure can lead to unintended data exfiltration and policy or compliance violations.
The script requires an API key and transmits the full meeting transcript to Anthropic, which is a data exfiltration pathway by design. In a summarization skill this may be functionally intended, but without metadata, manifest scope, or explicit disclosure/consent, sensitive meeting content could be sent off-host unexpectedly.
The hardcoded remote API endpoint confirms that processing occurs off-device and outside the user's immediate environment. For meeting transcripts, this can expose sensitive discussions to third-party handling and retention policies if users are not informed.
print(json.dumps(prompt + transcript))
")
RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
The hardcoded remote API endpoint confirms that processing occurs off-device and outside the user's immediate environment. For meeting transcripts, this can expose sensitive discussions to third-party handling and retention policies if users are not informed.
print(json.dumps(prompt + transcript))
")
RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
The script silently uploads whatever is provided on stdin to an external LLM API, and users may reasonably assume a local summarizer from the interface alone. This creates privacy and compliance risk if transcripts contain confidential business, legal, HR, or customer data.