
agent-vault-proxy v0.9.0
Chiavi API just-in-time per agenti AI - e qualsiasi altro processo che instradi attraverso di essa: il chiamante vede solo un segnaposto.
keys-on-the-wire
Chiavi API just-in-time per agenti AI e qualsiasi altro processo che instradi attraverso di esso: il chiamante vede solo un segnaposto.
Precedentemente agent-vault-proxy. La CLI ora è kow; il vecchio comando avp funziona ancora in questa release e verrà rimosso nella prossima major (ADR-0045).
Keys on the Wire ti protegge dai ladri di credenziali (Shai-Hulud e simili) e dagli agenti con prompt injection che fanno trapelare i tuoi segreti. È un proxy locale che inietta i segreti reali nelle richieste in transito, così un agente compromesso o vittima di prompt injection non ha nulla da rubare.
Sotto il cofano: un proxy HTTPS di loopback che recupera le credenziali da Bitwarden Secrets Manager (cloud o self-hosted) just-in-time e le inietta nelle richieste in uscita, così il processo chiamante non detiene mai i byte reali delle credenziali nel proprio spazio di indirizzi.
Completamente open source, volutamente semplice
Ogni funzionalità è in questo repository sotto Apache-2.0, senza tier a pagamento, edizione enterprise, cloud fidato o telemetria. Puoi leggere l'intero codice dall'inizio alla fine (poche migliaia di righe) ed eseguirlo per sempre.
L'intero flusso di lavoro è un solo passaggio: chiedi alla skill inclusa di instradare un servizio, lei ti dice la singola riga da incollare in Bitwarden (o nel tuo vault), la incolli e l'agente è instradato. Fatto. Poiché ogni credenziale instradata è un binding, la configurazione è l'elenco completo e verificabile di esattamente quali segreti ogni agente può raggiungere: nulla di implicito o nascosto.
L'obiettivo è meno chiavi reali dentro gli agenti AI ovunque, non il lock-in. Se Keys on the Wire fa al caso tuo, usalo; se uno degli alternativi si adatta meglio al tuo setup, usa quello. Qualsiasi strumento che tiene il segreto reale fuori dalla memoria dell'agente è una vittoria.
Provalo. 10 secondi.
1. Installa - Linux pipx, macOS brew:
pipx install 'keys-on-the-wire[bitwarden]' # [bitwarden] adds the Bitwarden backend SDK; drop it for AWS/GSM/env only
# macOS: brew install inflightsec/keys-on-the-wire/keys-on-the-wire
sudo kow setup --bws # paste your Bitwarden token — generates the CA, starts the daemon
2. Installa la skill così il tuo agente scrive il binding per te:
/plugin marketplace add inflightsec/agent-vault-proxy
/plugin install avp@agent-vault-proxy
3. Chiedi alla skill di instradare un servizio - dì "instrada l'API di Stripe attraverso Keys on the Wire." Genera il segnaposto e stampa la nota esatta da incollare in BitWarden; non vede mai la tua chiave.
4. Metti il segreto nel tuo vault - aggiungi la chiave reale a Bitwarden Secrets Manager (o Google Secret Manager) con quella nota, poi instrada il tuo agente attraverso il proxy:
kow env && kow run claude
Fatto: l'agente invia solo il segnaposto; Keys on the Wire sostituisce la chiave reale in transito.
Invece di kow run, puoi esportare le variabili del proxy e della CA nel ~/.zshrc del tuo agente (o in qualsiasi rc della shell) - consulta Uso per il blocco canonico. È persistente, ma instrada l'intera shell attraverso Keys on the Wire, non solo l'agente che lancia.
Vedilo in azione
Aggiungi un segreto con il tuo agente AI: nessuna modifica alla configurazione
L'onboarding di una nuova credenziale instradata non dovrebbe significare scrivere a mano il binding YAML. La skill avp inclusa permette a un assistente AI (Claude Code, o qualsiasi agente che carichi le skill) di guidarti nel processo: dici "instrada l'API di Acme attraverso Keys on the Wire," lui chiede la forma dell'autenticazione e l'host, poi ti dice esattamente cosa aggiungere: il nome del segreto più l'annotazione da incollare nel campo Note di Bitwarden Secrets Manager (o nell'annotazione avp-binding di Google Secret Manager, o nei metadati per-segreto di un futuro backend). Nessuna modifica alla configurazione o ridistribuzione, e l'assistente non vede né memorizza mai il segreto; propone, tu applichi.
La nota stessa sono due righe incollate nel campo Note del segreto:
# avp-binding
api.acme.com
La riga marcatore è ciò che lo rende un binding: una nota la cui prima riga non è # avp-binding rimane quello che è, una descrizione umana, mai analizzata (ADR-0025). (Il marcatore avp-binding e i percorsi su disco mantengono i loro nomi in questa release per compatibilità all'indietro; passeranno a kow nella prossima major - vedi ADR-0045.)
Installa la skill
Claude Code (consigliato) - installala come plugin, così è disponibile in ogni progetto e si aggiorna con /plugin marketplace update:
/plugin marketplace add inflightsec/agent-vault-proxy
/plugin install avp@agent-vault-proxy
Invocala come /avp:avp, o semplicemente dì "instrada l'API di Acme attraverso Keys on the Wire" e si attiva da sola. (Il plugin incluso mantiene per ora il nome avp; verrà rinominato con la migrazione del marketplace.)
Manuale (qualsiasi agente che carichi skill in formato Anthropic) - copia o crea un symlink di skills/avp/ nella directory delle skill del tuo agente; Claude Code legge ~/.claude/skills/. Un symlink lo mantiene aggiornato a ogni git pull:
ln -s "$PWD/skills/avp" ~/.claude/skills/avp
Instrada un server MCP
I server MCP sono una superficie di fuga di credenziali in rapida crescita: ognuno contiene un token upstream di lunga durata (un PAT GitHub, una chiave Slack/Brave/Perplexity) in chiaro nella configurazione del client, dove ogni server caricato dal client può leggerlo. kow mcp install sostituisce quel segreto permanente con un segnaposto e instrada il traffico in uscita del server attraverso il proxy, così il valore reale non vive mai nella configurazione:
kow mcp install github --host api.github.com --env-var GITHUB_PERSONAL_ACCESS_TOKEN \
--server-cmd "npx -y @modelcontextprotocol/server-github"
Stampa la nota del vault da incollare e l'esatto comando claude mcp add --env / codex mcp add --env (proxy + trust della CA per runtime + env del segnaposto): solo proposta per il vault, il valore del segreto non viene mai toccato. La skill avp inclusa può ricavare host/intestazione/formato dalla documentazione del server e confermare l'host con te prima. Design + modello di minaccia: ADR-0040.
Documentazione
- Keys on the Wire fa per te? - cosa fa, cosa volutamente non fa, perché e quando usarlo (inizia da qui se stai valutando)
- Avvio rapido - primo avvio di 10 minuti che termina con una sostituzione visibile
- Concetti - segnaposto, binding, la CA, fail-closed, in termini semplici
- Prerequisiti - configurazione di Bitwarden Secrets Manager (fai questo per primo)
- Installazione su Linux · Docker · macOS
- Uso - indirizzare il tuo agente al proxy
- Isolamento Linux - comporre Keys on the Wire con
bubblewrapper il sandboxing del filesystem - bindings.example.yaml - schema completo della configurazione
- skill avp - lascia che un assistente AI crei i tuoi binding note/annotazione (solo proposta, nessuna modifica alla configurazione, nessuna ridistribuzione)
- Instrada un server MCP - esegui server MCP di Claude Code / Codex senza credenziali in chiaro (
kow mcp install) - Architettura - modello di minaccia, invarianti G1–G9, hardening, rischi residui
- Architettura degli adapter - backend del vault (Bitwarden, Google Secret Manager e AWS Secrets Manager sono inclusi oggi,
staticper lo sviluppo) e come aggiungerne un altro - Google Secret Manager - tieni i segreti in GSM: configurazione, autenticazione keyless e test end-to-end
- Confronto - vs. Vault Agent, Doppler,
op run,superfly/tokenizer, OneCLI e altri strumenti per credenziali degli agenti (usa quello che si adatta: l'obiettivo è più agenti protetti, non il lock-in) - CHANGELOG · SECURITY · CONTRIBUTING · CREDITS
Il proxy non chiama mai a casa. Le uniche connessioni in uscita che effettua sono verso l'endpoint BWS che configuri e le API upstream che il tuo agente sta chiamando. Nessuna telemetria. Il log di audit in /var/log/agent-vault-proxy/audit.jsonl è solo locale per impostazione predefinita; l'invio off-box opzionale lo inoltra (da un sidecar separato, mai dal proxy) solo a un collector che gestisci e controlli tu.
Licenza
Apache-2.0: vedi LICENSE e NOTICE; la concessione esplicita di brevetto è deliberata per uno strumento di sicurezza (ADR-0037). Ogni funzionalità è inclusa qui, senza open-core, tier enterprise o servizio ospitato. Fai il fork, leggilo dall'inizio alla fine, eseguilo per sempre. Le release fino alla 0.9.0 restano disponibili secondo i loro termini MIT originali e con il nome agent-vault-proxy. I precedenti lavori sono riconosciuti in CREDITS.md.
Una dipendenza non è open source, ed è opzionale. Il backend Bitwarden opzionale include bitwarden-sdk, che è sotto la licenza SDK proprietaria di Bitwarden, non Apache-2.0. Keys on the Wire non la include mai; la installi tu stesso (pip install 'keys-on-the-wire[bitwarden]') solo se usi quel backend. L'installazione predefinita e i backend AWS Secrets Manager, Google Secret Manager ed env sono open source al 100%.