JUST ZEN
Security

What protects you. What still depends on you.

Just Zen keeps signed-in websites, Claude and your documents apart from each other and from the rest of your Mac. This page explains each protection, how security updates reach you without anyone touching them, what is tested, and the risks that remain.

These are best efforts. This is what we have done, described plainly, not a guarantee of anything. Every claim on this page can be checked against the code, the review and the automated checks in the git repository, which has more detail than fits here.

Current assessment. Designed for personal and small-team use. A full code review on 8 September 2026 fixed every finding; CodeQL and Semgrep run on every change; on 9 September 2026 a red-team suite, network interception, binary decompilation and runtime-instrumentation checks all found the protections holding; releases are signed and notarized, and security updates ship automatically. An independent penetration test has not been carried out. Just Zen is free, open-source software provided as is, without warranty.

The protections

Websites

  • Every site runs in Chromium's sandbox with Node.js disabled and no bridge into Just Zen, your files or Claude.
  • New apps get their own isolated cookie and storage profile. Shared, Personal and Work profiles share logins only when you choose them.
  • Links opened from an app land in a Quick Look drawer over the right of the centre (Esc closes it) rather than replacing what you were looking at; the drawer runs in the same isolated profile as the app it came from.
  • Calls in Slack, Google Chat and Meet need your camera and microphone. A saved app asks you once per site, the answer is remembered per app and can be forgotten from Privacy & data, and macOS asks separately for the app itself. Screen sharing stays off. Downloads go through the system save dialog, then a message offers to reveal the file.
  • Just Zen can remember website passwords, like Safari. They are stored encrypted with your Mac's Keychain, matched to the exact site, and only filled when you click a login field. Websites cannot read the store; a small isolated script inside each site only watches for a login form and fills one on request. Forget any or all of them from Privacy & data.
  • Logins are kept between launches: cookies a site marks as session-only are given a rolling 30-day expiry inside that app's own profile, the same way other app shells keep you signed in. Clearing the profile removes them.
  • Each browser app has its own profile, separate from every other browser and saved app; links from notes and chat open in the first one. Any of them can be cleared from Privacy & data.
  • Apps you are not looking at can be put to sleep after a quiet period: the page is closed and its memory released, then it reloads when you open it again.
  • Camera, microphone, screen capture, native-app launches and other permissions are refused. Saved apps may send notifications only from the address they were saved at.
  • Downloads always go through a native save dialog. Sites with invalid certificates are refused.

Encrypted state and app lock

  • Settings, tasks, whiteboard and Claude chat history are encrypted with a key held in the macOS Keychain. Website cookies are encrypted too.
  • Optional Touch ID or passcode lock after inactivity. Passcode attempts back off after three failures.
  • Any browser profile, Claude history or all Just Zen data can be cleared from the Privacy & data panel in the app.

Claude Chat

  • Runs inside Anthropic Sandbox Runtime and macOS Seatbelt. It can read only the workspace you choose plus its own login, and write only where the access mode allows.
  • The Claude Code program it runs is the signed copy that ships inside Just Zen, not whatever happens to be installed on the Mac, so nothing on the machine can stand in for it.
  • Uses a Claude login and history owned by Just Zen. Your personal ~/.claude, home folder, other users, external volumes and temporary folders are denied. The only other home-folder path it may read is the encrypted Keychain database, so it can use that login; the system's security daemon does the unlocking, not Claude.
  • Network access is limited to Anthropic's servers. Chat refuses to start if the sandbox is not active.
  • Text from a website, note or document reaches Claude only when you select it and press ⌘⇧A, and then only after you choose what to do with it. Nothing is sent automatically.
  • Chat starts in Notes-only: Claude may change Markdown notes and must ask before touching anything else. Read-only blocks all changes at the operating-system level. Full access is a deliberate choice for when you are building something. Shell commands, sub-agents and MCP tools always ask first.

Claude Terminal and shell

  • Runs with your normal macOS user permissions, exactly like Claude Code in Terminal.app. Just Zen adds no privilege and no sandbox here.
  • Claude Code's own command approval applies. Use Chat when you want enforced Read-only or Notes-only access.

Documents

  • PDFs and text render in a separate sandboxed view with no bridge to the main app or Claude, and no network.
  • DOCX and RTF conversion runs in a deny-by-default Seatbelt process with a private temporary folder and no network. Formatted text is reduced to plain allowlisted tags before export.
  • Save copy refuses symbolic and hard links so the original can never be overwritten.

App integrity and updates

  • Releases are signed with a Developer ID and notarized by Apple.
  • The app code ships in a single archive whose integrity is verified at launch. Node.js entry points into the app binary (run-as-node, NODE_OPTIONS, inspector) are disabled.
  • Everything the app needs to run travels with it: its own signed, checksum-verified Node.js runtime and its own copy of Claude Code. It does not depend on Homebrew or any separately installed tool, so a broken or tampered install elsewhere on the Mac cannot affect it.
  • Website favicons are decoded in a sandboxed renderer, never in the main process.
  • Updates are checked 15 seconds after opening and every six hours, downloaded in the background, signature-verified and installed when you quit. Downgrades and pre-releases are refused.
  • Electron only fixes Chromium flaws in its three newest major versions. The Privacy & data panel shows the date the bundled Electron stops receiving them, and a weekly check in the repository raises an issue a month before.

How automated security updates work

