BLA
BLA (Blind LLM Agents) is the open-source Blue Defense MCP and CLI built to protect software artifacts against automated AI reverse-engineering workflows.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Let Claude Code log into websites and use your API keys without ever seeing them. Works from your phone.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗You never paste a password into the chat. You type it once, into a popup on your PC or a one-time encrypted link on your phone. After that Claude can use it, but NoPeeking's tools never return the value, so it stays out of the conversation, the transcript and the model. There are a few ways it can still get out: read "Not protected" below.
NoPeeking is an independent project. It is not made by or affiliated with Anthropic.
You need Windows 10 or 11, Node.js 20 or newer and Claude Code. For website logins you also need Chrome with Claude in Chrome.
One click: download install-nopeeking.cmd and double-click it. A small window checks that Node.js and Claude Code are there and adds NoPeeking. Windows may warn that the file comes from the internet: choose "More info", then "Run anyway". It's a plain text file (a few batch lines that start Windows PowerShell on the rest), so you can open it in Notepad to read it first.
One command:
claude mcp add --scope user nopeeking -- npx -y nopeeking
Or ask Claude: paste this into Claude Code: Install NoPeeking for me by running claude mcp add --scope user nopeeking -- npx -y nopeeking.
Then restart Claude Code.
NoPeeking was called passClaude before version 0.2.0. If you used passClaude:
claude mcp remove passclaude. The one-click installer offers to do this for you.npx -y nopeeking migrate. It moves what passClaude saved to NoPeeking, inside Windows, without showing the values. Until then NoPeeking doesn't see them (list_secrets tells you how many are waiting).npx -y nopeeking install-guard. It swaps the old guard for the new one.| You say | What happens |
|---|---|
| "Save my Netflix password" | A password popup opens on your PC. You type it there. |
| "Save my GitHub token. I'm on my phone." | Claude shows a one-time link. You open it on your phone and type the token. |
| "Save my GitHub token, I'll type it on my phone" (while at the PC) | Same link, and a window on your PC shows it as a QR code to scan. It closes once the token arrives. |
| "Log into Netflix" | Claude opens the login page and clicks the password box. NoPeeking types the password, and a note in the corner of the screen says so. Claude clicks Sign in. |
| "List my GitHub repos with my GitHub token" | Claude runs the command with your token in $env:GITHUB_TOKEN. The output shows ••••(github) where the token would be. |
| "Log the GitHub CLI in with my GitHub token" | Claude runs gh auth login --with-token and NoPeeking types the token into it, the way you would at the prompt. Works for any command that reads a token or password from its input, like docker login --password-stdin. |
| "What passwords do you have?" | Names and sites only. Never values. |
Commands run in Windows PowerShell (powershell.exe, version 5.1), so Claude writes PowerShell syntax such as $env:GITHUB_TOKEN, not $GITHUB_TOKEN or %GITHUB_TOKEN%.
You ─ type once ─▶ PC popup, or phone link (encrypted on the phone)
│
▼
Windows Credential Manager (entries named nopeeking:<name>)
│
Claude ─ type_secret ──┼──▶ checks Chrome is on the right site and a password box is focused ──▶ types it
Claude ─ run_with_secret ─▶ command gets the key as an env var ──▶ output is masked ──▶ Claude
NoPeeking is an MCP server that runs on your PC. Its tools never return a secret, so NoPeeking never puts one in the chat. It can't stop every other way a secret can leak: see "Not protected" below.
| Tool | What it does |
|---|---|
list_secrets | Names, kinds and sites of saved secrets |
add_secret | Opens a password popup on the PC |
add_secret_from_phone | Gives a one-time link to type the secret on your phone, optionally shown as a QR code on the PC |
check_phone_secret | Waits up to 50 seconds for the phone to send it |
type_secret | Types a website password into Chrome, only on its site |
run_with_secret | Runs a Windows PowerShell command with secrets as environment variables or typed into its input, output masked |
delete_secret | Deletes a secret |
Commands stop after 2 minutes unless Claude asks for longer (10 minutes at most). Output is cut off at 1 MB per stream.
Website passwords and command secrets are kept apart: a website password can only be typed, and only on its own site; a command secret can only be used in commands.
Protected
netflix.com.evil.ru refused) and only into a password box. The box must be on an https page of that site: plain http pages (except localhost on your own PC) and boxes inside a frame from another site are refused. If the box loses focus while typing, typing stops at once, so no character lands anywhere else.Not protected (please read)
run_with_secret and read the command before you approve it.user:token login header, URL-encoded, hex, JSON-escaped, and the UTF-16 forms Windows uses), and any piece of 8 or more characters of them, also when Windows PowerShell wraps a long value onto the next line or shortens it with .... It can't catch pieces shorter than 8 characters, other encodings, or a value that the command deliberately reshapes, for example by reversing it, splitting it up or re-encoding it. Because it masks pieces, masking can occasionally also hide ordinary text that happens to match part of a secret. Read the command before you approve it.npx -y nopeeking install-guard
Shows the exact change, asks first, backs up ~/.claude/settings.json, then adds a hook that blocks shell commands which try to read saved secrets directly (cmdkey, the Windows credential APIs, hidden base64 PowerShell commands and similar).
The hook covers Claude Code's Bash and PowerShell tools and also NoPeeking's own run_with_secret tool. run_with_secret makes the same check itself, so it refuses these kinds of commands even if you never install the guard. The guard adds the same block for Claude Code's own shell tools.
| Environment variable | Default | What it's for |
|---|---|---|
NOPEEKING_NTFY_URL | https://ntfy.sh | Relay for phone links. Point it at your own ntfy server if you like. |
NOPEEKING_PAGE_URL | https://daniardel.github.io/nopeeking-phone/ | Where phone links open. Host the page yourself and point this at it. |
NOPEEKING_NOTIFY | on | Set to off (or 0, false, no) to stop the note in the corner of the screen each time NoPeeking types a password. |
A custom relay must use https and be reachable from your phone. The page URL must be https too, because the page needs a secure connection to encrypt. To host the page yourself, copy index.html, style.css, app.js, link.js, e2e.js and the brand folder from the docs/ folder of the GitHub repo. The page loads nothing from other sites, fonts included. The npm package only ships docs/e2e.js.
Example:
claude mcp add --env NOPEEKING_NTFY_URL=https://ntfy.example.com --scope user nopeeking -- npx -y nopeeking
Does Claude really never see my password? No NoPeeking tool returns it, and command output is masked. The project's tests check that no tool output contains a saved value, including base64 and URL-encoded copies. That is not the same as a promise that it can't leak: see "Not protected" above, for example for Claude's own browser tools and for what masking can't catch.
Where are my secrets stored?
In Windows Credential Manager, encrypted by Windows for your user account. You can see them in Control Panel → Credential Manager → Windows Credentials, named nopeeking:<name>.
How do I change a password? Ask Claude to delete it and save it again.
Does it press Enter after typing? No. Claude clicks the sign-in button itself. That makes the login a separate step that shows up in the chat, so you can see it. With Remote Control you may not be watching the PC while it types.
Does it work on a work PC?
Maybe not. NoPeeking runs bundled PowerShell scripts. It asks PowerShell to skip the execution policy for them, but if your organization's Group Policy forces the execution policy to AllSigned or Restricted, that setting wins, the scripts can't run and NoPeeking won't work. AppLocker or Windows Defender Application Control (WDAC) rules can also put PowerShell in Constrained Language Mode, which blocks the C# code the scripts compile. And if your organization turns on PowerShell logging or transcription by policy, commands run with run_with_secret may be recorded in Windows logs, including what they print, before NoPeeking masks it.
Can I save a very long secret from my phone?
Almost always. A secret can be up to 1,280 characters, and the phone relay limits message size. Ordinary secrets of any allowed length fit. A very long secret made of Chinese, Japanese or Korean characters (over about 950) or emoji (over about 350) can be too big. If it is, the phone page says so. Use the PC popup (add_secret) instead.
What if my PC can't reach the phone relay?
Before it gives you a link, NoPeeking checks that your PC can connect to the relay (ntfy.sh, or your own). If it can't within 8 seconds, it says so right away instead of giving you a link whose secret could never reach your PC. Use the PC popup (add_secret) instead.
What should I do while it types? Leave the mouse and keyboard alone for a moment. If another window comes to the front, typing stops and the password box may be partly filled: clear it and try again. A click into another box of the same window is not caught.
Mac or Linux? Not yet. Windows first.
Edge or Firefox? Chrome only for now.
Why not a password manager's Claude integration? If you already use one with Claude, that may suit you better. NoPeeking is for people who want something free, with no account, that works over Remote Control.
nopeeking: entries in Credential Manager (and any passclaude: entries left from before 0.2.0).claude mcp remove nopeeking --scope user.hooks.PreToolUse in ~/.claude/settings.json (a backup was saved next to it) and delete the ~/.claude/nopeeking folder.git clone https://github.com/daniardel/nopeeking.git
cd nopeeking
npm install
npm test
To try your copy in Claude Code: claude mcp add --scope user nopeeking -- node "<this folder>\src\cli.js".
The phone page is docs/index.html, docs/style.css, docs/app.js, docs/link.js, docs/e2e.js and docs/brand/. The live copy is in the public nopeeking-phone repo. After changing any of these files, copy them there and push, or phone links keep opening the old page. To try it locally: node scripts/serve.js docs.
The look (colours, fonts, the padlock) lives in brand/. After changing it, run npm run brand and commit what it writes; it also refreshes docs/brand/.
Please don't open a public issue. See SECURITY.md.
MIT