Skip to main content

Browser Extension

The DotVault Browser Extension enables one-click secret injection into popular deployment platforms including Vercel, Netlify, Railway, and more.

Installation​

Chrome Web Store​

  1. Visit the DotVault Extension in the Chrome Web Store
  2. Click Add to Chrome
  3. Grant permissions when prompted

Firefox Add-ons​

  1. Visit DotVault Extension on Firefox Add-ons
  2. Click Add to Firefox
  3. Confirm installation

Manual Installation (GitHub release or local build)​

From a GitHub release

  1. Download dotvault-extension-<version>.zip from the releases page (not the source archive).
  2. Unzip it to a folder (for example ~/dotvault-extension).
  3. Open chrome://extensions, enable Developer mode, click Load unpacked, and select the unzipped folder (the folder that contains manifest.json at its root).

From this monorepo

pnpm install
pnpm build:extension
# Load unpacked: packages/browser-extension/dist/

After updating the extension, click Reload on chrome://extensions so the background service worker picks up changes.

Setup​

1. Connect to DotVault​

  1. Click the DotVault icon in your browser toolbar
  2. Server URL (required first step) — enter your instance base URL (same as NEXT_PUBLIC_APP_URL / BETTER_AUTH_URL), then click Save & continue. When Chrome prompts for host access, allow it.
  3. Sign in with your DotVault email and password

Build-time default (optional): When you run pnpm build:extension, the build reads DOTVAULT_API_URL, then BETTER_AUTH_URL, then NEXT_PUBLIC_APP_URL from the repo root .env / .env.local (same order as the CLI). If set, that URL is baked into the extension and the setup step is pre-filled. Generic GitHub release zips are built without those env vars, so end users always configure the server in the popup.

# Example: org-specific extension build
DOTVAULT_API_URL=https://vault.example.com pnpm build:extension

2. Select Project​

  1. Choose your project from the dropdown
  2. Select the environment to inject (e.g., production, staging)
  3. The extension will remember your selection

Supported Platforms​

Vercel​

URL Pattern: vercel.com/dashboard/*/settings/environment-variables

Features:

  • Auto-detect environment variable fields
  • One-click fill all variables
  • Individual variable injection
  • Preview before injection

Usage:

  1. Navigate to your project's Environment Variables page
  2. Click the DotVault icon
  3. Click Fill Variables
  4. Review and confirm

Netlify​

URL Pattern: app.netlify.com/sites/*/settings/deploys#environment-variables

Features:

  • Bulk import support
  • Individual key-value injection
  • Auto-detect existing variables

Railway​

URL Pattern: railway.app/project/*/settings/variables

Features:

  • Service-specific variable injection
  • Shared variable support
  • Auto-detect service selection

GitHub​

URL Pattern: github.com/*/settings/secrets/actions

Features:

  • Repository secret injection
  • Organization secret support
  • Environment-specific secrets

Render​

URL Pattern: dashboard.render.com/web/*/env

Features:

  • Environment group support
  • Secret file injection
  • Build-time vs runtime variables

Heroku​

URL Pattern: dashboard.heroku.com/apps/*/settings

Features:

  • Config var injection
  • Pipeline promotion support

AWS Amplify​

URL Pattern: console.aws.amazon.com/amplify/home

Features:

  • Environment variable injection
  • Branch-specific variables

Cloudflare Pages​

URL Pattern: dash.cloudflare.com/*/pages/view/*

Features:

  • Production vs preview variables
  • Encrypted variable support

Supabase​

URL Pattern: app.supabase.com/project/*/settings/api

Features:

  • API key management
  • Database URL injection

Usage​

Quick Fill​

  1. Navigate to a supported platform's environment variables page
  2. Click the floating DotVault button (bottom-right corner)
  3. Review the variables to be injected
  4. Click Confirm to fill all fields

Selective Injection​

  1. Open the DotVault popup (click toolbar icon)
  2. Select specific variables to inject
  3. Click Inject Selected
  4. Variables are filled into detected fields

Keyboard Shortcuts​

  • Alt+Shift+D (Windows/Linux) or Option+Shift+D (Mac): Open DotVault popup
  • Ctrl+Enter (Windows/Linux) or Cmd+Enter (Mac): Confirm injection

Security​

Data Protection​

  • No data storage: Secrets are never stored in the browser
  • Memory only: Variables exist only during the injection session
  • Encrypted transport: All communication uses TLS 1.3
  • No logging: Injected values are never logged

Permissions​

