varlock
Manages environment variables securely in Claude Code sessions, ensuring sensitive data remains protected and never exposed.
Install this skill
Security score
The varlock skill was audited on May 14, 2026 and we found 54 security issues across 4 threat categories, including 4 high-severity. Review the findings below before installing.
Categories Tested
Security Issues
Direct command execution function call
| 314 | API_KEY=exec('op read "op://vault/item/field"') |
Direct command execution function call
| 322 | DB_PASSWORD=exec('aws secretsmanager get-secret-value --secret-id prod/db') |
Template literal with variable interpolation in command context
| 235 | ```yaml |
Template literal with variable interpolation in command context
| 327 | ```bash |
Piping content to sh shell
| 93 | curl -sSfL https://varlock.dev/install.sh | sh -s -- --force-no-brew |
Piping content to sh shell
| 248 | RUN curl -sSfL https://varlock.dev/install.sh | sh -s -- --force-no-brew \ |
Curl to non-GitHub URL
| 78 | curl -H "Authorization: Bearer sk_live_xxx" https://api.example.com |
Curl to non-GitHub URL
| 81 | curl -H "Authorization: Bearer $API_KEY" https://api.example.com |
Curl to non-GitHub URL
| 93 | curl -sSfL https://varlock.dev/install.sh | sh -s -- --force-no-brew |
Curl to non-GitHub URL
| 248 | RUN curl -sSfL https://varlock.dev/install.sh | sh -s -- --force-no-brew \ |
Access to hidden dotfiles in home directory
| 95 | # Add to PATH (add to ~/.zshrc or ~/.bashrc) |
Access to hidden dotfiles in home directory
| 341 | ls ~/.varlock/bin/varlock |
Access to hidden dotfiles in home directory
| 347 | ~/.varlock/bin/varlock load |
Access to hidden dotfiles in home directory
| 433 | - See: `~/.claude/skills/clerk/SKILL.md` |
Access to hidden dotfiles in home directory
| 438 | - See: `~/.claude/skills/docker/SKILL.md` |
Access to root home directory
| 249 | && ln -s /root/.varlock/bin/varlock /usr/local/bin/varlock |
Access to .env file
| 21 | - You want a secure-by-default workflow built around Varlock instead of direct `.env` inspection. |
Access to .env file
| 43 | cat .env | grep SECRET |
Access to .env file
| 50 | ### Rule 2: Never Read .env Directly |
Access to .env file
| 54 | cat .env |
Access to .env file
| 55 | less .env |
Access to .env file
| 56 | Read tool on .env file |
Access to .env file
| 59 | cat .env.schema |
Access to .env file
| 105 | # Create .env.schema from existing .env |
Access to .env file
| 109 | touch .env.schema |
Access to .env file
| 114 | ## Schema File: .env.schema |
Access to .env file
| 198 | cat .env.schema |
Access to .env file
| 201 | grep "^[A-Z]" .env.schema |
Access to .env file
| 225 | # 2. Update .env file manually (don't use Claude for this) |
Access to .env file
| 288 | 1. Update the value in your .env file manually |
Access to .env file
| 292 | I can help you update the .env.schema if you need to add new variables." |
Access to .env file
| 295 | ### When User Asks to "Show me the .env file" |
Access to .env file
| 299 | "I won't read .env files directly as they contain secrets. Instead: |
Access to .env file
| 301 | - Run `cat .env.schema` to see the schema (safe) |
Access to .env file
| 302 | - I can help you modify .env.schema if needed" |
Access to .env file
| 312 | # In .env.schema |
Access to .env file
| 320 | # In .env.schema |
Access to .env file
| 328 | # In .env.schema |
Access to .env file
| 357 | # - Add missing required variables to .env |
Access to .env file
| 366 | # 2. Check .env.schema has @sensitive annotation |
Access to .env file
| 397 | - [ ] Create `.env.schema` with all variables defined |
Access to .env file
| 400 | - [ ] Add `.env` to `.gitignore` |
Access to .env file
| 401 | - [ ] Commit `.env.schema` to version control |
Access to .env file
| 404 | - [ ] Never use `cat .env` or `echo $SECRET` in Claude sessions |
Access to .env file
| 415 | | View schema | `cat .env.schema` | |
Access to .env file
| 420 | | `cat .env` | Exposes all secrets | |
Access to .env file
| 423 | | Read .env with tools | Secrets in Claude's context | |
Access to .env file
| 436 | - Mount `.env` file, never copy secrets to image |
External URL reference
| 16 | > **Documentation**: https://varlock.dev |
External URL reference
| 78 | curl -H "Authorization: Bearer sk_live_xxx" https://api.example.com |
External URL reference
| 81 | curl -H "Authorization: Bearer $API_KEY" https://api.example.com |
External URL reference
| 93 | curl -sSfL https://varlock.dev/install.sh | sh -s -- --force-no-brew |
External URL reference
| 248 | RUN curl -sSfL https://varlock.dev/install.sh | sh -s -- --force-no-brew \ |
External URL reference
| 330 | API_URL=env('API_URL_${NODE_ENV}', 'http://localhost:3000') |