From a published patch to your installed app, without anyone touching it.

  • Detection. Dependabot checks weekly for new Electron and dependency versions, waiting three days for patches and seven for larger changes so bad releases surface first. Security advisories trigger a fix immediately.
  • Verification. Each proposed update runs the unit tests, the Seatbelt sandbox test and CodeQL static analysis.
  • Merge. If everything passes and it is not a major version change, the update is merged into the codebase. Major versions wait for a human.
  • Release. The merge is tagged as a new version and a signed, notarized DMG is built and published automatically.
  • Install. Every copy of Just Zen picks it up on next open and installs it on quit.

What is tested, and with what

  • Static analysis. CodeQL and Semgrep run on every change and block the merge on any finding.
  • Dependencies. Dependabot version and security updates, npm audit on every build, and a cooldown before new releases are adopted.
  • Adversarial tests. Forged IPC from a foreign renderer, path traversal, symlink chains, hostile HTML and PDFs, popup containment and profile separation, run in CI on macOS.
  • Sandbox tests. The Seatbelt profiles are executed for real and asserted to deny the home folder, external volumes, temporary folders and other Claude projects. Chat keeps only its own workspace's transcripts, so conversations resume.
  • Review. A full code review on 8 September 2026 found and fixed thirteen issues, from Electron fuses to a Notes-only bypass. The report is in the repository.
  • Red-teaming. A Promptfoo suite drives the real Chat pipeline with hostile workspace content, a careless user who approves everything, and canary secrets. Eight cases, from hidden instructions in notes to symlink tricks and exfiltration by fetch, all held on 9 September 2026.
  • Network interception. Run through mitmproxy, the app refuses forged certificates outright; with TLS passed through, every destination belonged to the sites you opened, none was plain HTTP, and the sandboxed Claude only ever talked to its local egress proxy.
  • Binary and runtime checks. Every executable in the signed bundle carries the hardened runtime and no debugging entitlements; Frida cannot attach to it. Ghidra found nothing beyond standard library calls in the native terminal components, and no secrets anywhere in the bundle or repository.
  • Open source. The code, the review, the tooling results and every automated check are public, so anyone can inspect what runs on their Mac.

We tried to break it. Here is what happened.

On 9 September 2026 we ran five well-known security tools against Just Zen, the kind a professional tester would reach for. The technical detail is in the full write-up; this is the plain-English version.

  • 1. Tricking Claude (Promptfoo). We planted notes with hidden instructions telling Claude to steal secrets, dropped fake passwords around the workspace, set symlink traps, and pretended to be a user who clicks "Allow" on everything. Claude spotted the hidden instructions and refused to follow them, and every attempt to read a secret, change a protected file, reach the home folder or send data to an outside website was blocked. Eight attacks, eight stopped.
  • 2. Spying on its internet traffic (mitmproxy). We put a fake "middleman" between the app and the internet. When it tried to impersonate real websites, the app refused to connect at all. When we just watched where traffic went, the app only ever talked to the websites you had opened, nothing was sent unencrypted, and Claude's connection went through a gate that only allows Anthropic.
  • 3. Checking the app is what it says it is (Apple's own tools). Every part of the app is signed by the developer and approved by Apple, with the extra hardening switched on and no back doors for debuggers. While Claude was working, we watched what files it had open: nothing from the home folder.
  • 4. Taking the app apart (Ghidra). We decompiled the two small pieces of native code Just Zen ships and searched the whole app and its history for hidden keys or passwords. Nothing suspicious, nothing hardcoded.
  • 5. Trying to read its memory while running (Frida). A tool that lets you reach inside a running program could not get into Just Zen at all. It could get into the unsigned developer version, which is exactly why what you download is signed.

Doing this found two real problems, both fixed in the next release: Claude's sign-in could expire after a few hours and not renew itself, and the app relied on a separately installed copy of Node.js that could break. It now renews the sign-in on its own and carries everything it needs.

Risks specific to Just Zen

  • Browser vulnerabilities. Just Zen bundles its own copy of Chromium through Electron, so a new Chromium flaw can exist here until the next Electron patch ships. Sandboxing limits the impact; the automated update chain keeps that window to days.
  • Windows is newer and weaker than the Mac build. The same Chromium sandboxing, process isolation, content security policy, integrity-checked app archive and disabled Node entry points apply, and saved passwords and cookies are encrypted with Windows DPAPI instead of the Keychain. Three things do not carry over yet: the installer is not code-signed (Windows SmartScreen will warn, and you cannot verify the publisher), there is no Touch ID lock, and Claude is switched off entirely because the operating-system sandbox it runs in only exists on macOS; Just Zen will not run Claude unsandboxed. The Windows build has also not been through the adversarial test suite on Windows itself.
  • No independent audit yet. CodeQL and Semgrep scans, the adversarial and sandbox test suites and the code review all pass, but no third party has tested the running app. For regulated or highly sensitive work, commission an external assessment first.

What you should do

Install updates when Just Zen asks by quitting; that is the whole ritual. Connect only the folders Claude needs and prefer Read-only or Notes-only in Chat. Keep apps isolated unless they genuinely need a shared login; sites in the Shared, Personal or Work profiles can see each other's cookies by design. Turn on the app lock if the Mac is shared or ever unattended.

As is. Just Zen is free software provided under the ISC licence, without warranty of any kind. You are responsible for how you use it and for the accounts and data you connect to it. Inspect the code, decide for yourself, and keep backups.