Use Claude Code and Codex as you do today. Your secrets never reach the model, and a malicious package can't steal them when you install. 200+ secret types detected locally, free, in one command.

Install the CLI
pipinstallshutapp

Or read the documentation

Your secrets never leave your machine.

Not up to the AI model, not out to a malicious package. Real values stay in a local vault. Only placeholders or blocks cross the line.

Real secrets stay on your machine. The AI model receives only a placeholder. A malicious package install is stopped at the boundary.
Your machine
ANTHROPIC_KEY sk-ant-api03…
.env secrets
shutapp

AI models

[ANTHROPIC_KEY_1]

Context only. Never the real value.

Package installs

POST attacker.com

Stopped at the gate. Nothing leaves.

The model gets your context as placeholders, so it stays useful. A package that tries to read your .env and send it out is stopped at the boundary.

Free to run. Paid to forget.

The engine is free and open source. On Free you run it yourself. Paid plans run it automatically on every session and install.

Free

$0forever

Full protection, run by hand. No features removed.

  • shutapp claude: secrets never reach the model
  • shutapp codex: same protection for the Codex CLI
  • shutapp install and shutapp pip: sandboxed installs
  • Detects 200+ secret types, plus cards, IBAN, and SSN
  • Commit guard and history scrub
  • Lifetime catch count in shutapp status
Most popular

Auto

$15/ monthFirst month free

The same protection, applied automatically.

  • Everything in Free
  • shutapp protect: guards claude, codex, npm, and pip automatically
  • Covers IDE and desktop app launches, not just the terminal
  • shutapp doctor checks and repairs the setup
  • Stays on even if you forget to run a command

Pro

$39/ monthFirst month free

Auto, plus local monitoring and strict financial detection.

  • Everything in Auto
  • shutapp report: a local log of what was caught
  • Strict financial detection: cards, IBAN, SSN, routing numbers
  • 3 seats for your machines or teammates
  • All data stays on your machines. Nothing is uploaded.

The honest part: the CLI is open source (MIT) and the paid features are gated by a license check in that same open code. A fork can remove it. Paying keeps the project alive and your setup self-healing. Licenses verify offline; the only network call is the renewal check. Cancel anytime: protection downgrades visibly to Free, never silently.

01

Install with pip

The Shutapp CLI ships in the shutapppackage. Install it with pip. That's the whole setup.

shell
pip install shutapp
shutapp --version
02

Run Claude Code through Shutapp

Keep using Claude Code normally. Shutapp injects ANTHROPIC_BASE_URL for the child process, so Claude talks to the local proxy first.

shell
shutapp claude

# pass Claude args through unchanged
shutapp claude -- --model claude-sonnet-4-5
03

What it protects

Shutapp catches over 200 kinds of secrets: API keys, tokens, passwords, database URLs, private keys, cloud credentials, and Financials. It redacts the real value while leaving harmless example values in your docs alone.

example
# Anthropic sees:
Deploy with [ANTHROPIC_KEY_1] and card [CREDIT_CARD_1]

# Local tools receive the real values again when needed.

This is not just what you type. When Claude Code reads a file, runs a command, or uses a tool, any secret in that text is redacted the same way before it reaches the model. The same secrets are also protected when you install packages (next).

04

Block malicious packages

A single bad npm or pip package can run code the moment you install it. That code can read your environment variables, your .env, and your SSH and cloud keys, then send them to a server. shutapp install and shutapp pip run the install in a sandbox so it cannot.

shell
shutapp install <pkg>        # npm install, sandboxed
shutapp pip install <pkg>    # pip install, sandboxed

Three things happen at once. Secret-shaped environment variables are removed before the install runs. The install is locked to a sandbox that cannot read your home directory, your project source, or .env. Its network is limited to the package registry. A malicious package finds no secrets and has nowhere to send them.

shell
shutapp box status      # the sandbox in use on this machine
shutapp allow <host>    # permit one extra download host a build needs

This contains code at install time. It is not antivirus and does not scan packages, and npx, pnpm, and yarn are not sandboxed yet.

05

Command surface

free: manual protection
shutapp claude [--] [claude args]     # Claude Code, secrets stripped
shutapp codex [--] [codex args]       # Codex CLI, same protection
shutapp install [npm args]            # npm install inside the box
shutapp pip install <pkg>             # pip install inside the box
shutapp box status                    # the sandbox in use on this machine
shutapp allow <host>                  # permit one extra download host
shutapp session list | show | purge
shutapp detectors list [--family cloud] [--json]
shutapp status                        # includes your lifetime catch count
auto / pro: paid plans
shutapp license activate <key>        # from your dashboard
shutapp protect [--strict]            # AUTO: everything automatic
shutapp doctor                        # AUTO: self-heal the setup
shutapp report [--since 7d]           # PRO: local "what we caught" feed

Session commands are value-free: they show ids, timestamps, placeholder counts, and detector types, never the vault contents. The catch report is the same: types and counts only, stored locally, never uploaded.

06

Security model

Everything runs locally on your machine. Shutapp never needs your provider key, and your secrets never leave your machine. They stay in a local session vault and are swapped for placeholders before anything reaches the model.

local controls
shutapp session list
shutapp session show <session-id>
shutapp session purge <session-id> --yes
07

Verify it yourself

Paste a secret into Claude Code and you'll still see it on your screen. That's your own terminal, on your machine. The model never receives it. Ask Claude to repeat it back and it can't. It only ever saw a placeholder.

in Claude Code
you  my key is sk-ant-api03-9F4xC7L2bN…
you  what key did I just give you?
claude  I only received [ANTHROPIC_KEY_1], never the real value.