deny.sh from your terminal.
Encrypt, protect, and manage secrets without leaving the command line. 9 commands, zero runtime dependencies.
Install
npx deny-sh
npm install -g deny-sh
Commands
.env files with deniable encryption. Automatically adds .deny/ to .gitignore.
.deny/ directory in the current project and configure the local settings file.
.deny/, and API usage summary.
Integrations
1Password
Sync control files to your 1Password vault via the op CLI. Push, pull, list, and check sync status.
deny-sh 1p pushdeny-sh 1p pulldeny-sh 1p listdeny-sh 1p status
Bitwarden
Sync control files to Bitwarden via the bw CLI. Same push/pull/list/status interface as 1Password.
deny-sh bw pushdeny-sh bw pulldeny-sh bw listdeny-sh bw status
Cloud backup
Encrypted archives to local disk, Google Drive, Dropbox, or S3. Configure once, back up anywhere.
deny-sh backup pushdeny-sh backup pulldeny-sh backup listdeny-sh backup config
The .deny/ directory
By convention, deny-sh init creates a .deny/ directory in your project. This is where control files, encrypted backups, and local config live.
.deny/ config.json # local settings (API key, vault path) *.control.json # control files for each encrypted item *.decoy.json # decoy control files backups/ # local encrypted archive copies
Add .deny/*.control.json to your .gitignore. deny-sh env protect does this automatically for .env files.
Size and dependencies
Uses only node:crypto from the Node.js standard library. Nothing to audit, nothing to update, nothing that can supply-chain you.