airlok

airlok is a coding agent for the terminal. It reads, searches, edits, and runs code in your repository with a model from Anthropic or OpenAI (Azure OpenAI included), and it replaces the secrets in every request with placeholders before the request leaves your machine.

$ airlok
airlok 0.5.0 · claude-sonnet-4-6 · api · /help for commands
claude-sonnet-4-6 api> move the Stripe key in .env into the config loader
read 2 files
> edit_file: src/config.rs
src/config.rs
@@ -9,6 +9,7 @@
 9   pub struct Config {
10       pub port: u16,
11 +     pub stripe_key: String,
12   }
(a = approve everything for this run)
Apply? [y]es / [n]o / [a]ll / [q]uit y
Config now carries stripe_key, read from STRIPE_SECRET_KEY. The value in .env
stays here as sk_l… (32 chars).
claude-sonnet-4-6 · context 2% · session 8f21c0ab

The request carried a placeholder in place of that key. Secrets from your files come back masked in the terminal, and whole into the files and commands that need them.

The privacy airlock

The conversation stays on your machine in plain text. Each time airlok sends it to the model, it first replaces every API key, token, private key, and other credential it recognises with a placeholder such as <<SECRET_1>>, and the key airlok uses to reach the provider is on that list too. The model reads and writes placeholders. When its reply comes back, placeholders in file edits and commands are swapped back for the real values before anything is written or run, and the terminal shows those values masked. The provider API key is never swapped back into anything. airlok context prints exactly what would be sent, and airlok redactions lists what is detected and how each kind is treated.

Install

Homebrew
brew install airlok-dev/tap/airlok
npm
npm install -g airlok
Shell script, macOS and Linux
curl -fsSL https://airlok.dev/install.sh | sh
Cargo, built from source
cargo install --git https://github.com/airlok-dev/airlok airlok --locked