Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,26 @@ Airlock is one layer of a defense-in-depth stack:
3. **Airlock** β€” credential isolation at runtime: secrets in memory, injected per tool, output redacted.
4. **Agent harness sandbox** β€” `airlock run`, Claude Code's `--sandbox`, Docker, nsjail, bubblewrap. Without it, the agent could read the daemon's memory or connect to the socket directly.

## How Airlock compares

Most tools in this space are **HTTP proxies**: the agent sends a placeholder token, the proxy swaps in the real one on the wire. That works for API calls but can't broker a credential a CLI reads from its environment (`gh`, `gcloud`, `kubectl`, `tofu`, `git` signing). Airlock works at the **process layer** instead: it spawns the tool itself, sandboxed, with the secret injected, and redacts the output.

| | Airlock | [claw-wrap](https://github.com/dedene/claw-wrap) | [fnox MCP](https://fnox.jdx.dev/guide/mcp.html) | [Infisical Agent Vault](https://github.com/Infisical/agent-vault) | [nono](https://github.com/nolabs-ai/nono) |
|---|---|---|---|---|---|
| Model | Local CLI exec broker | Local CLI exec broker | MCP `exec` tool in a secrets manager | HTTPS MITM proxy | Kernel sandbox + HTTP credential proxy |
| Brokers local CLIs (env-var creds) | βœ… | βœ… | βœ… | ❌ | ❌ (network only) |
| Brokers HTTP API calls | via the CLI | via the CLI, or MITM proxy mode | via the CLI | βœ… | βœ… |
| OS sandbox for the tool | βœ… Seatbelt / Landlock | ❌ (tool runs with daemon privileges) | ❌ | ❌ | βœ… Seatbelt / Landlock |
| Redacts tool stdout/stderr (incl. base64/hex/URL-encoded) | βœ… | user-supplied regex only | raw value only (docs: encoded forms leak) | ❌ | ❌ |
| Per-tool allowlist | βœ… | βœ… + blocked-arg patterns | ❌ (global secret allowlist) | egress filter | policy-as-code |
| Scoped / short-lived creds | βœ… | βœ… | ❌ | ❌ | ❌ |
| Runs offline, no account | βœ… | βœ… | βœ… | βœ… | βœ… |
| License | Open source | MIT | MIT | Open source | Open source |

[claw-wrap](https://github.com/dedene/claw-wrap) is the nearest relative β€” same daemon/socket/exec shape β€” but leaves sandboxing to an external tool and redacts only what you write regexes for. Airlock complements the proxy tools rather than replacing them: use a proxy for pure-API agents, Airlock for the tools the agent *runs*.

Commercial identity gateways such as [Aembit](https://aembit.io/) and [1Password Unified Access](https://1password.com/blog/introducing-1password-unified-access) solve the same problem as a central, cloud-hosted service that vends short-lived credentials to workloads; hosted integration layers like [Arcade](https://www.arcade.dev/), [Composio](https://composio.dev/) and [Nango](https://nango.dev/) do it for SaaS APIs via OAuth. Neither brokers local CLI tools.

## Quick start

```bash
Expand Down
Loading