
Sandbox e proxy MCP che impedisce agli agenti di coding AI di leggere chiavi SSH, credenziali AWS e file .env, con policy deny-by-default e log di audit a prova di manomissione.
La sandbox di Claude Code consente a un agente di leggere le tue chiavi SSH e le credenziali AWS per impostazione predefinita. Aegis no.
Due livelli, entrambi verificati su hardware reale.
Sandbox del kernel — la shell dell'agente stesso non può raggiungere un percorso negato:
$ ! cat ~/.ssh/id_rsa
cat: /Users/you/.ssh/id_rsa: Operation not permitted
$ ! cat ~/.aws/credentials
cat: /Users/you/.aws/credentials: Operation not permitted
$ tail ~/Library/Application\ Support/Aegis/denials.log
kernel denied file-read-data /Users/you/.ssh/id_rsa to cat(pid 41560)
kernel denied file-read-data /Users/you/.aws/credentials to cat(pid 42180)
Proxy MCP — stesso strumento, stesso file, con e senza Aegis davanti:
direct to the server: allowed: TOKEN=proof-env-secret
through aegis proxy: AEGIS DENIED: read_text_file
Reason: path matches deny rule '.env'
Rule: deny_paths
Ogni riga è supportata da un test eseguito su questa release; dove qualcosa non è ancora testato, viene indicato.
aegis workspace add / remove / list — cambia le cartelle in cui l'agente può lavorare senza modificare policy.json. L'aggiunta richiede sempre --confirm-grant; la rimozione mai. add rifiuta la tua home directory, qualsiasi cosa contenga i file di Aegis, un percorso con .., una cartella che non esiste, un symlink presente all'interno di un workspace e un workspace dentro o attorno a un altro. Ogni modifica viene registrata nel log di audit e rigenera il profilo della sandbox. Una sessione già in esecuzione mantiene i workspace con cui è stata avviata — incluso quello appena rimosso — misurato rispetto a una sessione sandboxed attiva.aegis policy set-folder, concedendo l'accesso ovunque puntasse il link; e un workspace creato dentro un altro poteva in seguito essere sostituito con un symlink e seguito al lancio successivo. Entrambi sono stati riprodotti sulla 0.8.1 e ora sono test di regressione permanenti dimostrati fallire lì.policy.json vengono rifiutati. Un percorso relativo veniva risolto rispetto alla cartella da cui Aegis era stato avviato, quindi aegis run e il wrapper di lancio potevano applicare sandbox diverse dalla stessa policy (misurato: digest dei profili diversi). I percorsi devono essere assoluti o iniziare con ~/.aegis doctor non segnala più una discrepanza tra una modifica e il lancio successivo.aegis run e aegis doctor stampano il percorso reale di Claude Code — letto dal wrapper scritto da Aegis — e /login, da eseguire fuori dalla sandbox. Non risolto: un token revocato o scaduto viene ancora letto come connesso finché il primo messaggio non fallisce (lo stato di Claude Code non riporta la scadenza), e il login non può ancora avvenire dentro la sandbox; serve un credential broker che non esiste ancora.aegis init protegge un nuovo utente che non ha ancora effettuato l'accesso. Scoperto seguendo la procedura guidata in un ambiente pulito: nella 0.8.1, un Claude Code che non aveva mai effettuato l'accesso restava non incapsulato per impostazione predefinita, dietro una domanda che la documentazione non menzionava mai, così claude restava fuori dalla sandbox. Ora, una volta risposto sì al sandboxing, viene incapsulato, con un avviso ben visibile di effettuare l'accesso una volta fuori dalla sandbox (il percorso reale di Claude Code, poi /login); i passaggi finali di aegis init lo mettono per primo, e aegis doctor fallisce finché non lo fai. La stessa esecuzione ha anche corretto il testo iniziale e finale di init, ha dato a aegis init, aegis run e aegis doctor un'unica istruzione di login, e ha impedito che una modifica a vuoto stampasse nothing to change (nothing to change).Non ancora testato nella 0.9.0: Linux; client diversi da Claude Code; il flusso /login end to end; un'app desktop ricostruita.
Si colloca tra il tuo agente di coding AI e la tua macchina:
cat .env non può aggirarlaaegis doctor, e con checkpoint
dall'esterno della sandbox sotto una chiave che la sandbox non può leggere né scrivereNuovo qui? docs/getting-started.md è il percorso passo dopo passo, incluse le due domande che per impostazione predefinita sono impostate su No.
Hai seguito le istruzioni precedenti che indicavano aegis-mcp? Quel pacchetto non è Aegis — è un progetto
non correlato installato con lo stesso nome di import, aegis. Rimuovilo prima:
python3 -m pip uninstall aegis-mcp
Se aegis-sandbox è già installato, quella disinstallazione elimina anche due dei suoi file, quindi reinstallalo
successivamente: python3 -m pip install --force-reinstall aegis-sandbox.
python3 -m pip install aegis-sandbox
aegis init # rileva Claude Code / Cursor, pone alcune domande
aegis doctor # dimostra che il confine è effettivamente in atto
Stai aggiornando? Riesegui aegis init. Il tuo policy.json è tuo e non viene mai riscritto alle tue spalle, quindi un
nuovo dominio sandbox non appare da solo — e senza l'endpoint del token OAuth un client in sandbox smette
di funzionare quando il suo token scade. aegis init propone i nuovi host; accettare richiede un solo tasto.
aegis init; aegis doctor fallisce se un client incapsulato non ha effettuato il loginModello di minaccia completo: THREAT-MODEL.md
MIT