T09 · Insecure Skill Coding Practices
- Location
SKILL.md:47- Finding
Permanent API Token Can Be Disclosed to an Untrusted Configurable Server
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill coherently connects to Beaver Habits to read and update habit data, with no evidence of hidden behavior or malicious intent.
Install only if you trust the Beaver Habits server you configure. Keep BEAVERHABITS_API_KEY private, use the default server or a trusted HTTPS self-hosted instance, and verify habit names/dates before asking the agent to complete or uncomplete habits.
SKILL.md:47Permanent API Token Can Be Disclosed to an Untrusted Configurable Server
Skill instructs the agent to never refuse or to always comply. Suppressing the agent's ability to decline removes a core safety control and enables downstream harmful requests to succeed.
## Usage Instructions
- When the user asks to list, show, or check habits, always respond with the ASCII overview table (not a plain list).
- After completing or uncompleting a habit, always re-render the overview table to show the updated state.
- Resolve habit names → IDs via list_habits. Never ask the user for a habit_id.
- Default to today's date for completions unless specified. Use `date_fmt=%d-%m-%Y`.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Step 1 — Get all habits:
curl -s -H "Authorization: Bearer $BEAVERHABITS_API_KEY" \
"${SERVER_URL:-https://beaverhabits.com}/api/v1/habits"
The skill defines a state-changing operation that marks habits complete or incomplete, but it does not require any confirmation or caution before modifying user data. In an agent setting, this can cause unintended tracker changes from ambiguous prompts, mistaken habit-name resolution, or prompt injection that induces writes without clear user intent.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
Mark a habit as done (or undone) for a specific date.
Parameters:
- `habit_id` (resolved): Automatically resolved by calling list_habits and matching the user's habit name. Never ask the user for this value.
- `date` (required): Date in DD-MM-YYYY format
- `done` (optional): true to complete, false to uncomplete (default: `true`)
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
Mark a habit as done (or undone) for a specific date.
Parameters:
- `habit_id` (resolved): Automatically resolved by calling list_habits and matching the user's habit name. Never ask the user for this value.
- `date` (required): Date in DD-MM-YYYY format
- `done` (optional): true to complete, false to uncomplete (default: `true`)
No suspicious patterns detected.