Your clipboard, finally under control. VaultClip is a macOS clipboard history manager: instant access to past copies, favorites at your fingertips, passwords kept apart from the main stream — all encrypted on disk, with no cloud and no subscriptions.
It lives in the menu bar, opens with ⌘⇧V, and stays out of your way. Copy a snippet, link, screenshot, or PDF — a second later it is in history, with search and ⌘0…⌘9 quick-paste shortcuts.
Open-source fork of Yippy by Matthew Davidson: the lean UX and “panel always nearby” idea are preserved; VaultClip adds AES-GCM, filtering of copies from password managers, Favorites and Passwords tabs, up-to-date toolchains, and an open roadmap.
Repository: github.com/akarakuts/VaultClip · Changelog: CHANGELOG.md · Русский: README.ru.md
History, Favorites, and Passwords — one panel, three modes. UI in all macOS app languages.
| Keep context | Code, quotes, URLs, images — everything stays in local history until you decide otherwise. |
| Keep secrets out of the noise | Copies from 1Password, Bitwarden, and other managers never enter history; your own passwords go to the Passwords tab. |
| Keep data off the cloud | History stays on your Mac; the key lives in macOS Keychain. The app does not use the network for storage. |
VaultClip is not trying to replace a full password manager — it tames clipboard chaos and gives fast, predictable access to what you actually copy every day.
Text, code, links, colors, images, PDFs, and files in one list, with the source app icon and a timestamp. Re-copying the same content does not clutter the feed.
Pin commands, SSH strings, documentation, and templates. Favorites survive ordinary history clears and are not pruned like one-off copies.
Saved entries show a comment, login, optional site URL, and masked secret. Search by comment, login, and URL; copy via the context menu. These rows do not appear in general history.
- Background monitoring of the system pasteboard — every new copy (except filtered sources) is saved locally.
- Up to 5000 items in the model; settings can cap the displayed set (50–1500).
- Content types: text, RTF, HTML, URLs, colors, raster images, PDF, files with icon or preview.
- Deduplication within the last 20 items.
- Source app icon and timestamp on every row.
| Tab | Purpose |
|---|---|
| History | Full timeline without favorites and saved passwords. |
| Favorites | Pinned items; protected from ordinary clears. |
| Passwords | Explicitly saved secrets: comment, login, URL, ••••••••. |
Favorites and saving to Passwords are available from the context menu (right-click): add/remove favorite, save to passwords, copy login/URL/password, open URL in browser, edit, delete.
- Search (⌘\) — fuzzy text matching; for passwords, search runs on comment, login, and URL, not the secret.
- Preview (Ctrl+Space) — text, image, or Quick Look; passwords are masked outside the Passwords tab.
- Return — paste into the app that was active before the panel opened.
- ⌘0 … ⌘9 — quick paste by list position.
- Drag and drop to reorder; moving to the top updates the system clipboard.
No Dock icon — menu bar only. Dock the panel left, right, top, bottom, centered, or full screen; the position is remembered. Change it from the Position menu or with Ctrl+Alt+⌘ + arrow keys.
Menu items: Toggle Window (default ⌘⇧V), launch at login, clear history, preferences, help.
Welcome on first open requests Accessibility (needed for automatic ⌘V paste). Without it, history works; Return-to-paste does not.
UI in all macOS app languages (Localizable.xcstrings); the active language follows the system locale.
VaultClip is designed as local storage, not a sign-in service.
- Item payloads use AES-GCM (CryptoKit, 256-bit key),
VC1format + sealed box. - Key in macOS Keychain (
com.karakuts.VaultClip/history-data-key),AfterFirstUnlockThisDeviceOnly, no iCloud sync. - Metadata (favorite flag, password flag, comment, login, time, bundle id) uses the same encryption layer.
- Legacy plaintext files are read and re-encrypted on write; migration from Yippy and early VaultClip is automatic.
- History directory:
~/Library/Application Support/com.karakuts.VaultClip/history/with mode 0700. - Symlink checks on paths; sanitized pasteboard type filenames.
- Denylist of password-manager bundle ids (1Password, LastPass, Bitwarden, Dashlane, Keeper, Apple Passwords, Proton Pass, and others) and sensitive pasteboard types.
- Hardened Runtime; ATS blocks arbitrary HTTP loads. The app does not fetch history over the network.
| Permission | Why |
|---|---|
| Accessibility | One-shot ⌘V simulation into the focused app. No keystroke logging. |
| Keychain | AES key with Developer ID signing. Ad-hoc builds fall back to .history-encryption-key (0600). |
Deleting the Keychain entry history-data-key permanently breaks decryption of existing history.
~/Library/Application Support/com.karakuts.VaultClip/
├── history/ # encrypted items (per UUID)
├── instance.lock # single-instance guard (flock)
├── error.log
└── warning.log
Settings: ~/Library/Preferences/com.karakuts.VaultClip.plist (UserDefaults).
Migration from Yippy / VaultClip 1.1.2: on first launch, data moves from MatthewDavidson.Yippy and VaultClip folders; settings and encryption keys are copied automatically.
| Shortcut | Action |
|---|---|
| ⌘⇧V (default) | Open / close panel |
| ↑ / ↓, Page Up / Down | Navigate the list |
| Return | Paste selection |
| Esc | Close panel |
| ⌘0 … ⌘9 | Paste by index |
| Ctrl+Delete | Delete selection |
| Ctrl+Space | Toggle preview |
| ⌘\ | Focus search |
| Ctrl+[ / Ctrl+] | Previous / next tab |
| Ctrl+Alt+⌘←→↑↓ | Move panel on screen |
Change the panel toggle in Preferences → Hot Key.
| Path | Cost | Best for |
|---|---|---|
| Build from source (below) | Free | You, on your Mac — recommended without Apple Developer Program ($99/year) |
| DMG from GitHub Releases | Free download | Quick try; may need Gatekeeper steps if the DMG is ad-hoc signed |
| Signed + notarized DMG | $99/year Apple program | Anyone can install without warnings — requires Developer ID Application |
Apple does not offer a free Developer ID certificate. Open source does not waive the fee. Without the paid program you can still use VaultClip by building locally or accepting macOS security prompts for an unsigned/ad-hoc DMG.
Requirements: Xcode, macOS 10.15+ (Swift Package Manager resolves dependencies at build time).
git clone https://github.com/akarakuts/VaultClip.git
cd VaultClip
VAULTCLIP_SIGN_RELEASE=1 ./build-dmg.sh
./install-app.sh VaultClip.app
open /Applications/VaultClip.appVAULTCLIP_SIGN_RELEASE=1 signs with Developer ID Application if present in Keychain; otherwise with Apple Development (created by Xcode on your Mac). Both work better than ad-hoc for Accessibility (paste into other apps).
To skip signing (fastest, least reliable for Accessibility):
./build-dmg.sh
./install-app.sh VaultClip.appAlways install under /Applications — not from the DMG volume and not by dragging from the repo folder (macOS resets Accessibility when the app path changes).
./install-app.sh VaultClip.app
# or, after build-dmg.sh:
./install-app.sh dmg-staging/VaultClip.appThe script uses ditto --norsrc and preserves an existing signature when possible.
- Welcome may ask for Accessibility — required for Return-to-paste (simulated ⌘V). History works without it; automatic paste does not.
- System Settings → Privacy & Security → Accessibility — enable VaultClip once. Remove duplicate/stale entries if you reinstalled from another path.
- Optional: menu bar Launch at Login.
| Mode | Command | Accessibility | Other Macs |
|---|---|---|---|
| Ad-hoc | ./build-dmg.sh |
Often broken | Gatekeeper blocks |
| Apple Development | VAULTCLIP_SIGN_RELEASE=1 ./build-dmg.sh |
Usually OK on your Mac | Not for distribution |
| Developer ID | Same + cert in Keychain / CI secrets | OK | OK after notarization |
Signing logic: codesign-app.sh (Hardened Runtime; Keychain entitlements only with Developer ID).
Typical for ad-hoc or Apple Development DMGs on a Mac that did not build the app:
xattr -cr /Applications/VaultClip.appOr right-click VaultClip.app → Open → confirm once. Prefer build from source on that Mac to avoid this.
- Clone the repo (see Quick build above).
- Open
VaultClip.xcodeprojin Xcode (first build resolves SPM packages: RxSwift, HotKey, Fuse). - Xcode schemes:
- VaultClip — release app;
- VaultClip Beta — beta bundle;
- VaultClip XCTest — unit and UI tests.
- DMG in one command:
./build-dmg.sh(see signing table above). - Manual build (without DMG script):
xcodebuild -project VaultClip.xcodeproj -scheme VaultClip -configuration Release \
-destination 'platform=macOS' -derivedDataPath DerivedData \
CODE_SIGN_IDENTITY="-" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO build
COPYFILE_DISABLE=1 ditto --norsrc DerivedData/Build/Products/Release/VaultClip.app VaultClip.app
VAULTCLIP_SIGN_RELEASE=1 ./codesign-app.sh VaultClip.app
./install-app.sh VaultClip.app- Run tests:
chmod +x scripts/run-unit-tests.sh scripts/check-coverage.sh
./scripts/run-unit-tests.sh # 99 unit tests + code coverage
./scripts/check-coverage.sh # Security/History module gate (≥55%)Raw xcodebuild test (scheme VaultClip XCTest) works too; the scripts match CI flags.
UI tests need Accessibility enabled for the test runner in System Settings (local only — not run in CI).
For GitHub Release DMGs that install cleanly on any Mac, enroll in the Apple Developer Program, create Developer ID Application, export .p12, and add repository secrets:
| Secret | Content |
|---|---|
MACOS_CERTIFICATE_P12 |
Base64 of Developer ID Application .p12 export |
MACOS_CERTIFICATE_PASSWORD |
Password for that .p12 |
APPLE_ID |
Apple ID email (notarization, optional but recommended) |
APPLE_APP_SPECIFIC_PASSWORD |
App-specific password from appleid.apple.com |
APPLE_TEAM_ID |
Team ID from the developer account |
# Keychain Access → My Certificates → Developer ID Application → Export → .p12
base64 -i DeveloperID.p12 | pbcopy # paste into MACOS_CERTIFICATE_P12The Release workflow (tag v*) imports the cert, signs with Hardened Runtime + Keychain entitlements, and notarizes when Apple ID secrets are set.
Re-enable VaultClip in System Settings → Privacy & Security → Accessibility. Use ./install-app.sh or ditto --norsrc — do not copy .app from the build tree with Finder drag-and-drop.
VaultClip is an active open-source fork (GPLv3). Yippy provided a proven edge-of-screen UX; the next step is a secure local layer between macOS and your clipboard data.
Already shipped: AES-GCM encryption, Favorites and Passwords tabs, password-manager filtering, RU/EN localization, Yippy migration, Hardened Runtime, CI (build, SwiftLint baseline, unit tests, coverage gate), AppEnvironment composition root (v2.3.1).
On the horizon (driven by community priorities and issues):
- sync only when you choose — local network or encrypted volume, no mandatory cloud;
- extensible filtering rules and tags for long history;
- accessibility improvements and App Sandbox while keeping paste via Accessibility;
- widgets and quick actions for common workflows (snippets, markdown, DevOps commands).
Ideas, bugs, and pull requests are welcome: issues · pull requests.
docs/architecture.md— layers,AppEnvironment, on-disk layout, testing;docs/linux-port-plan.md— portable Rust core roadmap;VaultClip/Sources/— application code;AppEnvironmentis the composition root after launch;VaultClip/Sources/Models/Security/— Keychain, AES-GCM, migrations;VaultClip/Resources/Localizable.xcstrings— localized UI strings (all macOS app languages);VaultClipTests/— unit tests (99);VaultClipUITests/— UI tests (local);scripts/run-unit-tests.sh,scripts/check-coverage.sh— same as CI;graphify-out/graph.html— code graph (graphify update .).
GNU General Public License v3.0 or later (GPL-3.0-or-later). See LICENSE.
Fork of Yippy (Matthew Davidson), originally MIT. GPLv3 applies to VaultClip as a whole. Third-party code (RxSwift, HotKey, Fuse, vendored Default and LoginServiceKit) remains under its respective licenses.
Aleksey Karakuts — aleksey@karakuts.com
Copyright (C) 2019 Matthew Davidson; Copyright (C) 2026 Aleksey Karakuts <aleksey@karakuts.com>. Licensed under GPLv3 or later.