AppLock

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.

chatgpt.com

Lock a chat in the sidebar. It disappears for anyone who isn’t you.

2 chats visible that you probably want hidden.

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.

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.

  1. Install the MCP server

    npm install -g https://github.com/Harmantaj/applock-mcp/releases/download/v0.4.1/applock-mcp-0.4.1.tgz

    This adds the applock-mcp command.

  2. Create your vault

    applock-mcp setup

    Choose a passphrase, and say yes to Touch ID if your Mac has it. The passphrase can’t be recovered, so store it somewhere safe.

  3. Connect your AI apps

    applock-mcp install claude

    This runs claude mcp add --scope user applock -- applock-mcp for 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.

  4. 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.

ToolWhat it doesNeeds unlock
applock_statusLocked or unlocked, how many chats are hidden, and whether the extension is connected.No
list_sessionsLists visible Claude Code and Antigravity sessions with their titles, newest first.No
hide_sessionEncrypts 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_chatsLists ChatGPT, Claude and Gemini chats in your browser sidebar, and which one is open.No
hide_browser_chatLocks a web chat through the extension. Use current for the chat that’s open.No
unlock_vaultShows Touch ID, or opens the passphrase page on your computer. From your phone it returns a one-time unlock link instead.—
lock_vaultLocks the vault and the browser straight away.No
list_hiddenLists everything in the vault.Yes
read_hiddenReads a hidden session’s transcript without restoring it. The text then appears in the current chat.Yes
restore_hiddenPuts 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.