name: diff4 description: Preview git diffs and files using the diff4 CLI. Use when the user wants to see code changes, review files content securely via diff4 metadata: author: diff4 version: "0.1.0"
diff4 - Encrypted Diff & File Sharing
diff4 encrypts diffs and files client-side (AES-256-GCM) before uploading. The server never sees plaintext. Recipients need the passphrase to decrypt.
Prerequisites
diff4must be installed and available on PATH. Usenpm i -g @diff4/clito install.- A passphrase must be configured (see setup below)
Commands
Share the latest commit diff
diff4 git-latest
Runs git diff HEAD~1, encrypts the result, and uploads. Use when the user says "preview my last commit" or "send the latest diff."
Share staged changes
diff4 git-staged
Runs git diff --staged, encrypts, and uploads. Use when the user says "preview my staged changes" or "send what's about to be committed."
Share arbitrary files
diff4 files path/to/file1.ts path/to/file2.ts
Reads each file (UTF-8 text only), bundles them as JSON, encrypts, and uploads. Supports any number of paths (relative or absolute).
Key management
diff4 key-gen [key]- Generate or set the encryption passphrasediff4 key-get- Print the current passphrase
Options
All upload commands (git-latest, git-staged, files) accept:
| Flag | Description |
|---|---|
-s, --server <url> |
Override the diff4 server URL. Default: https://diff4.com (or DIFF4_SERVER env var) |
-p, --passphrase <key> |
Override the passphrase for this command only. Default: DIFF4_PASSPHRASE env var |
Gotchas
- Empty diffs fail gracefully.
git-latestandgit-stagedwill error if there is nothing to share. - Binary files are not supported.
diff4 filesreads files as UTF-8 text. - Server is configurable. Self-hosted instances can be set via
DIFF4_SERVERenv var or-sflag. - The passphrase must be shared out-of-band. diff4 only encrypts — recipients need the same passphrase to decrypt.
- key-gen updates existing keys. If
DIFF4_PASSPHRASEalready exists in the shell config, key-gen replaces it in-place.
Typical workflow
- User asks to see a diff or files
- Verify setup: run
diff4 key-get(if it fails, rundiff4 key-genand tell user to source their rc file) - Run the appropriate command (
git-latest,git-staged, orfiles <paths>) - Return the URL from the response to the user
- Remind the user that recipients need the passphrase to decrypt