T09 · Insecure Skill Coding Practices
- Location
SKILL.md:150- Finding
Unnecessary Disclosure of Sensitive Financial Data to a Third-Party API
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This budget-tracker skill is mostly coherent, but it sends potentially detailed financial records to a third-party AI API and installs mutable external code without enough scoping or privacy controls.
Review this carefully before installing. Use it only if you are comfortable sharing budget and transaction details with SkillBoss API for AI features, and prefer a pinned, reviewed package version with clear privacy terms, redaction, and local-only options before entering sensitive financial records.
SKILL.md:150Unnecessary Disclosure of Sensitive Financial Data to a Third-Party API
SKILL.md:12Unpinned External Packages Prevent Verification of Installed Behavior
The skill advertises natural-language expense parsing and AI insights, but the description does not clearly warn that user financial/spending data will be transmitted to an external third-party API. Because the data involved is sensitive financial metadata, lack of explicit disclosure and consent can lead to unintended privacy exposure and policy/compliance issues.
The hardcoded external API domain indicates dependency on a remote service for analysis of financial records. Even if intended functionality, transmitting money-tracker data off-device expands the trust boundary and creates privacy, compliance, and breach exposure if the service, logs, or downstream processors are compromised.
const SKILLBOSS_API_KEY = process.env.SKILLBOSS_API_KEY;
async function generateInsightsFromData(spendingData: object): Promise<string[]> {
const response = await fetch('https://api.skillboss.com/v1/pilot', {
method: 'POST',
headers: {
'Authorization': `Bearer ${SKILLBOSS_API_KEY}`,
The hardcoded external API domain indicates dependency on a remote service for analysis of financial records. Even if intended functionality, transmitting money-tracker data off-device expands the trust boundary and creates privacy, compliance, and breach exposure if the service, logs, or downstream processors are compromised.
const SKILLBOSS_API_KEY = process.env.SKILLBOSS_API_KEY;
async function generateInsightsFromData(spendingData: object): Promise<string[]> {
const response = await fetch('https://api.skillboss.com/v1/pilot', {
method: 'POST',
headers: {
'Authorization': `Bearer ${SKILLBOSS_API_KEY}`,
The documentation describes local storage, export, and backup features for financial records without clearly warning that these files may contain sensitive income, expense, merchant, and savings data. Users or downstream agents may store or export this data insecurely, increasing risk of accidental disclosure or theft.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
| Variable | Description |
|----------|-------------|
| `SKILLBOSS_API_KEY` | SkillBoss API Hub key,用于自然语言解析和 AI 智能洞察(`https://api.skillboss.com/v1/pilot`) |
| `CLAWHUB_DATA_PATH` | 可选,自定义数据存储路径 |
---
The file is primarily written in English, but this heading switches to Chinese and later environment-variable descriptions also include Chinese text. This imposes mixed-language documentation without user opt-in or justification, which can violate language/locale consistency expectations.
The environment-variable table is mainly English, but the description text includes Chinese phrases. Because no multilingual option or locale note is provided, this is a natural-language policy inconsistency in the skill documentation.
No suspicious patterns detected.