Back to skill

Security audit

daily.dev

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent daily.dev API guide, but it asks agents to scan GitHub activity, modify daily.dev account data, and run background or scheduled personalization without enough explicit consent and scoping guardrails.

Review this skill before installing. Use it only for daily.dev API work you explicitly request, limit any GitHub analysis to repositories you authorize, require confirmation before profile/feed/bookmark changes, and avoid pasting real API tokens directly into shell commands or 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
SKILL.md:29
Finding

API Token Exposure Through Plaintext Command-Line Setup Examples

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 29-58
Vulnerability Type: Plaintext sensitive data exposure
Risk Level: Medium

Vulnerable Code

macOS example at line 29:

bash
security add-generic-password -a "$USER" -s "daily-dev-api" -w "dda_your_token"

Windows example at line 41:

powershell
$credential = New-Object System.Management.Automation.PSCredential("daily-dev-api", (ConvertTo-SecureString "dda_your_token" -AsPlainText -Force))

Linux example at line 58:

bash
echo "dda_your_token" | secret-tool store --label="daily.dev API Token" service daily-dev-api username "$USER"

Technical Analysis

The setup documentation encourages users to replace dda_your_token with an actual API token directly inside an interactive command. Although the commands subsequently place the token in an operating-system credential store, the token is exposed in plaintext during initial entry.

On macOS and Linux, the substituted command may be retained in shell history. The token may also be temporarily visible through process inspection because it is supplied as a command-line argument to security or echo. In PowerShell, the plaintext token can remain in command history and is explicitly passed to ConvertTo-SecureString using -AsPlainText -Force.

The Skill correctly states that tokens must only be transmitted to api.daily.dev, and its documented network requests target that domain. The necessary authenticated API communication is therefore not itself an unauthorized exfiltration behavior. The vulnerability is the insecure local handling of the token before it reaches secure storage.

Attack Path

  1. A user follows the setup instructions and replaces dda_your_token with a valid daily.dev API token.
  2. The user executes the resulting command in Bash, Zsh, or PowerShell.
  3. The command containing the plaintext token is retained in shell history, terminal logs, ses ...[truncated 1329 chars]
Remediation
View remediation

Remediation Suggestions

  • Do not instruct users to place a real token directly in a command that may be saved in shell history.

  • Prompt for the token without terminal echo and pass it to the credential-storage command without exposing it as a command-line argument where platform capabilities permit.

  • For POSIX shells, use a silent prompt and clear the temporary variable immediately after storage:

    bash
    read -rsp "daily.dev API token: " DAILY_DEV_TOKEN
    printf '\n'
    printf '%s' "$DAILY_DEV_TOKEN" |
      secret-tool store --label="daily.dev API Token" service daily-dev-api username "$USER"
    unset DAILY_DEV_TOKEN
    
  • For PowerShell, use Read-Host -AsSecureString instead of embedding the token as plaintext:

    powershell
    $secureToken = Read-Host "daily.dev API token" -AsSecureString
    $credential = [System.Management.Automation.PSCredential]::new(
        "daily-dev-api",
        $secureToken
    )
    $credential | Export-Clixml "$env:USERPROFILE\.daily-dev-credential.xml"
    Remove-Variable secureToken, credential
    
  • On macOS, prefer a silent prompt and avoid documenting a literal secret. If platform tooling requires conversion to plaintext or a command-line argument, clearly disclose the residual exposure and recommend entering the token through a trusted graphical Keychain interface instead.

  • Ensure exported credential files have restrictive permissions and are not synchronized to shared or untrusted storage.

  • Add an explicit warning not to paste tokens into shell commands, scripts, configuration committed to version control, issue reports, or terminal sessions being recorded.

  • Recommend revoking and rotating any token that may already have been entered using the documented plaintext commands.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (9)

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

md
## Setup

1. **Requires Plus subscription** - Get one at https://app.daily.dev/plus
2. **Create a token** at https://app.daily.dev/settings/api
3. Store your token securely (environment variables, secrets manager)

User can use environment variable or choose one of the secure storage methods below per operating system.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

bash
# Requires libsecret-tools
# Ubuntu/Debian: sudo apt install libsecret-tools
# Fedora: sudo dnf install libsecret

# Store token

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

bash
# Requires libsecret-tools
# Ubuntu/Debian: sudo apt install libsecret-tools
# Fedora: sudo dnf install libsecret

# Store token

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 80)May include surrounding context.

Base URL

text
https://api.daily.dev/public/v1

API Reference

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 85)May include surrounding context.

Base URL

text
https://api.daily.dev/public/v1

API Reference

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 89)May include surrounding context.

Base URL

text
https://api.daily.dev/public/v1

API Reference

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 94)May include surrounding context.

Base URL

text
https://api.daily.dev/public/v1

API Reference

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 101)May include surrounding context.

Base URL

text
https://api.daily.dev/public/v1

API Reference

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly proposes scanning a user's GitHub repositories and activity, inferring their tech stack, and updating their daily.dev profile, but it does not pair those actions with an explicit consent, minimization, or privacy notice. This creates a real privacy/security concern because an agent could collect and transmit user-derived metadata to a third-party service beyond what the user reasonably expects, especially if repository analysis includes private repos or contribution patterns.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.