Some chats are nobody else’s business.
AppLock hides the AI conversations you choose and locks them behind Touch ID or a password, like Locked Notes on your Mac. Whoever borrows your laptop sees every other chat, just not those.
Works with ChatGPT, Claude, Gemini, Claude Code and Google Antigravity.
Free and open source. MIT licence. Your chats and keys never leave your computer.
Lock a chat in the sidebar. It disappears for anyone who isn’t you.
Two pieces, one lock
Web chats live on the provider’s servers, so no AI tool can remove them from ChatGPT’s sidebar on its own. AppLock pairs a browser extension, which does the hiding on the page, with an MCP server that encrypts local chat history and lets any AI assistant lock things for you.
Your AI assistant
Claude Code, Antigravity or ChatGPT. You say “lock this chat”.
AppLock MCP server
Runs on your computer. Hides Claude Code and Antigravity sessions by encrypting them into the vault.
AppLock extension
Hides locked ChatGPT, Claude and Gemini chats and covers them with a lock screen.
Hiding never needs your password
Each session is sealed with the vault’s public key. Anyone, including the AI, can put things in. Only Touch ID or your passphrase can take them out.
Your passphrase never goes near the AI
When a tool needs the vault open, your Mac shows the Touch ID sheet, or a private page opens on 127.0.0.1. The model only learns “unlocked”.
The AI can lock, never reveal
The bridge between the MCP server and your browser only accepts lock commands. Showing a locked web chat always takes Touch ID or the password in the browser.
It locks itself again
Unlocking lasts a few minutes, then everything is hidden again. Restarting the browser or the AI client also locks it.
Install
You need a Mac, Linux or Windows computer with Node.js 20 or newer, and Chrome, Edge, Brave or Arc for web chats. Touch ID works on Macs that have it; everywhere else you use the passphrase.
-
Install the MCP server
npm install -g https://github.com/Harmantaj/applock-mcp/releases/download/v0.4.1/applock-mcp-0.4.1.tgzThis adds the
applock-mcpcommand. -
Create your vault
applock-mcp setupChoose a passphrase, and say yes to Touch ID if your Mac has it. The passphrase can’t be recovered, so store it somewhere safe.
-
Connect your AI apps
applock-mcp install claudeThis runs
claude mcp add --scope user applock -- applock-mcpfor you. Start a new Claude Code session and try “hide my session about the billing refactor”, or “hide this session” to hide the one you’re in once it ends.applock-mcp install antigravityThis adds AppLock to
~/.gemini/config/mcp_config.json, which Antigravity 2.0, the IDE and the CLI share. In the agent panel open … › Manage MCPs › Refresh.Use AppLock from Claude everywhere: the web, the Claude desktop app and the Claude iPhone and Android apps. It works as a remote control for your Mac: lock everything now, hide a Claude Code session, or lock a ChatGPT chat in your Mac’s Chrome. It can’t hide chats inside the phone apps themselves, and your Mac needs to be awake and online.
1. Install Tailscale and sign in (free). It gives your Mac a private, permanent HTTPS address.
brew install --cask tailscale-appOr get it from the Mac App Store. Open it from the menu bar and log in.
2. Run one command.
applock-mcp install phoneIt starts AppLock in the background, turns on Tailscale Funnel for AppLock only (never for a port another app is using), checks it from the internet, and copies your connector URL to the clipboard. The first time, Tailscale opens a page asking you to allow Funnel; click Enable.
3. Add it to Claude once. On claude.ai › Customize › Connectors, choose Add › Add custom connector, name it AppLock and paste the URL. It appears in the Claude desktop and phone apps automatically; turn it on from the tools menu in a chat.
To unlock from your phone, ask Claude to unlock AppLock. It replies with a one-time link to your Mac’s unlock page (valid 5 minutes). Your passphrase goes from your phone’s browser straight to your Mac and never through Claude.
applock-mcp remote urlcopies the URL again,applock-mcp remote rotatereplaces it if it leaks, andapplock-mcp uninstall phoneturns everything off.ChatGPT connects to MCP servers only on the web (chatgpt.com), with Developer mode on a Plus, Pro, Business, Enterprise or Education plan. Its phone apps can’t use custom connectors.
Run steps 1 and 2 from the Claude on your phone tab, then in ChatGPT open Settings › Apps & Connectors › Advanced, turn on Developer mode, create a connector, paste the same connector URL and choose No authentication.
Any MCP client that can start a local command works. Add this to its MCP configuration:
{ "mcpServers": { "applock": { "command": "applock-mcp" } } } -
Add the browser extension
Download the extension (.zip, 30 KB)
Unzip it. In Chrome open
chrome://extensions, turn on Developer mode, choose Load unpacked and select the unzipped folder. AppLock opens its setup page: pick a password, save the recovery code it shows you, and turn on Touch ID.To lock a chat, open it and click the AppLock icon, right-click it in the sidebar, or press Option Shift L (Alt Shift L on Windows). Press Option Shift K to hide everything again. To see a locked chat, click the AppLock icon and unlock with Touch ID or your password.
Using Chrome on more than one computer? Install AppLock on each one. Your locks and password follow your Chrome profile through Chrome sync.
What the AI can do
Ten MCP tools. Tools that only read are marked read-only, so ChatGPT won’t ask you to confirm them.
| Tool | What it does | Needs unlock |
|---|---|---|
applock_status | Locked or unlocked, how many chats are hidden, and whether the extension is connected. | No |
list_sessions | Lists visible Claude Code and Antigravity sessions with their titles, newest first. | No |
hide_session | Encrypts a session into the vault and removes it from history. Use current for the session you’re in; it’s hidden when the session ends. | No |
list_browser_chats | Lists ChatGPT, Claude and Gemini chats in your browser sidebar, and which one is open. | No |
hide_browser_chat | Locks a web chat through the extension. Use current for the chat that’s open. | No |
unlock_vault | Shows Touch ID, or opens the passphrase page on your computer. From your phone it returns a one-time unlock link instead. | — |
lock_vault | Locks the vault and the browser straight away. | No |
list_hidden | Lists everything in the vault. | Yes |
read_hidden | Reads a hidden session’s transcript without restoring it. The text then appears in the current chat. | Yes |
restore_hidden | Puts a hidden session back where it was. | Yes |
Prefer the terminal? applock-mcp list, hide, hidden, restore, passwd and touchid on|off do the same without an AI.
What it protects, and what it doesn’t
Protects against
- Someone using your unlocked Mac or browser and scrolling through your chat history.
- Anyone opening a locked chat from a link, bookmark or browser history. They get the lock screen, and the tab title reads “Locked chat”.
- Reading hidden Claude Code or Antigravity sessions from disk. They are encrypted with X25519 and AES-256-GCM, and the key is wrapped with scrypt.
Doesn’t protect against
- The provider. ChatGPT, Claude and Gemini still store web chats on their servers.
- The ChatGPT, Claude and Gemini phone apps, which no extension can change. On iPhone, lock the whole app with Face ID instead (see below).
- Chrome on a computer where AppLock isn’t installed, or where Chrome sync is off.
- Someone who removes the extension. Chrome always lets you remove extensions, and your chats come back into view when you do.
- Malware running as you, or someone with developer tools open on your extension.
- Titles in the Claude desktop app’s own session list, which it keeps separately. The contents are still encrypted.
How the vault works
applock-mcp setup creates an X25519 key pair in ~/.applock. Hiding a session compresses its files and seals them to the public key with an ephemeral key exchange, HKDF-SHA256 and AES-256-GCM, then deletes the originals, but only after the sealed copy is on disk. The private key is stored encrypted with a key derived from your passphrase by scrypt (N = 2¹⁷). If you turn on Touch ID, a copy sits in your macOS Keychain, and a small Swift helper releases it only after a successful Touch ID check. Unlocking keeps the key in memory for your auto-lock time, then wipes it.
How the extension decides who you are
The password is stretched with PBKDF2-SHA256 (600,000 rounds) and compared in constant time; five wrong tries start an escalating lockout. The 20-character recovery code (100 bits) is stored only as a hash and is replaced every time it’s used. Locks and the password hash are kept in Chrome sync storage; titles and the Touch ID key stay on each computer. Touch ID uses WebAuthn with your Mac’s built-in authenticator. AppLock checks the challenge and the user-verification flag, and verifies the signature against the public key saved when you enrolled.
Questions
I forgot my password. What now?
In the browser: click Forgot password? on the lock screen or in the AppLock popup. Set a new password with Touch ID on your Mac, or with the recovery code AppLock showed you when you first chose a password. You get a fresh recovery code afterwards. Your locked chats stay locked the whole time.
For the MCP vault: with Touch ID on, run applock-mcp passwd. Without Touch ID the vault passphrase can’t be recovered; the encryption is real and has no back door.
Do my locks work on my other computers and my phone?
Other computers: yes. Locks and your password travel with Chrome sync, so install AppLock in Chrome on the other computer, signed in to the same Chrome profile, and your locked chats are hidden there too. Only the chat IDs sync, never the titles. Set up Touch ID separately on each Mac.
Phone: no extension can reach inside the ChatGPT, Claude or Gemini apps, and the chats still exist in your account. On iPhone (iOS 18 or later), lock the whole app instead: touch and hold the ChatGPT icon, choose Require Face ID, then confirm. Choose Hide and Require Face ID to also move it to the hidden apps folder. On Android 15 or later, put the app in Private space.
Can I hide the Claude Code session I’m in right now?
Yes. Ask Claude to “hide this session”. Claude Code keeps writing the file until the session ends, so AppLock waits until you exit, then encrypts the whole transcript in one go, including the last lines Claude Code writes on the way out.
Is it safe to put AppLock on the internet for the phone connector?
The connector URL contains a long random secret, and nothing in the vault can be read until you unlock with your passphrase or Touch ID. Unlock links are single-use, expire after 5 minutes and allow 5 tries. Anyone who gets your connector URL could still lock or hide chats, so keep it private and run applock-mcp remote rotate if it leaks. Anything you ask Claude or ChatGPT to read with read_hidden is sent to that AI provider.
Why isn’t the extension in the Chrome Web Store?
Publishing needs a developer account. Until then, loading it unpacked works in every Chromium browser, and you can read every line of it first.