Multi Dotenv
A VS Code extension for environment configuration management: multi-file .env profiles with a dashboard UI, effective-config resolution, environment comparison, secret masking, validation diagnostics, and one-click sync to .env.local.
Author: dark-aura-95 · Publisher: AuraBox · Repo: vscode-env-manger
Features
- Multi-file profiles — Each
.env* file in the workspace is a named profile (.env, .env.dev, .env.prod, …), including nested env files in monorepos
- Multi-root & monorepo support — Detects
.env files recursively (skipping node_modules, .git, dist, …) and manages each workspace folder independently
- Effective config — Resolve the effective value for every key (base
.env → environment file → .env.local), showing the source file and why a value wins
- Compare environments — Diff any two profiles: added, removed, changed, and identical variables with masked secret values
- Editor diagnostics — Duplicate keys, empty values, and missing required variables surface in the Problems panel directly on the env files
.gitignore protection — Warns when .env files are not protected by .gitignore and offers a one-command fix
- Live status bar — Shows the active environment; click to switch from the status bar
- Dashboard UI — Search, edit, reorder, and manage variables from a webview panel
- Apply →
.env.local — Switch the active profile and sync its values to .env.local for local development
- Shared keys across profiles — Add a variable to all profiles at once; set values per profile
- Notes — Optional one-line notes stored as
# comment lines above variables in profile files
- Duplicate profile — Copy a profile file to a new
.env.* name from the toolbar
- Copy variable — Copy key, value, or
KEY=value from each row via the copy menu
- Secret masking — Masks values for keys containing
SECRET, TOKEN, PASSWORD, API_KEY, JWT_SECRET, and other patterns
- Generate
.env.example — Create a sanitized keys-only example from all profiles
- Validation — Warns about duplicate keys, empty values, and missing required variables
Getting Started
- Open a workspace with profile files such as
.env.dev and .env.prod (or create .env from the empty state)
- Run Multi Dotenv: Open Dashboard from the Command Palette, or click ENV in the status bar
- Select a profile, edit variables, then click Apply to sync it to
.env.local
How profiles work
| File |
Role |
.env, .env.dev, .env.prod, … |
Profile sources — edited in the dashboard and stored on disk |
.env.local |
Local runtime — written when you click Apply (not shown as a profile) |
.env.example |
Template — generated from the active profile; not treated as a profile |
Supported profile names
| File |
Profile name |
.env |
Default |
.env.dev / .env.development |
DEV |
.env.test / .env.testing |
TEST |
.env.qa |
QA |
.env.uat |
UAT |
.env.uat_gcp |
UAT GCP (from tokens) |
.env.staging / .env.stg |
STAGING |
.env.prod / .env.production |
PROD |
.env.local (in filename) |
LOCAL |
Other .env.* |
Stage tokens from the suffix (e.g. .env.preprod → PREPROD) |
Example layout
my-project/
.env.dev # development values
.env.prod # production values
.env.local # created/updated on Apply
.env.example # optional generated template
Monorepos work out of the box — env files in subfolders are detected too:
repo/
.env # root base
apps/api/.env.prod
apps/web/.env.dev
# .env.dev
# API base URL for development
API_URL=https://api-dev.example.com
DB_HOST=localhost
After Apply on the DEV profile, .env.local contains only that profile's active variables.
Effective configuration
Effective values resolve with this precedence (lowest → highest):
.env (base) — values shared across environments
- the environment file (e.g.
.env.prod)
.env.local (local override, when the inspected environment is active)
Multi Dotenv: Show Effective Config lists each key with its effective value, the source file that provides it, and an explanation of why it wins (e.g. "Overrides .env; .env.prod wins (environment-specific value)").
Commands
| Command |
Description |
Multi Dotenv: Open Dashboard |
Open the environment dashboard |
Multi Dotenv: Open Dashboard in New Editor |
Open the dashboard beside the current editor |
Multi Dotenv: Switch Environment |
Pick and activate a profile (syncs to .env.local) |
Multi Dotenv: Show Effective Config |
Show effective values with source attribution for a profile |
Multi Dotenv: Compare Environments |
Diff two profiles (added/removed/changed variables) |
Multi Dotenv: Generate Example File |
Create .env.example from all profiles |
Multi Dotenv: Refresh Environment |
Reload profiles and variables from disk |
Multi Dotenv: Add Variable |
Add a variable to all profiles |
Multi Dotenv: Delete Variable |
Remove a variable from all profiles |
Multi Dotenv: Add .env Files to .gitignore |
Protect env files (keeps .env.example) |
Settings
| Setting |
Default |
Description |
multiDotenv.showSecretsMasked |
true |
Mask secret environment variable values by default |
multiDotenv.autoDetectEnvFiles |
true |
Auto-detect .env* files as profiles (excludes .env.example and .env.local) |
multiDotenv.checkGitignoreProtection |
true |
Warn when .env files are not protected by .gitignore |
License
MIT © 2026 dark-aura-95 / AuraBox — see LICENSE.
| |