The extension requests minimal permissions:

  • Active tab: To detect environment variable fields
  • Storage: To save preferences (not secrets)
  • Host permissions: Only for supported platforms

Privacy​

  • No analytics or tracking
  • No third-party services
  • Open source (MIT license)
  • Auditable code

Configuration​

Extension Options​

Access via: Right-click extension icon → Options

General:

  • Default project
  • Default environment
  • Auto-fill on page load
  • Show floating button

Security:

  • Require confirmation before injection
  • Mask values in preview
  • Auto-lock after inactivity

Platforms:

  • Enable/disable specific platforms
  • Custom URL patterns
  • Platform-specific settings

Per-Project Settings​

Configure different defaults for each project:

{
"project-abc": {
"defaultEnv": "staging",
"autoFill": false,
"requireConfirmation": true
},
"project-xyz": {
"defaultEnv": "production",
"autoFill": true,
"requireConfirmation": false
}
}

Troubleshooting​

Blank popup (header only, no sign-in form)​

Usually the background service worker failed to start (often after loading an older build). On chrome://extensions, click Reload on DotVault, then open the popup again. If it persists, remove the extension, unzip a fresh copy from the latest GitHub release, and load unpacked again.

Wrong server / login fails​

The footer link shows your configured instance host. On sign-in, set Server URL to your real dashboard origin (not a marketing domain unless that is where your app runs). When you click Save & continue, approve the Chrome permission prompt for that host (the prompt must be accepted from the popup click — if you see “must be called during a user gesture”, reload the extension and try again).

“Invalid origin” on sign-in​

Better Auth rejects extension requests when browser cookies are sent with a chrome-extension:// origin. The extension uses credentials: omit and the server trusts chrome-extension://* (see src/lib/auth.ts). Redeploy the web app after pulling this change, then reload the extension and sign in again.

“This function must be called during a user gesture”​

Chrome only allows the host-permission prompt from the popup click handler. Reload the extension at chrome://extensions, open the popup, and click Save & continue again. Do not deny the permission prompt.

Extension Not Detecting Fields​

  1. Refresh the page
  2. Check if platform is supported
  3. Verify URL matches expected pattern
  4. Try manual field selection

Connection Issues​

  1. Check DotVault account status
  2. Re-authenticate the extension
  3. Clear extension cache
  4. Re-install if persistent

Injection Failures​

  1. Verify you have editor access to the project
  2. Check if environment exists
  3. Ensure variables are not empty
  4. Review browser console for errors

Platform Updates​

If a platform changes their UI:

  1. Check for extension updates
  2. Report the issue: support@dotvault.io
  3. Use manual copy-paste as workaround

Development​

Building from Source​

# From the dot-vault monorepo root
pnpm install
pnpm build:extension

# Load unpacked from packages/browser-extension/dist/

Adding New Platform Support​

  1. Add platform configuration to src/platforms.ts:
export const platforms = {
newplatform: {
name: "New Platform",
urlPattern: /newplatform\.com/,
selectors: {
envRow: ".env-row",
keyInput: 'input[name="key"]',
valueInput: 'input[name="value"]',
addButton: "button.add-env",
saveButton: "button.save",
},
},
};
  1. Add injection logic to src/content.ts
  2. Test thoroughly
  3. Submit PR

Testing​

# Unit tests
npm run test:unit

# E2E tests
npm run test:e2e

# Manual testing
npm run test:manual

Privacy Policy​

Data Collection​

The DotVault extension collects:

  • Extension preferences: Project selection, settings
  • Usage statistics: Feature usage (anonymized)
  • Error reports: Crash logs (opt-in)

Data NOT Collected​

  • Secret values
  • Environment variable contents
  • Platform credentials
  • Browsing history

Third Parties​

No data is shared with third parties except:

  • DotVault API (for fetching secrets)
  • Chrome Web Store/Firefox Add-ons (for updates)

Support​

Getting Help​

Reporting Bugs​

Include:

  1. Browser version
  2. Extension version
  3. Platform being used
  4. Steps to reproduce
  5. Screenshots if applicable

Feature Requests​

Submit via:

Changelog​

v1.2.0 (Latest)​

  • Added Railway support
  • Improved Vercel detection
  • Keyboard shortcuts
  • Bug fixes

v1.1.0​

  • Added Netlify support
  • Added GitHub support
  • Floating button option
  • Security improvements

v1.0.0​

  • Initial release
  • Vercel support
  • Basic injection
  • Project selection

License​

MIT License - See LICENSE file for details