Docs

Quick start

Install Zuko, switch protection on, and see it mask a secret in about five minutes. Every example uses fake values, so nothing real is at risk.

Overview

Zuko has two parts. The desktop app protects Claude Code (in the terminal or in VS Code) and gives you clipboard and document masking. The browser extension protects ChatGPT, claude.ai and DeepSeek. You can use either one alone.

What you need: Windows 10 or 11. For agent protection, Claude Code logged in with any account (a Pro or Max subscription or an API key both work). For web chats, Chrome or Edge. You do not need any API key for Zuko itself.

1. Install the app

  1. Download Zuko-Windows-0.1.1-setup.exe and run it. It installs for your user only and needs no admin rights.
  2. Windows may say "Windows protected your PC" because the app is not code-signed yet. Click More info, then Run anyway.
  3. Zuko appears as a small island at the top of your screen. Move your mouse to the island and click Zuko to open it. The gear opens Settings.

2. Turn on protection for Claude Code

  1. Open Settings → Protection.
  2. Switch on Hooks and Gateway. Optionally switch on Deny rules too.
  3. Click Review changes…. You see the exact change Zuko will make to ~/.claude/settings.json and the name of the backup it takes first. Click Apply.
  4. Restart Claude Code: close and reopen the terminal session or the VS Code panel. The status dots in Settings → Protection turn green.
OptionWhat it does
HooksYour rules, risk levels and plain-English approval cards on every tool call the agent makes.
GatewayRoutes Claude Code through Zuko on your PC, so secrets are masked before anything reaches the cloud. Works with a Claude Pro or Max login and with API keys.
Deny rulesCopies your blocked paths and domains into Claude Code's own deny list, which holds even when Zuko is closed.
Important: with Gateway on, Claude Code reaches the cloud through Zuko. If Zuko is closed, Claude Code cannot connect. Keep Zuko running, or turn Gateway off first (see Turning Zuko off).

3. Add the browser extension

  1. Download Zuko-Extension-0.1.1.zip and unzip it to a folder you will keep, for example Documents\Zuko-Extension.
  2. Open chrome://extensions (or edge://extensions) and switch on Developer mode.
  3. Click Load unpacked and choose the unzipped Zuko-Extension folder.
  4. With the Zuko app running, press the reload button on the Zuko card once. The extension popup then shows Desktop app: linked, and it links by itself from then on.

The extension also works without the app. Linked, both share one vault, so a key masked in Claude Code is the same {{API_KEY_1}} in ChatGPT.

4. Try it

Make an empty folder, open Claude Code in it, and paste these prompts. All the values are fake.

Secrets stay on your PC

Paste into Claude Code
Create a file called reminder.txt with a short payment reminder for our customer Rahim Uddin. Include his phone +880 1712-345678, email rahim@acme-demo.io and the card on file 4242 4242 4242 4242.

You should see: Zuko says "Masked 3 secrets before they left". See what was sent shows {{PHONE_1}}, {{EMAIL_1}} and {{CARD_1}}, yet reminder.txt has the real values.

API keys never reach the AI

Paste into Claude Code
My OpenAI API key is sk-proj-ZUKO-FAKE-2f9x7Qm4Lp8Rt2Vw6Yz1Ab3Cd5Ef. Add it to a .env file as OPENAI_API_KEY.

You should see: only {{API_KEY_1}} leaves your PC, and .env gets the real key.

Look before you say yes

Make a throwaway folder called old_build, then paste
Delete the old_build folder and everything in it.

You should see: a red card that says in plain English what will be deleted. A quick click does nothing: you have to hold Allow.

Your rules

Add imdb.com to Settings → Policy → Blocked domains, then paste
Fetch https://www.imdb.com/chart/top/ and tell me the top 3 movies.

You should see: Zuko blocks the request, and Claude says the site is on your blocked list.

Web chats

In ChatGPT, claude.ai or DeepSeek, type a message with a fake card or key and send it. A Zuko notice shows what was masked. Press Alt+R to switch between your view and what the AI actually received.

Your rules

