T09 · Insecure Skill Coding Practices
- Location
scripts/gcal_core.py:491- Finding
Calendar mutations execute without enforced user confirmation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a real Google Calendar skill, but it needs review because its code can change or delete calendar events even when confirmation was not actually provided.
Review before installing. Use this only if you are comfortable granting Google Calendar access, and avoid Pro write operations until confirmation enforcement is fixed. Keep client_secret.json and token.json private, do not print or share them, and consider installing dependencies in an isolated environment with reviewed or pinned versions.
scripts/gcal_core.py:491Calendar mutations execute without enforced user confirmation
scripts/gcal_license.py:20Unnecessary hostname and username collection creates a persistent machine fingerprint
requirements.txt:2Open-ended dependency versions permit unreviewed supply-chain changes
The README states that token.json stores the user's access token but does not warn that possession of this file may allow calendar access. In the context of a skill handling personal scheduling data, failing to treat persisted tokens as sensitive secrets can lead to accidental exposure through weak file permissions, backups, or shared systems.
| File | Purpose |
|------|---------|
| `client_secret.json` | OAuth app credentials (you provide) |
| `token.json` | Your access token (auto-generated) |
| `license.json` | Pro license (if purchased) |
## Clawdbot Integration
The documented behavior says this is a Google Calendar skill, but the detected implementation reportedly performs licensing and machine-identification functions while lacking actual calendar functionality. That mismatch is a strong trust-boundary violation: users or calling agents may grant calendar-related privileges while the skill instead handles local identifiers and license state, suggesting hidden or undeclared behavior.
The documented file layout stores OAuth client credentials, access tokens, and license data together under a predictable path in the user's home directory. In an agent environment that also uses file_read/file_write capabilities, predictable plaintext storage increases the risk of accidental disclosure, overbroad access by other skills, or token theft if local files are exposed.
~/.config/gcal-pro/
├── client_secret.json # OAuth app credentials (user provides)
├── token.json # User's access token (auto-generated)
└── license.json # Pro license (if purchased)
The documentation explicitly indicates persistent local storage of a user's access token in token.json. Access tokens can authorize calendar access without re-prompting the user, so theft of this file could enable unauthorized reading or modification of calendar data depending on granted scopes.
~/.config/gcal-pro/
├── client_secret.json # OAuth app credentials (user provides)
├── token.json # User's access token (auto-generated)
└── license.json # Pro license (if purchased)
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Google Cloud Project Setup Guide
## Overview
This guide walks you through creating a Google Cloud project, enabling the Calendar API, and configuring OAuth 2.0 to get your `client_secret.json` file.
**Time required:** ~15 minutes
**Prerequisites:** Google account
This section not only moves a sensitive credential file into a persistent config directory but also immediately instructs the user to print its contents for verification. The dangerous part is the exposure path, which can leak OAuth client secrets through terminal history, logs, screenshots, or recorded sessions.
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.config\gcal-pro"
# Move the downloaded file (adjust source path as needed)
Move-Item "$env:USERPROFILE\Downloads\client_secret*.json" "$env:USERPROFILE\.config\gcal-pro\client_secret.json"
# Verify
Get-Content "$env:USERPROFILE\.config\gcal-pro\client_secret.json" | Select-Object -First 3
Get-Content ... | Select-Object -First 3 deliberately reveals the beginning of the secret-bearing OAuth credentials file in the terminal. That creates an unnecessary credential exposure channel and is inconsistent with the document's later warning not to share these files.
Move-Item "$env:USERPROFILE\Downloads\client_secret*.json" "$env:USERPROFILE.config\gcal-pro\client_secret.json"
Get-Content "$env:USERPROFILE.config\gcal-pro\client_secret.json" | Select-Object -First 3
**macOS/Linux:**
head -3 ~/.config/gcal-pro/client_secret.json exposes the contents of a sensitive OAuth credential file to the terminal. This creates avoidable leakage risk through shell history, shared terminals, support captures, and screenshots.
mv ~/Downloads/client_secret*.json ~/.config/gcal-pro/client_secret.json
head -3 ~/.config/gcal-pro/client_secret.json
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚠️ NEVER commit these files to git:
client_secret.json — Your app's credentialstoken.json — User's access tokensAdd to .gitignore:
No suspicious patterns detected.