A local broker that holds your secrets in one encrypted vault on your machine and hands them to apps and coding agents at the moment they need them — only inside the project boundary you bound, only for the time window you allowed, and never as a value the agent can see.
Raw, base64-std, base64-url, base32, hex (lower & upper), URL-encoded, JSON-escaped, HTML entity, double-percent, Unicode escape. Marker tokens preserve line counts.
Once · session · window. Window accepts durations like 15m or 1h. The 24-hour ceiling is enforced inside the daemon. No policy can lift it.
claude-code, codex-cli, cursor, aider, hermes, openclaw — plus a generic profile for anything else that speaks MCP or runs a CLI.
No account. No control plane. No telemetry. Works on a plane, in a SCIF, on a laptop with no network. Source-available critical path. Signed release with SBOM & SLSA.
One personal encrypted local store under your home directory. Argon2id with memory-hard parameters (64 MB · 3 iterations · 4 lanes). AEAD encryption at rest. All your secrets live here once.
Normal applications you connect to the vault — your dev server, your data tool, your CLI. After connecting, you launch them by name and the right values are present. Three delivery modes: env var, temp file 0600, temp dotenv outside the repo.
Coding agents you connect to the vault. After connecting, the agent works through hasp instead of around it. MCP tool surface returns references and metadata, not values. The agent never reads the value.
Setup is explicit, once. Runtime is invisible, every time after.
HASP stays small on purpose: secrets live in one encrypted vault, repo roots define where they may be used, repo targets choose the workflow subset, apps and agents connect once, and short-lived grants deliver values only to a specific brokered run.
HASP_HOME.setupbootstrapinitdoctorproofsecretimportsetcaptureprojectcheck-reporuninjectwrite-envappagentmcpvaultexport-backuprestore-backupdaemonsessionstatuspingauditupgradecompletiondocsversiontuiA coding agent powered by a frontier model deleted a production database and its volume backups, on a single API call, after finding a credential in an unrelated file.
TechStartupsA second-tier disclosure: a popular coding agent's settings file silently records environment variables and ships them inside published npm packages.
SecurityBriefA third disclosure: a one-line command-injection bug in another agent lets a crafted repository steal the developer's active model API key on clone-and-open.
Check PointA developer woke up to an $82,000 cloud bill on a project that normally spent $180/month after a leaked key was harvested and wrung out in a cryptomining loop.
SecureStartKitGitGuardian counted 28.6 million new secrets exposed in public commits across 2025. AI-coding repos: 40% more likely to leak than the rest.
GitGuardianA supply-chain attack on an AI infrastructure provider exposed internal env vars and a database key, both reportedly listed for sale at $2M.
VentureBeatPrompt injection gets attention because it's novel, but stolen credentials are a classic attack with way higher impact.
Security community threadThe agent rewrote a config file. You said yes. Three commits later you push and CI emails the team to say a Stripe key just landed in the diff.
The agent finds a credential in a file you forgot was on disk. The token is over-scoped because nobody had time to fix it last quarter. The agent decides the cleanest fix is destructive, and the database and its volume backups are gone before your push notification arrives.
The agent crashed, dumped a traceback, and you copy-pasted the whole thing into a Slack channel to ask for help. Without hasp, the shape of your AWS access key is now in a Slack message, a Slack search index, and Slack's compliance log.
Source-available. SBOM, SLSA provenance, code-signing status, and reproducible-build sidecar ship inside the release artifact. scripts/hasp-verify-release.sh verifies the signed checksum manifest plus the tarball and binary signatures before install.
$ brew tap gethasp/homebrew-tap
$ brew install hasp
$ hasp setup
$ hasp app connect myapp
$ hasp proof
→ ok proof passed · 412ms
→ ok vault unlocked · binding ./api
→ ok agent never read
$ git clone https://github.com/gethasp/hasp
$ cd hasp
$ make build
$ ./bin/hasp setup
$ ./bin/hasp proof
→ ok binary built from source
→ ok vault initialized
→ ok proof passed
$ curl -fsSL https://gethasp.com/install.sh | sh
$ hasp setup
$ hasp app connect myapp
$ hasp proof
→ ok hasp installed on PATH
→ ok vault unlocked · binding ./api
→ ok agent never read