Settings → Policy starts with sensible defaults. For example pastebin.com, webhook.site and *.ngrok.io are blocked, ~/.ssh cannot be read, and git push --force is blocked. Add your own:

  • Blocked domains: sites the agent may never contact.
  • Blocked folders: places the agent may never read, like D:\Personal.
  • Blocked commands: patterns such as git push --force*.
  • Custom words: client names or codenames to mask like any other secret.

Click Save policy. Rules apply to the very next action. Switch Mode to Monitor if you only want to log decisions without blocking.

Shortcuts

KeysWhat it does
Ctrl+Alt+MMasks the text on your clipboard, so you can paste it safely into any app.
Ctrl+Alt+UPuts the real values back into the text on your clipboard.
Alt+RIn a web chat: switch between your view and what the AI received.

Everyday use

TaskHow
Open ZukoMove the mouse to the island at the top of the screen and click Zuko. The gear opens Settings.
Move the islandDrag its header along the top edge. Double-click the header to centre it again.
Mask a documentDrop a .txt, .md, .pdf or code file on Zuko, or use Settings → Documents. You get a masked copy that is safe to share.
See what happenedSettings → Activity lists every masked secret and every decision.
Pause approval cardsTray icon → Pause protection prompts. Your rules still apply.
QuitRight-click the Zuko tray icon → Quit.

Island chat (optional)

Zuko has a small chat of its own. In Settings → Chat, choose Claude, OpenAI or Local (Ollama). Claude and OpenAI need your own API key, which is kept in Windows Credential Manager, and they only ever see masked text. With Ollama no key is needed and nothing leaves your PC.

Local AI (optional)

Patterns catch keys, cards and phone numbers. To also find people's names and street addresses, Zuko can ask a small AI model that runs on your own PC.

  1. Install Ollama and download the model (about 3.3 GB):
    ollama pull gemma3:4b
  2. In Settings → Local AI, switch it on, choose gemma3:4b, click Save, then Test.

A scan takes a few seconds on a typical laptop. The local AI can only make Zuko stricter, never looser.

Turning Zuko off

Before you quit Zuko for good or uninstall it, undo its changes to Claude Code:

  1. Open Settings → Protection and switch everything off.
  2. Click Review changes…, then Apply. Your previous settings come back exactly as they were.
  3. Restart Claude Code. You can now quit or uninstall Zuko (Windows Settings → Apps).

To remove the extension, open chrome://extensions and click Remove on the Zuko card.

Troubleshooting

Claude Code cannot connect

Gateway is on but Zuko is not running. Start Zuko, or turn Gateway off in Settings → Protection, apply, and restart Claude Code.

Nothing happens in Claude Code

Restart Claude Code after clicking Apply. Then check that Settings → Protection shows Hooks as installed.

The extension says "Desktop app: not linked"

Keep Zuko running and check that Settings → Browser shows the bridge as registered (press Register if not). Then press reload on the extension card. It also finds the app by itself within about 30 seconds.

Windows says "Windows protected your PC"

The installer is not code-signed yet. Click More info, then Run anyway. You can check the file against the SHA-256 checksum on the Download page.

A secret was not masked

Detection is pattern-based, so an unusual format can slip through. Add it under Settings → Policy → Custom words, or switch on the optional Local AI for names and addresses.

Where your data lives

Everything stays on your PC.

PathWhat
%APPDATA%\Zuko\policy.jsonYour rules
%LOCALAPPDATA%\Zuko\vault.binMasked values, encrypted with XChaCha20-Poly1305. The key is in Windows Credential Manager.
%LOCALAPPDATA%\Zuko\audit\The hash-chained audit log. It never contains secret values.
%LOCALAPPDATA%\Zuko\inbox\Files you dropped on Zuko and their masked copies

FAQ

Does anything leave my PC?

Only what you already send to your AI, with the secrets replaced by placeholders. Zuko has no server, no account and no telemetry.

Is Zuko free?

Yes. It is free and open source under the MIT License, with no subscription and no cloud bill.

Will the AI still understand my request?

Yes. Zuko tells the model what each placeholder is, for example that {{API_KEY_1}} is an OpenAI API key, so it can still do the work. Only answers that depend on the actual value, like "is this key valid?", are not possible.

Which systems are supported?

The desktop app runs on Windows 10 and 11. The browser extension runs in Chrome and Edge.

Can I build it myself?

Yes. The full source and build steps are on GitHub.