Secure shell secrets for macOS

Stop putting secrets in plaintext dotfiles.

EnvEnclave keeps each environment value encrypted with Secure Enclave-backed keys, then releases it only in response to an approved local zsh request—so it is available when you need it.

Encrypted at restExact-folder scopedAuthenticated on release

Version 0.1.0 pre-release · Download available · Public security review in progress

SHA-256
4b10aa50e4ab445a65c0a5225a09407fa4d82523c88dd05d4b4845b849a54da3
SHA-1
29475d73ac7f3f617f14c43035fcfe83f83ce01c
MD5
cd3f7cdb5c5021dcea567225c407d8fc
EnvEnclave showing global and exact-folder environment variables with their values hidden
Fixture data shown. No protected values are included.

What it protects against.

EnvEnclave narrows where protected values are stored and which local shell requests can receive them. Unverifiable requests fail closed.

01

Access during SSH or Mosh

New requests from remote-login process trees, including shells nested beneath them, are denied before authentication or decryption.

02

Access through the file system

EnvEnclave writes no protected value to plaintext project or app files. Its encrypted records require a non-exportable, device-bound key.

03

Access from unapproved shells

A local shell must be a supported top-level zsh inside an explicitly approved, authentically signed terminal before EnvEnclave will authorize a release.

04

Release in the wrong folder

Exact-folder values release only when the live shell directory matches the saved path and file-system identity. Leaving removes the scoped export.

05

Impersonated helpers and direct clients

Copied or inauthentic helpers and direct socket clients fail live peer, signature, protocol, or process-tree checks before decryption.

06

Tampered or shell-hostile data

Authenticated records make corrupted policy, broadened scope, or isolated stale-record replay fail closed. Values are assigned without eval, so their contents do not become shell syntax.

These controls cover storage and initial release. After an approved shell receives a value, it is plaintext in that shell and inheriting processes; a same-account SSH attacker may be able to inspect it there.

A deliberate boundary

Protection before release. Clarity after it.

EnvEnclave is precise about what it controls: encrypted storage, terminal approval, and the moment a value is released.

01

Exact-folder availability

Keep a value global, or bind it to an exact canonical folder identity. Moving elsewhere removes the scoped export.

02

Approved terminals only

Live peer credentials, process ancestry, and exact code requirements are checked before any release is prepared.

03

Fresh authentication by default

A nonempty release asks for device-owner authentication and names the approved terminal making the request.

How it works

Local by design. Explicit at every handoff.

  1. 01

    Encrypt

    Each value is wrapped with an AES-GCM key derived through Secure Enclave P-256 key agreement.

  2. 02

    Scope

    Choose Global or one or more exact folders. Policy metadata is authenticated with the encrypted record.

  3. 03

    Verify

    The local request path validates the helper, shell, terminal, user, ancestry, and current working directory.

  4. 04

    Release

    Approved values are delivered through a bounded literal protocol and assigned by zsh without eval.

Expiration reminders

Know when a variable is due for rotation.

Set an optional expiration date and EnvEnclave will surface the variable as that date approaches.

  1. 7 days before

    Daily reminders begin

    With macOS notifications enabled, EnvEnclave schedules one generic reminder per day without the variable name, value, folder, or record identifier.

  2. Expiration day

    Review it in EnvEnclave

    A final generic notification is scheduled when notifications are enabled. The menu-bar notice identifies the variable that needs attention even when notifications are off.

Reminder, not revocation. Expiration never silently disables, deletes, or withholds a value. Rotate or delete it when you decide. Notification delivery is best-effort and depends on macOS settings.

Encrypted activity

See what happened

Activity can show validated variable names, exact-folder or Global availability, and approved terminal identity.

  • Encrypted and signed on disk
  • Tamper-evident chain with verified retention

Activity is not immutable, rollback-proof, or a complete forensic ledger.

EnvEnclave Activity showing a verified retained chain and the names and exact-folder scope of a release
Deterministic fixture metadata; values are never present.

Built in the open

Security claims should be reviewable.

EnvEnclave is pre-release software. Review the implementation, threat model, failure paths, and explicit non-goals before trusting it with anything important.