T09 · Insecure Skill Coding Practices
- Location
scripts/google-calendar-cli.py:225- Finding
OAuth Credentials Exposed Through Command-Line Arguments
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This appears to be a real Google Calendar CLI, but it handles long-lived OAuth secrets unsafely and can modify or delete live calendar events without clear guardrails.
Review before installing. Use only with a Google account and calendar you are comfortable letting an agent read and change. Prefer environment variables or a proper secret store, avoid passing refresh tokens or client secrets as command-line flags, and require explicit user confirmation before update or delete commands.
scripts/google-calendar-cli.py:225OAuth Credentials Exposed Through Command-Line Arguments
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# ── Auth ────────────────────────────────────────────────────────────────────
def obtain_access_token(client_id, client_secret, refresh_token):
"""Exchange a refresh token for a short-lived access token."""
body = urllib.parse.urlencode({
"client_id": client_id,
"client_secret": client_secret,
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# ── Auth ────────────────────────────────────────────────────────────────────
def obtain_access_token(client_id, client_secret, refresh_token):
"""Exchange a refresh token for a short-lived access token."""
body = urllib.parse.urlencode({
"client_id": client_id,
"client_secret": client_secret,
This markdown file describes commands that create, update, and delete Google Calendar events, including a delete command, but does not include any warning that these actions modify user data or may be irreversible. Under the markdown-specific SQP-2 criteria, skill descriptions should warn about behaviors that could affect user data or system integrity.
The skill explicitly requires environment secrets and network access to Google Calendar, but it does not declare an explicit tool scope such as permissions or allowed-tools. That mismatch weakens governance and user awareness, making it easier for an agent to invoke credentialed network actions without clear policy boundaries.
The skill advertises update and delete operations against a live calendar but provides no warning, confirmation guidance, or safety notes about destructive changes. In an agent setting, this increases the risk of accidental event modification or deletion, potentially causing data loss, scheduling disruption, or unauthorized changes if invoked carelessly.
The CLI accepts OAuth client secret and refresh token directly via command-line flags, which can expose them through shell history, process listings, audit logs, or job runners. In a calendar-management tool, these credentials grant API access to private calendar data and event modification, so disclosure can lead to unauthorized access and tampering.