The .env sharing problem
Every team with more than one developer faces the same problem: how do you get the right secrets onto every developer's machine without putting them in git?
The answer your team is currently using is probably one of these:
1. "Just DM me on Slack" — someone sends the .env file as a message
2. "It's in the shared 1Password vault" — better, but manually maintained
3. "Copy it from the server" — SSH into the staging server and cat .env
4. "Check the Notion doc" — the one that was last updated eight months ago
5. ".env.example with comments" — the values are in the comments. Yes, this happens.
Each of these approaches has significant problems, and none of them scale past about five developers.
Why the common approaches fail
Slack DMs
The most common approach is also the most dangerous. A .env file sent over Slack is:
- Stored in Slack's servers (and their backup infrastructure) indefinitely
- Visible to anyone with access to the conversation history, including future hires
- Unsearchable when you need it six months later
- Impossible to revoke if someone's account is compromised
- A compliance nightmare for any regulated industry
Slack is designed for communication, not secrets management. Don't use it for credentials.
Shared 1Password/Bitwarden vaults
This is better. At least it's encrypted and access-controlled. The problem is maintenance: the vault becomes stale the moment someone adds a new environment variable and forgets to update it. There's no automatic sync, no way to know if what's in the vault matches what's in production, and no audit trail of who accessed what.
It also doesn't solve the onboarding problem — a new developer still has to manually copy 40 values from 1Password into their local .env file.
Copying from staging servers
ssh staging-server cat /app/.env is quick and always fresh. It's also a very bad habit:
- You now have production-adjacent credentials on your local machine with no tracking
- If staging uses the same credentials as production (common in smaller teams), a developer laptop compromise means production is compromised
- There's no audit trail of who pulled credentials and when
Notion/Confluence docs
Invariably out of date. Someone adds a variable, updates their local .env, and the Notion doc becomes stale. The next developer who uses it spends an hour debugging a cryptic error before realising REDIS_URL isn't in the doc.
What a good solution actually looks like
An ideal team secret sharing system has four properties:
1. Encrypted — secrets are never visible to the infrastructure serving them
2. Always fresh — when someone adds a variable and pushes, everyone can pull the update
3. Access-controlled — you know exactly who has access and can revoke it
4. Audited — there's a log of who accessed what and when
This is what dedicated secrets managers like Doppler, Infisical, and AWS Secrets Manager provide. They're excellent — but they're also infrastructure you need to set up, maintain, and pay for, and they require developers to integrate them into their workflow.
The ENV Manager Pro team vault
ENV Manager Pro's Pro tier includes a team vault that sits between "just DM it on Slack" and "set up a full secrets manager".
Here's how it works:
One developer sets up the vault:
Team vault ID: my-startup-backend Encryption: AES-256-GCM (master key stays on device)
They push their local .env:
Variables are encrypted locally using the team's master key before they're uploaded. The server only ever stores ciphertext — it cannot read your values.
New developer joins:
They open ENV Manager Pro, enter the team vault ID, and pull. All variables populate their local .env instantly. The whole onboarding step takes 20 seconds.
Someone adds a new variable:
They push to the vault. Everyone else gets a notification the next time they open the panel. One click to pull the update.
Separating development and production secrets
One of the most important practices for team secrets management is never sharing production credentials with developers who don't need them.
The pattern:
- Development vault — shared with all developers, contains local dev credentials (localhost database, test API keys, Stripe test mode)
- Staging vault — shared with senior developers and DevOps, contains staging environment credentials
- Production vault — accessed only by automated deployment pipelines and on-call engineers, never developer laptops
ENV Manager Pro supports multiple vaults per project, so you can enforce this separation without complex tooling.
The onboarding checklist
For a new developer joining a team using ENV Manager Pro:
1. Install ENV Manager Pro from the VS Code marketplace (30 seconds)
2. Open the project in VS Code — the ENV Files panel appears automatically
3. Enter the team vault ID (provided in the project README or by a teammate)
4. Pull the development vault — all variables populate instantly
5. Run the missing key check to confirm everything is there
Total time: under 3 minutes, compared to 30–60 minutes of asking teammates for individual values, checking Notion docs, and debugging missing variables.
What about .env.example?
The .env.example pattern doesn't disappear in this model — it becomes even more important. It's the source of truth for which variables are required (without their values), so:
- Developers without vault access can still understand what the project needs
- CI/CD pipelines can validate that all required variables are set
- The missing key checker in ENV Manager Pro can flag gaps between your
.envand.env.example
Keep .env.example up to date. Push it to git. Use ENV Manager Pro's missing key check to flag when someone adds a variable to .env but forgets to add the key (without a value) to .env.example.
The migration path from "Slack DMs"
If your team is currently sharing secrets over Slack or in a Notion doc, here's the migration:
1. Audit what you have — collect all current secrets from wherever they live
2. Categorise by environment — separate dev, staging, and production credentials
3. Set up a team vault — one developer creates the vault and pushes the dev secrets
4. Document the vault ID in your README — just the ID, never the master key
5. Rotate anything that was shared insecurely — assume Slack messages and Notion docs have been read by people who shouldn't have seen them
6. Brief the team — a 10-minute walkthrough of pull/push workflow
The whole migration takes an afternoon. The time saved in onboarding future developers pays for it within a month.
Manage your secrets the right way
ENV Manager Pro is free to install — no account, no config, works in 30 seconds.