Secrets Management & Key Vault Infrastructure4 min readUpdated September 2026

Running Doppler or Vault Across a Dev Shop's Client Codebases

A development shop should isolate each client's secrets in its own Doppler project or Vault namespace, so credentials never mix between engagements and can be handed back cleanly when the work ends. That structure matters more than the tool, because a shop juggles several client codebases at once, each with its own vendor integrations.

Vendors Covered in this Article

Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.

The Moment a New Engagement Starts

The best time to decide how a client's secrets will be stored is before the first commit, not after a contractor asks where the staging database password lives. Set up an isolated space for that client's credentials from day one, whether that's a dedicated Doppler project or a Vault namespace, so the habit of separating client A's secrets from client B's never has a chance to slip.

Where Doppler Fits a Shop Juggling a Dozen Codebases

Doppler's low setup cost matters most when your team is context-switching between clients throughout the week. A new project can have its own Doppler project running in minutes, synced to that client's CI pipeline and hosting platform, without a dedicated engineer standing up infrastructure first. For a shop where billable hours matter, the time you don't spend configuring a vault is time you can spend on the client's actual product.

Where Vault Fits Once You're Running Client Infrastructure Yourself

If your shop takes on ongoing infrastructure ownership for a client, not just a build-and-hand-off engagement, Vault's dynamic secrets become worth the operational cost. A Vault-issued database credential that expires automatically after a few hours means a compromised staging environment doesn't hand an attacker a password that still works next week. That protection matters more the longer you expect to be the one running a client's systems.

Handing the Keys Back at the End of an Engagement

A clean handoff means the client can operate their own systems the day you leave, with no dependency on a tool only your shop's account can access. Doppler's project-level structure makes ownership transfer straightforward: change the account owner, and the client's credentials go with it. Vault, especially a self-hosted instance your shop stood up, is harder to transfer cleanly, since the client inherits the operational burden of running it themselves.

For a clean handoff at the end of an engagement:

  • Transfer ownership of the client's Doppler project so their credentials go with it and they depend on no account of yours.
  • Plan the migration early if you self-hosted Vault for them, since it's harder to transfer cleanly than a hosted project.
  • Revoke each contractor's access to the client's secrets the same day their work ends, not at the end of the billing cycle.
  • Rotate any credential a contractor may have copied locally rather than assuming those copies were deleted.
  • Check that no previous client's keys survived in reused boilerplate or staging configuration.

A Mixed Approach for a Growing Shop

Many shops end up running Doppler as the default for new engagements, reserving Vault for the handful of clients whose infrastructure they manage long-term and whose systems justify dynamic, short-lived credentials. Deciding this per client, rather than picking one tool for the whole shop, keeps setup cost proportional to what each engagement actually needs.

A Common Mistake: A Staging Environment That Still Has an Old Client's Key

Shops that reuse boilerplate across engagements sometimes copy a staging environment's configuration wholesale into a new client's project, variable names and all. If the old client's Stripe or SendGrid key was still active in that staging config, it comes along for the ride, sitting unused in a new client's environment until someone stumbles on it during a security review, or worse, until it gets triggered by accident.

The fix is a short checklist applied to every new engagement: before a new client's environment goes live, confirm every variable in it belongs to that client specifically, not to whatever template the shop started from. A Doppler project created fresh per client, rather than duplicated from an old one, avoids this by construction, since there's nothing to carry over in the first place.

A Worked Example: Scoping a New Engagement Before the First Commit

A new client engagement kicks off on a Monday. Before any code is written, create that client's dedicated project, invite only the engineers actually staffed on the work, and add the first known credential, typically a staging database password or a third-party API key the client has already provided. This takes less time than the client kickoff call itself.

As the engagement grows, new integrations get added to that same scoped project rather than a shared one, and by the time the project wraps, every credential tied to it lives in one place instead of scattered across whoever happened to set each one up. Handoff at the end becomes a single ownership transfer instead of a scavenger hunt through old Slack messages and forgotten configuration files.

What This Actually Costs You to Run, and How to Price It

Setting up a dedicated project or namespace for a new client takes time, and so does tearing one down cleanly when the engagement ends. That time belongs in the estimate you send the client, not in the hours you quietly absorb between billable work.

For a fixed-bid engagement, add a line item for initial secrets setup and final handoff, even if it's small. For a retainer, treat ongoing access changes, adding a new contractor, revoking an old one, rotating a credential after a scope change, as part of the monthly retainer rather than a favor you do for free. Clients rarely push back on this once you frame it as part of keeping their systems auditable, not as padding.

If a client specifically asks for a dedicated Vault namespace instead of a shared Doppler team plan, that request usually comes with more operational work attached, and the estimate should reflect that difference before you agree to it.

Executive Capability Standard

What Good Looks Like

A software development shop keeps every client's secrets in an isolated project or namespace, revokes contractor access the same day a person rolls off an engagement, and can hand a client full ownership of their credentials at the end without exposing another client's data.

Building The Capability (5-Stage Skill Ladder)

1. Learn:Review every active client project for shared logins, hard-coded API keys, or a single .env file reused across more than one client's codebase.
2. Do Manually:Create a separate folder of credentials per client in a password manager and update each one by hand as contractors roll on or off a project.
3. Delegate:Give a lead engineer on each engagement responsibility for that client's secrets, including revoking access the day a contractor's work ends.
4. Automate:Set up a Doppler project or Vault namespace per client so access and rotation are scoped automatically to that engagement.
5. Buy:Build a standard onboarding and offboarding runbook that provisions and revokes client-scoped credentials automatically as staff move between projects.

How to Get Started

Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.

Frequently Asked Questions

Should each client project get its own Doppler project or Vault namespace?

Yes. Isolating each client's secrets in its own project or namespace means a mistake in one client's access list can't expose another client's credentials, and it makes handing a project back to the client at the end of the engagement much simpler.

What happens to secrets access when a contractor rolls off a project?

Revoke their access to that client's secrets store the same day their work ends, not at the end of the billing cycle. If they had local copies of any credentials, rotate those credentials too rather than assuming they were deleted.

Is it worth self-hosting Vault for a five-person dev shop?

Usually not, unless your shop is running production infrastructure for clients long-term and needs dynamic, short-lived database credentials. For most project-based engagements, the operational overhead of running Vault outweighs what a lighter tool like Doppler already covers.

About the numbers

This guide doesn't quote a sourced benchmark. Figures in it are estimates or general guidance, so check them against your own numbers.

Related Guides