Supply Chain DLP
for your secrets

Protect your .env files, cloud keys, SSH & GPG keys, and API tokens from supply-chain attacks. Every app that tries to read a secret needs your one-time approval — so a compromised dependency or rogue AI agent can't exfiltrate what it can't read.

The supply-chain secret leak

Developers are under constant threat from untrusted code. Every day your machine runs thousands of packages — and their transitive dependencies — written by unverified authors, each free to read any file you can. One poisoned dependency, build script, or AI agent is all it takes to ship your credentials to an attacker.

postinstall hooks

npm / pip / cargo / gem run arbitrary scripts on install. The classic payload reads ~/.aws/credentials, ~/.npmrc, .env and phones home.

AI agents & terminals

Agentic tools scan your working directory for "context" — sweeping up .env files and cloud tokens you never meant to share.

No visibility

By default macOS lets any process you run read any file you can. You never even see it happen — until the breach notification arrives.

Protects you from worms like Shai-Hulud

In September 2025, Shai-Hulud became the first self-replicating worm on npm. A trojanized package's install script scanned the machine for secrets (npm tokens, ~/.aws/credentials, .env, SSH & GitHub tokens), exfiltrated them to public repos, then used the stolen npm publish token to infect every other package the victim maintained. Hundreds of packages fell within hours — and the next npm install spread it further.

The entire worm depends on one move: reading your credentials off disk. SCDLP breaks the chain right there.

  • You npm install a compromised dependency.
  • Its postinstall script runs with your privileges.
  • It tries to read ~/.npmrc, ~/.aws/credentials, .env… → SCDLP blocks the read.
  • Secrets exfiltrated to the attacker.
  • Stolen npm token republishes the worm.

No credentials leave disk, so there is nothing to steal and no token to propagate with — even for a brand-new package SCDLP has never seen.

How it works

A signed system extension on Apple's Endpoint Security framework — kernel-grade, not a shim.

1

Intercept

SCDLP subscribes to authorization open events on Apple's Endpoint Security framework, so every read of a protected file is checked by SCDLP first.

2

Identify

It resolves the full process ancestry — which program, launched by what, under which app — and matches the file against your policy of path globs.

3

Decide

Covered by a rule? Allowed instantly. Otherwise SCDLP blocks the read right away and raises a prompt — it never stalls the process waiting on you: "Allow node to read ~/.aws/credentials?"

4

Approve & retry

Approve the prompt and your choice becomes a scoped rule — this file, this program, or a trusted app. Re-run the command and the read goes through. You approve once.

Features

Everything runs from a menu-bar app — no terminal required.

SCDLP approval prompt

Real-time approval prompts

When an unknown process reaches for a secret, SCDLP blocks the read and raises a Little-Snitch-style prompt showing the file and the full process chain. Allow it once, always for that app, or deny — then re-run, and approved reads go straight through.

Policy editor

Editable policy

Decide exactly which files are protected with a table of path globs — *.env*, */.aws/credentials, SSH keys, tokens, kubeconfigs. Add, remove, and tune entries; changes apply live, no restart.

Decision history

Full decision history

Every allow and deny is recorded with the file, the matched category, and the complete process ancestry — so you can see exactly what tried to read your secrets, and when.

Remembered rules

Remembered rules

Your choices become scoped rules — by exact file, by program, or by trusted app — so you're asked once, not every time. Review them anytime and revoke any rule with one click.

What you get

Defense that stays out of your way.

Trusted apps

Allowlist tools you trust to read secrets — once — so chatty-but-legit apps never flood you.

No prompt storms

Per-process re-prompt cooldown means a noisy reader is denied quietly, not 50 dialogs deep.

One-click kill switch

Toggle enforcement from the menu-bar shield whenever you need to get out of the way.

Kernel-grade

Built on Apple's Endpoint Security framework — signed, notarized, and tamper-resistant.

Private by design

Everything stays on your Mac. No telemetry, no cloud, no accounts — ever.

Open source

MIT-licensed and auditable end to end. Read every line, build it yourself.

Install

Signed & notarized. Requires macOS 13+ and one approval in System Settings.

Download the app

Grab the latest signed, notarized build and drag scdlp.app into Applications.

On first launch, approve the system extension in System Settings → General → Login Items & Extensions → Endpoint Security, and grant Full Disk Access to the extension.

Build from source

# needs Go + Xcode + a Developer ID cert
git clone https://github.com/ronreiter/scdlp
cd scdlp
brew install go-task
task build

See docs/install.md for signing, notarization, and local deployment.