Apify security basics
Skill jeremylongshore/claude-code-plugins-plus-skills/skills/.curated/apify-security-basics
Secure Apify API tokens, configure proxy access, and protect Actor data. Use when hardening API key management, setting up environment-specific tokens, rotating a leaked token, or auditing Apify security configuration. Trigger with "apify security", "apify secrets", "secure apify token", "apify API key security", "rotate apify token".From its SKILL.md
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill apify-security-basicsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.6 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Apify Security Basics
Overview
Security best practices for Apify API tokens, Actor data, proxy credentials, and webhook verification. Apify uses personal API tokens (prefixed apify_api_) for all authentication. Because a single token grants full account access with no per-token scoping, token hygiene is the whole game.
Prerequisites
- Apify account with Console access
- Understanding of environment variables
- Access to your deployment platform's secrets management
Token Architecture
Apify uses a single API token per user account for full API access. There is no scope-based permission system per token, so token security is critical.
| Token Type | Format | Where to Find |
|---|---|---|
| Personal API token | apify_api_... | Console > Settings > Integrations |
| Proxy password | Alphanumeric | Console > Proxy > Connection settings |
Instructions
Follow the six hardening steps in order. Each has a lean summary below; the full copy-paste code for every step is in references/implementation.md.
-
Secure token storage — keep the token in
.env(never hardcoded) and add.env,.env.*.local, andstorage/to.gitignore. Validate presence at startup so the app fails fast:function requireToken(): string { const token = process.env.APIFY_TOKEN; if (!token) throw new Error('APIFY_TOKEN is required'); if (!token.startsWith('apify_api_')) console.warn('unexpected token prefix'); return token; } -
Per-environment token isolation — separate tokens (ideally separate accounts) for dev / staging / prod, injected via each platform's secret store (
gh secret set,vercel env add, GCP Secret Manager). -
Token rotation — generate the new token first (old stays valid), push to every environment, verify it authenticates, then revoke the old one.
-
Webhook payload verification — Apify does not sign webhooks; confirm the run ID in the payload actually exists, or gate on a shared URL secret compared with
crypto.timingSafeEqual. -
Actor data security — redact sensitive fields before
pushData; keep datasets named and private (no public sharing). -
Proxy security — never log
proxyConfig.newUrl()(it embeds the proxy password); log the proxy group only.
See references/implementation.md for the complete code of every step, and references/examples.md for end-to-end scenarios.
Output
Applying this skill produces a hardened project state:
- A
.gitignorethat excludes.env*andstorage/, with no token in the tree. - A startup token validator that throws on a missing/malformed
APIFY_TOKEN. - Environment-specific tokens wired into each platform's secret store.
- A documented rotation procedure and a completed Security Checklist (below).
- Webhook handlers that reject unverified runs and pipelines that redact PII before storage.
Security Checklist
-
APIFY_TOKENstored in environment variables (never hardcoded) -
.envandstorage/in.gitignore - Separate tokens for dev/staging/prod
- Token rotation schedule documented
- Webhook endpoints verify source
- Proxy URLs never logged
- Scraped PII redacted before storage
- Named datasets used for sensitive data (no public sharing)
- CI/CD secrets configured (not in repo)
Leaked Token Response
If a token is exposed:
- Immediately regenerate token in Console > Settings > Integrations
- Check recent Actor runs for unauthorized usage
- Review billing for unexpected charges
- Rotate proxy password if exposed
- Audit git history:
git log --all -p -- '*.env' '*.json' | grep apify_api_
Error Handling
| Issue | Detection | Mitigation |
|---|---|---|
| Token in git history | git log -p | grep apify_api_ | Rotate token, use BFG to clean |
| Unauthorized runs | Unexpected runs in Console | Rotate token immediately |
| Proxy password exposed | Credentials in logs | Regenerate proxy password |
| Data breach in dataset | PII in public dataset | Delete dataset, sanitize pipeline |
Examples
Quick starting point — bootstrap a new project's secrets safely:
cat >> .gitignore <<'EOF'
.env
.env.*.local
storage/
EOF
echo 'APIFY_TOKEN=apify_api_dev_token' > .env
git status --short # .env must NOT appear
Four full worked scenarios — secure bootstrap, cross-environment rotation, webhook-verify-then-sanitize, and a git-history leak audit — are in references/examples.md.
Resources
- Apify Account Security
- API Authentication
- Proxy Connection Settings
- Full implementation reference
- Worked examples
Next Steps
For production deployment hardening beyond secrets — health checks, rate limits,
and monitoring — see the apify-prod-checklist skill in this pack.
What ships with it: 2 files
6.0 KB alongside SKILL.md
references/
- examples.md2.0 KB
- implementation.md4.0 KB
Gives 0 of the 12 instructions most secrets credentials skills give in ~1.2k tokens
Counted across 219 of the 226 authors here whose files we hold, read 2026-09-06
- Rotate secrets regularlyin 12 of 219, across 9 files
- Use different secrets per environmentin 10 of 219, across 7 files
- Mask secrets in logsin 10 of 219, across 7 files
- Enable audit loggingin 10 of 219, across 9 files
- Encrypt secrets at restin 9 of 219, across 6 files
- Use short-lived tokens when possiblein 9 of 219, across 6 files
- Rotate exposed credentials immediatelyin 9 of 219, across 6 files
- Use hierarchical numbering for numbered sequencesin 9 of 219
- Identify secret types, owners, and rotation requirementsin 8 of 219, across 5 files
- Choose a secrets backend and access modelin 8 of 219, across 5 files
- Validate rotation and audit loggingin 8 of 219, across 5 files
- Document secret requirementsin 8 of 219, across 5 files
Said here and by no other author read
- Store the API token in environment variables, never hardcoded
- Fail fast if the token is missing at startup
- Use separate tokens for each environment
- Inject tokens through platform secret stores
- Generate the new token before revoking the old
- Verify webhook run IDs exist before processing
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.