If you discover a security vulnerability, please report it responsibly:
- Do NOT open a public GitHub issue
- Email: john@itallstartedwithaidea.com
- Include: description, steps to reproduce, potential impact
- We'll respond within 48 hours
- Never commit API keys — use
.envfiles (gitignored) or secrets managers - Rotate keys if you suspect exposure — even in private repos
- All credentials reference
.envviapython-dotenv; the.env.examplecontains only placeholders
- The FastAPI server defaults to
localhostorigins only - Set
ALLOWED_ORIGINSenv var to a comma-separated list of your actual domains - Never use
*in production
- Built-in IP-based rate limiting (default: 30 req/min)
- Configure via
RATE_LIMIT_MAXenv var - For production, add API key authentication
- GAQL queries use parameterized patterns to prevent injection
- All Google Ads API calls use the official
google-adsPython SDK which handles escaping - Period/date range values are whitelisted where user-supplied
- All write operations (campaign creation, bid changes, budget adjustments) use the CEP Protocol:
- Confirm: Agent presents what it will do
- Execute: Only after explicit user confirmation
- Post-check: Verify the operation succeeded
- Pre-state snapshots captured before mutations
- Server logs full error details internally
- Client receives generic error messages (no stack traces, no internal paths)
| Version | Supported |
|---|---|
| 2.x | Yes |
| 1.x | No |
Run pip audit regularly to check for known vulnerabilities in dependencies.