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
- Visit the DotVault Extension in the Chrome Web Store
- Click Add to Chrome
- Grant permissions when prompted
Firefox Add-ons
- Visit DotVault Extension on Firefox Add-ons
- Click Add to Firefox
- Confirm installation
Manual Installation (GitHub release or local build)
From a GitHub release
- Download
dotvault-extension-<version>.zipfrom the releases page (not the source archive). - Unzip it to a folder (for example
~/dotvault-extension). - Open
chrome://extensions, enable Developer mode, click Load unpacked, and select the unzipped folder (the folder that containsmanifest.jsonat 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
- Click the DotVault icon in your browser toolbar
- 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. - 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
- Choose your project from the dropdown
- Select the environment to inject (e.g.,
production,staging) - 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:
- Navigate to your project's Environment Variables page
- Click the DotVault icon
- Click Fill Variables
- 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
- Navigate to a supported platform's environment variables page
- Click the floating DotVault button (bottom-right corner)
- Review the variables to be injected
- Click Confirm to fill all fields
Selective Injection
- Open the DotVault popup (click toolbar icon)
- Select specific variables to inject
- Click Inject Selected
- Variables are filled into detected fields
Keyboard Shortcuts
Alt+Shift+D(Windows/Linux) orOption+Shift+D(Mac): Open DotVault popupCtrl+Enter(Windows/Linux) orCmd+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
- Refresh the page
- Check if platform is supported
- Verify URL matches expected pattern
- Try manual field selection
Connection Issues
- Check DotVault account status
- Re-authenticate the extension
- Clear extension cache
- Re-install if persistent
Injection Failures
- Verify you have editor access to the project
- Check if environment exists
- Ensure variables are not empty
- Review browser console for errors
Platform Updates
If a platform changes their UI:
- Check for extension updates
- Report the issue: support@dotvault.io
- 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
- 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",
},
},
};
- Add injection logic to
src/content.ts - Test thoroughly
- 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
- Documentation: https://docs.dotvault.io/extension
- Community: https://community.dotvault.io
- Email: support@dotvault.io
- GitHub Issues: https://github.com/dotvault/extension/issues
Reporting Bugs
Include:
- Browser version
- Extension version
- Platform being used
- Steps to reproduce
- Screenshots if applicable
Feature Requests
Submit via:
- GitHub Discussions
- Community forum
- Email to feedback@dotvault.io
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