Warum Bromure Agentic Coding keine Sandbox ist
Eine Sandbox verlangt vom Entwickler, genau die Geschwindigkeit aufzugeben, die einen Coding-Agenten überhaupt erst lohnenswert macht — jede Abhängigkeit vorab freigeben, eine Allowlist von Domains pflegen, niemals ein Paket anfassen, das die Organisation nicht geprüft hat. Also schalten Entwickler sie ab. Bromure Agentic Coding lehnt diesen Handel ab. Es schränkt nicht ein, was der Agent tut; es zieht eine einzige harte Linie am Hypervisor und lässt dich auf der Innenseite alles tun. Dies ist die grundlegende Begründung, warum eine Grenze eine Sandbox schlägt, und die drei Garantien, die die Grenze wahr macht: keine Credentials zum Stehlen, breite Tokens am Draht verengt und Supply-Chain-Angriffe gestoppt, bevor das Tarball landet — plus die vierte, die die Linie jetzt wahr macht: Prompt-Injektionen, abgefangen in den Inhalten, die der Agent liest, bevor das Modell ihnen gehorcht.
Eine Sandbox bietet einen Handel an: gib einen Teil dessen auf, was einen Coding-Agenten nützlich macht, und im Gegenzug hält sie dich sicher. Entwickler lehnen diesen Handel jedes Mal ab — sie schalten die Sandbox aus oder gar nicht erst ein — und sie tun recht daran. Die Aufgabe eines Agenten ist es, sich schnell durch unübersichtliches, ungeprüftes Terrain zu bewegen. Bromure Agentic Coding schränkt das nicht ein. Es zieht eine einzige harte Linie, am Hypervisor, und lässt dich auf deren Innenseite alles tun, was du willst.
Ein grundlegender Beitrag — einmal geschrieben, damit die übrigen darauf verweisen können. Nicht über einen Vorfall. Darüber, warum wir Bromure Agentic Coding so gebaut haben, wie wir es taten, und warum „es ist eine Sandbox“ die Beschreibung ist, die wir immer wieder korrigieren.
Ein Entwickler ist kein Sysadmin.
Der Grund, einen Coding-Agenten auf deine Maschine zu setzen, ist Geschwindigkeit — die konkrete Art: ein Paket ziehen, das niemand in deinem Unternehmen geprüft hat, um elf Uhr abends, um zu sehen, ob eine Idee trägt. Die Bibliothek ausprobieren, ihr Beispiel laufen lassen, sie wegwerfen, wenn sie nicht passt. Das ist kein Makel, den man den Leuten abtrainieren müsste. Es ist der Workflow und der ganze Grund, warum der Agent es wert ist, ihn zu haben.
Also liegt jedes Modell, das dich jede Abhängigkeit vorab freigeben lässt oder jemanden eine Liste von Domains pflegen lässt, die der Agent erreichen darf, im Krieg mit dem, was es schützt. Es verlangsamt genau die eine Tätigkeit, zu deren Ermöglichung es eingesetzt wurde — und eine Kontrolle, die dem Ausliefern im Weg steht, hat genau ein Schicksal: Sie wird abgeschaltet. Eine Kontrolle, die ein Entwickler abschaltet, um seine Arbeit zu erledigen, war nie eine Kontrolle.
„Betreibe einen privaten, geprüften Mirror“ verfehlt den Punkt auf dieselbe Weise: Die Pakete, die für das Experimentieren zählen, sind die, die noch niemand geprüft hat. Ein Mirror genehmigter Abhängigkeiten ist ein Mirror der Ideen von gestern.
Die Frage ist also nicht, wie man Entwickler davon abhält, ungeprüften Code anzufassen. Sie müssen es; das ist die Aufgabe. Sie lautet, wie man sie all das frei anfassen lässt, ohne dass ihr Schlüsselbund Teil des Deals ist.
Die für die Produktion gebaute Sandbox passt nicht auf die Werkbank.
Der erste Griff ist eine Netzwerk-Sandbox — die gehärteten Container, die von NVIDIA, die Docker-Compose-Rezepte, die die Runde machen. Die Form ist immer dieselbe: Zähle die Hosts auf, die der Agent erreichen darf, verweigere den Rest. Es funktioniert wunderbar, wenn der Agent eine bekannte, eng umrissene Aufgabe hat. Ein Produktions-Agent, der mit drei internen Diensten und einem Modell-Endpunkt spricht, lebt für immer hinter einer Allowlist, denn die Liste ist kurz und hört auf, sich zu ändern.
Ideenfindung hat keine kurze Liste, und sie hört nie auf, sich zu ändern. Niemand will eine Whitelist jeder Registry, jedes CDN, jedes Git-Hosts und jeder einmaligen API pflegen, die ein Experiment erreichen könnte — sie ist nie fertig, sie wächst jeden Nachmittag, und der Tag, an dem sie etwas Legitimes blockiert, ist der Tag, an dem der Entwickler sie deaktiviert, um sich selbst zu entsperren. Die Allowlist ist nicht falsch; sie sichert einen Agenten, dessen Scope bereits bekannt ist. Der ganze Wert der Werkbank ist, dass der Scope eben noch nicht bekannt ist.
Nimm einen konkreten Nachmittag. Ein Entwickler hat Node-Konfigurations-
dateien, die auf zig Megabyte angewachsen sind, und der YAML-Parser, den
er nutzt, verschluckt sich daran. Es gibt mehrere Kandidaten — js-yaml,
yaml, yaml-js — und der einzige Weg herauszufinden, welcher eine
40-MB-Datei überlebt, ohne den Heap zu sprengen, ist, alle drei zu
installieren und die Datei auf jeden zu werfen. Ein Ticket zu erstellen,
um drei Bibliotheken in den privaten Mirror zu bekommen, damit sie
gebenchmarkt werden können, ist genau verkehrt herum: Der Entwickler
will zuerst testen und den Sieger in den Mirror befördern, nicht
umgekehrt. Die Vorab-Prüfung ist das Tor, durch das das Experiment
überhaupt erst hindurchgehen will.
Darunter liegt ein leiseres Problem. Diese Werkzeuge härten den Agenten
in der Produktion — deployt, gescopt, beaufsichtigt. Aber eine
Supply-Chain-Kompromittierung landet auf dem Laptop des Entwicklers,
mitten im Experiment, mit echten Credentials in ~/.aws und ~/.npmrc,
weil Entwickler sie dort aufbewahren. Das Modell ist dort am stärksten,
wo die Angriffe nicht sind, und abwesend dort, wo sie sind.
Die Katz-und-Maus-Sandbox verliert die zweite Runde.
Der andere Instinkt ist, den Agenten auf dem Host zu belassen und den
Prozess einzusperren — den claude-Prozess daran zu hindern, ~/.ssh
und ~/.aws zu lesen. Es fühlt sich hermetisch an, bis du dich daran
erinnerst, dass die Aufgabe des Agenten ist, Code zu schreiben, und der
Code auf derselben Maschine läuft.
Der Agent gerüstet ein Projekt auf. Dann führst du — oder der Agent oder
ein zweites Werkzeug — npm install in dem Repo aus, das er gerade
geschrieben hat. Dieses npm install ist nicht der eingesperrte Prozess.
Sein postinstall-Hook liest ~/.aws/credentials wie jedes andere
Programm auf deinem Laptop, denn genau das ist es: ein weiteres Programm,
das das eine Dateisystem und den einen Schlüsselbund mit allem anderen
teilt, was du ausführst.
Das Gefängnis zog seine Grenze um einen Prozess. Die Gefahr war nie der
Prozess; sie war, dass jeder Prozess auf der Maschine ein Dateisystem und
einen Schlüsselbund teilt. Also patchst du — sperre auch die Shell ein,
dann node, dann den Paketmanager — und der Angreifer findet immer
weiter eine Tür, die du nicht verriegelt hast, denn auf einem Host gibt
es immer einen weiteren Prozess, einen weiteren Pfad zu denselben
Geheimnissen. Das ist das Spiel, und das Haus hat immer eine weitere Tür.
Zieh die Linie einmal, mit dem Hypervisor.
Bromure hört auf mitzuspielen, indem es die Grenze eine Ebene hinunterverlagert. Der Agent, die Shells, die er spawnt, die Pakete, die er installiert, und jeder Code, den diese Pakete ausführen, leben alle in einer VM pro Profil unter Linux. Deine echten Credentials betreten sie nie.
Der Unterschied ist die Art der Linie. Ein Prozess-Gefängnis ist eine Richtlinie über einen Prozess, und ein Geschwisterprozess umgeht sie. Die VM-Grenze ist die Wand zwischen Gast und Host, durchgesetzt vom Hypervisor — dieselbe Wand, die eine VM daran hindert, den Speicher einer anderen zu lesen. Es gibt keinen Syscall, um sie zu überqueren. Code im Inneren kann sich keinen Weg zu deinem Schlüsselbund erschließen, denn der Schlüsselbund ist in seiner Welt überhaupt nicht vorhanden.
Und innerhalb dieser Linie bist du frei. Installiere das ungeprüfte
Paket. Führe sein postinstall aus. Lass den Agenten deine Shell-Config
umschreiben, die Platte füllen, die Toolchain kaputtmachen. Die VM ist
wegwerfbar und enthielt nie etwas, das zählt. Diese Freiheit ist der
ganze Punkt — genau das, was eine Sandbox wegnimmt und was eine saubere
Grenze zurückgibt. Du bekommst keine Sicherheit, indem du die Werkbank
weniger nützlich machst; du bekommst sie, indem du die Werkbank zu einem
Ort machst, an dem von vornherein nichts Wertvolles im Raum war.
Dieselbe Linie ist der Ort, an dem drei Garantien aufhören, Ratschläge zu sein, die der Agent überstimmen kann, und zu Fakten werden, die unterhalb von ihm durchgesetzt werden — denn alles, was die VM nach außen tut, muss sie überqueren.
Drei Dinge, die die Linie wahr macht.
Keine Credentials zum Stehlen — das Geheimnis war nie im Raum.
Echte Tokens bleiben auf dem Host. Die VM bekommt Stubs:
syntaktisch gültige Credential-Dateien, deren Inhalt im öffentlichen
Internet nichts bedeutet. Wenn der Agent einen legitimen Aufruf macht,
der ein echtes Token braucht, tauscht ein Host-Proxy den Stub am Draht
gegen das echte Geheimnis und tauscht es wieder aus der Antwort heraus.
Eine kompromittierte Abhängigkeit, die das Dateisystem nach
~/.aws/credentials, ~/.npmrc oder id_rsa durchkämmt, findet
Platzhalter. Das ist der Token-Tausch: Das Credential existiert, der
Agent nutzt es für das, wofür es da ist, und die Kopie, die gestohlen
werden könnte, existiert nirgends, wo die Welt des Agenten hinreicht.
Das breite Token verengen — vor der Nutzung fragen, vor dem Mutieren fragen.
Echte Tokens sind meist breiter als die Aufgabe. Der Broker hält
Berechtigungen kurzlebig und gescopt und — der Teil, der seinen Wert
beweist — behandelt ein Lesen und ein Schreiben unterschiedlich. Ein
Lesen passiert. Ein zustandsändernder Aufruf — ein git push, ein
DROP TABLE, ein AWS-Terminate* — pausiert an der Grenze und fragt
dich, auf dem Host, und zeigt die wörtliche Operation, nicht eine
Zusammenfassung, die der Agent geschrieben hat.
Das ändert, was ein breites Token bedeutet. Eines, das Produktion löschen könnte, kann das nur, wenn ein Mensch den exakten Aufruf sah und ja sagte; der auf dem Credential aufgedruckte Scope hört auf, der Explosionsradius zu sein. Der Agent kann sich nicht selbst vorab freigeben, den Modus nicht herabstufen oder die Berechtigung lesen — die Entscheidung lebt auf der anderen Seite der Linie. Als ein Agent in neun Sekunden eine Produktionsdatenbank löschte, war das Prinzip dasselbe: Das Ding, das den Befehl ausführen will, sollte nicht das Ding sein, das entscheidet, dass er sicher ist.
Sei nicht der Erste, der es herausfindet — Supply Chain an der Tür gestoppt.
Der beste Moment, ein vergiftetes Paket zu stoppen, ist, bevor es landet.
Jeder Fetch überquert die Grenze, also scannt der Proxy ihn — OSV für
bekannte CVEs, socket.dev für das, was die Datenbanken noch nicht
erwischt haben: bösartige Install-Skripte, Typosquats, die vor einer
Stunde veröffentlichte Kompromittierung. Und er erzwingt einen
Cooldown: jedes Release der letzten zwei Tage (einstellbar) ist
schlicht nicht installierbar, während das Ökosystem aufholt. Das ganze
Zeitfenster eines Wurms ist die Lücke zwischen veröffentlichen und
zurückziehen; einen Tag alte Pakete abzulehnen heißt, sich zu weigern,
der Kanarienvogel zu sein. postinstall-Hooks werden auf dem Weg hinein
aus dem Tarball entfernt, der Hash angepasst, damit der Install weiterhin
verifiziert — sodass das landende Paket inert landet. Nichts davon
verlangt vom Entwickler, irgendetwas zu prüfen. Er zieht, was immer er
will; die Grenze ist das, was wartet.
Die meisten Tools decken eine Ebene ab. Bromure deckt alle ab.
Isolation, Secrets aus dem Agent heraushalten, ihre Nutzung eingrenzen, die Lieferkette scannen, Prompt-Injection abfangen — meist greift man sich nur eine Sache heraus. Hier ist dasselbe Agent-Bedrohungsmodell über die Tools hinweg, zu denen Leute greifen, und wo jedes davon endet.
| Schutz | Dev ContainerVS Code | nonokernel sandbox | agent-vaultoctokraft | Agent VaultInfisical | Docker SandboxesmicroVM | BromureAgentic Coding |
|---|---|---|---|---|---|---|
Isolationsgrenze Wo der Schadensradius endet | Gleicher Container, geteilter Kernel | Kernel-Allowlists, kein eigener Kernel | Agent läuft direkt mit | Nur Proxy; Agent ungeschützt | microVM, eigener Kernel | Hardware-VM, eigener Kernel |
Secrets vom Agent fernhalten Kann er das echte Credential je lesen? | Reicht SSH-Agent + Git-Creds durch | Blockt Key-Dateien; brokert teils | Per Pipe rein; kein Lesepfad | Proxy hängt sie auf der Leitung an | Host-Proxy fügt Header ein | Stub auf der Leitung getauscht |
Credential-Umfang & Freigabe Pro Nutzung begrenzen, Read-only, Ablauf, Freigabe | Keine Begrenzung pro Nutzung | Freigabe-Flow + Egress-Filter | TTL je Secret; blockt Shells | Egress-Filter je Endpunkt | Domain-Allowlist; VM-interner Code nutzt es trotzdem | Freigabe je Ziel + TTL |
Lieferketten-Scan Bösartige / verwundbare Pakete abfangen | Kein Registry-Scan | Nur Signierung, kein Paket-Scan | Außerhalb des Umfangs | Außerhalb des Umfangs | Kein Paket-Scan | Age-Gate, OSV, socket.dev |
Prompt-Injection-Erkennung Scannt unsichere Inhalte & Regeldateien | — | — | — | — | — | PromptGuard + ModernBERT |
Audit-Trail Aufzeichnen, was der Agent tat | Nur Container-Logs | Unveränderliches lokales Audit | — | Request-Logging | Request-Logging | Vollständiger Session-Trace, verschlüsselt |
Lieferketten-Inventar(Enterprise) Aufzeichnung jedes geholten Pakets | — | — | — | — | — | Jede Abhängigkeit + Verdikt, durchsuchbar |
Token-Verbrauch(Enterprise) Welche Dateien die meisten Token verbrauchen | — | — | — | — | — | Je Datei, Repo und Modell |
Ein Token zu verbergen ist nicht dasselbe wie seine Nutzung zu kontrollieren. Docker Sandboxes hält den echten Wert aus der VM heraus — doch sein Proxy hängt dieses Credential an jede ausgehende Anfrage der Sandbox an, sodass ein kompromittiertes, nebenbei installiertes Paket es gegen einen freigegebenen Dienst einsetzen kann, ohne es je zu sehen. Nur Bromure scannt das Paket vor der Ausführung und sichert jede Nutzung ab — Freigabe, Read-only, TTL — und erzwingt alle fünf Kontrollen an einer Grenze, an der der Agent nicht vorbeikommt.
Zusammengestellt aus der öffentlichen Dokumentation jedes Projekts, Juni 2026. agent-vault bezeichnet hier octokraft/agent-vault (Pipe-basierte Secret-Injektion), zu unterscheiden von Infisicals Agent Vault (HTTP-Credential-Proxy). Docker Sandboxes ist eine experimentelle Vorschau, deren gebrokerte Credentials für alles in der VM nutzbar bleiben. Das flottenweite Paket-Inventar und die Token-Verbrauchs-Auswertungen liefert der Bromure Enterprise Manager. Diese Tools entwickeln sich schnell — etwas veraltet? Sag uns Bescheid.
Das vierte Ding: Eine Anweisung in den Daten ist kein Befehl.
Die drei Garantien oben teilen eine Annahme, die es wert ist,
ausgesprochen zu werden: Sie alle verteidigen gegen Code, der etwas
nimmt — ein Credential, ein Token, die Chance eines frischen
Tarballs, ausgeführt zu werden. Es gibt einen Angriff, der nichts
nimmt. Er sagt dem Agenten einfach, was er tun soll. Eine Zeile,
vergraben in einer README, die der Agent liest, ein String auf einer
abgerufenen Seite, ein Satz in der Ausgabe eines Tools, eine
versteckte Anweisung in der CLAUDE.md, die der Agent als
Dauerbefehl behandelt — das Modell nimmt sie als Kontext auf und
gehorcht ihr als Anweisung. Gib die Datei preis. Schwäche die Prüfung
ab. Überspring den Test. Eine Sandbox hat dazu keine Meinung, denn
nichts hat eine Wand überquert, die sie bewacht: Die Anweisung kam
als Daten an, in Inhalten, die der Agent lesen sollte.
Aber sie hat die Linie überquert — alles, was das Modell sieht, tut
das. Also liest die Grenze sie seit 2.4.0 zuerst,
auf dem Gerät, auf der Host-Seite. Ein lokaler
PromptGuard-Klassifikator bewertet die nicht vertrauenswürdigen
Inhalte, die zum Modell fließen — Dateilesungen, Web-Abrufe,
Tool-Ausgaben — auf Anweisungen, die dort nichts zu suchen haben.
Und die Regeldateien, denen ein Agent ohne Rückfrage gehorcht —
CLAUDE.md, AGENTS.md, GROK.md — bekommen einen strengeren
doppelten Durchlauf: einen deterministischen Scan auf unsichtbares
Unicode, Tricks mit bidirektionalem Text und Meta-Anweisungen im
Stil von „ignore previous instructions“, plus einen feinabgestimmten
ModernBERT-Klassifikator für den ruhig formulierten Missbrauch, den
ein Schlüsselwortfilter übersieht. Pro Profil wählst du den Biss:
protokolliere es im Security Log, frage nach und sieh den
markierten Text, oder blockiere die Anfrage, bevor das Modell die
vergiftete Passage je sieht. Nichts verlässt den Mac.
Die Platzierung ist dasselbe Argument wie bei den anderen drei. Einem Agenten, der eine Injektion bereits geschluckt hat, kann man nicht zutrauen, sie zu melden — die erste Anweisung der Injektion ist meist irgendeine Version von erwähne das nicht. Der Detektor fragt den Agenten nicht. Er liest den Verkehr auf der anderen Seite der Linie, wohin die Überredungskunst des Agenten nicht reicht.
Wo die Linie dich nicht rettet.
Eine Grenze ist eine bestimmte Form, kein Zauberwort. Vier ehrliche Kanten:
Das Profil ist langlebig, also bleibt Persistenz bestehen.
Ein Bromure-Profil ist keine wegwerfbare Platte. Eine Payload, die sich in einen Startup-Pfad schreibt, kann in der nächsten Session aufwachen — in einem Gast ohne Host-Schlüssel und mit einem Broker, der nur kurzlebige, nachgefragte, gescopte Tokens spricht. Anwesenheit in einem Raum, in dem nichts ist, aber Anwesenheit gleichwohl.
Ein Schreibvorgang, den du genehmigst, ist ein Schreibvorgang, der geschieht.
Die Nachfrage fängt den Aufruf ab, von dem der Agent dir nichts
erzählt hat. Sie liest dein Diff nicht. Genehmige ein git push, und
Bromure leitet es weiter — einschließlich, im Prinzip, eines
vergifteten Workflows, den du nicht bemerkt hast. Es verlagert die
Entscheidung zu dir und zeigt die echte Operation; sie zu lesen ist
weiterhin deine Aufgabe.
Der Cooldown ist ein Zeitfenster, keine Wand.
Zwei Tage sind auf die beobachtete Lücke zwischen Veröffentlichen und Zurückziehen abgestimmt. Ein geduldiger Angreifer kann auf einer kompromittierten Version über den Cooldown hinaus sitzen und an Tag drei installierbar sein. Es hungert Same-Day-Würmer aus; es bürgt nicht für ein Paket, das bloß alt geworden ist. socket.dev und OSV müssen weiterhin ihren Teil tun.
Scope den Broker bewusst.
Isolation hält die Explosion auf; das Scoping entscheidet, wie groß sie hätte sein können. Ein Profil, das nur ein Repo liest, sollte kein Token halten, das es beschreibt; eines, das nie veröffentlicht, sollte kein Publish-Token halten. Die Linie hält Geheimnisse aus der VM — welche Geheimnisse überhaupt existieren, ist weiterhin deine Entscheidung.
Die Linie, die wir halten werden.
Hier ist die Verpflichtung. Ein Entwickler sollte nicht zum Sysadmin werden müssen — eine Allowlist pflegen, jede Abhängigkeit vorab freigeben, die Geschwindigkeit aufgeben, die einen Agenten lohnenswert machte — um seinen Schlüsselbund zu behalten. Eine Sandbox macht Sicherheit zu einem Handel gegen Nützlichkeit, und Entwickler wählen vernünftigerweise immer wieder die Nützlichkeit. Eine Grenze lehnt den Handel ab: tu alles im Inneren, denn das Innere ist entbehrlich, und die vier Dinge, die zählen — deine Credentials, der Scope deiner Tokens, die Pakete, die dich erreichen, die Anweisungen, die dein Modell erreichen — werden an einer Linie entschieden, mit der der Code im Inneren nicht streiten kann.
Darum ist „es ist eine Sandbox“ die Beschreibung, die wir immer wieder korrigieren werden. Eine Sandbox schränkt den Agenten ein. Bromure schränkt die Grenze ein und setzt den Agenten frei. Bromure Agentic Coding ist frei, Open Source und heute ausgeliefert.