shell.exec aus, bearbeitet Dateien, holt URLs und
lädt Community-Skills — jedes davon kann ein Volume rm -rfen, eine .env
lesen oder zu einem Angreifer-Host exfiltrieren. Dieses Rezept grenzt diese
Surface mit der Firewall ein: destruktive Shell
ablehnen, die Argumente der Aufrufe validieren, die Sie doch erlauben, Egress
einzäunen und die wirklich riskanten Operationen für einen Menschen
zurückhalten. Nichts davon berührt den Code Ihres Agenten — die Policy lebt im
Gateway und wird beim nächsten Aufruf durchgesetzt.
Alles unten wird in der Konsole konfiguriert (Firewall → Posture /
Policies). Diese Management-Routen verwenden Ihre Konsolen-Session, nicht einen
Relay-Schlüssel. Nur die
/v1/*-Aufrufe, die Ihr Agent macht, tragen einen
sk-orca-…-Schlüssel. Policy-Bearbeitungen erfordern die Rolle Developer.1. Beginnen Sie mit Beobachten, nicht Blockieren — die Baseline für einen sicheren Coding-Agenten
Verfassen Sie Regeln nicht blind. Geben Sie dem Agenten seinensk-orca-…-Schlüssel, öffnen Sie dann Firewall → Posture und wenden Sie
das balanced-Autonomie-Level
an. In einer Transaktion auditiert das jeden Tool-Call, flaggt PII und lehnt
destruktive Shell ab — sodass die schlimmste Aktion bereits eingezäunt ist,
während Sie den Rest des Agentenverhaltens aus echtem Traffic lernen.
Lassen Sie ihn laufen, lesen Sie dann Firewall → Discovered tools: jedes
Tool, das der Workspace gesehen hat, geflaggt als covered (eine Regel
trifft zu) oder gap (keine tut es). Diese Liste ist Ihr Allowlist-Entwurf.
Wenn der Feed richtig aussieht, wechseln Sie zu tight (Default-Deny) oder
verfassen Sie die zielgerichtete Policy unten.
2. Destruktive Shell ablehnen — der nicht verhandelbare Boden
Die einzelne wichtigste Regel für einen Coding-Agenten ist keine destruktive Shell. Die Autonomie-Levelbalanced und tight liefern dies bereits als das
Block destructive shell-Preset, das echte, editierbare deny-Regeln
materialisiert, die sowohl die workspace-direkten Tool-Namen (shell.*,
bash, cmd.*, powershell.*, exec.*) als auch die MCP-namespaced Formen,
die ein registrierter Server exponiert (*.shell.*, *.cmd.*, …), abdecken.
Wenn Sie es enger als „alle Shell ablehnen” eingrenzen wollen, verfassen Sie
eine Regel, die nur die destruktiven Befehle ablehnt und den Rest auditiert.
Eine Regel matcht auf einem Tool-Namen-Glob plus einem optionalen
Argument-Prädikat (JSONPath gegen die Argumente des Aufrufs):
rm -rf ablehnen, aber andere Shell-Aufrufe erlauben
rm -rf ablehnen, aber andere Shell-Aufrufe erlauben
Fügen Sie in Firewall → Policies eine Regel über Ihrem Default hinzu:
- Tool-Glob:
shell.exec - Args match (JSONPath-Klausel):
- Verdikt:
deny
eq, contains,
regex, in, cidr_match, gt, lt. Ein Aufruf, dessen $.command auf
das Regex matcht, wird blockiert; alles andere fällt zur nächsten Regel
durch.Wie der Block aussieht
Wie der Block aussieht
Ein abgelehnter Aufruf auf der inbound-Surface gibt HTTP 400 mit dem
Fehlercode
firewall_blocked und einer Nachricht zurück, die das Tool und
den Grund benennt. Ein durch das MCP-Gateway dispatchter Aufruf kommt als
Tool-Fehler (firewall deny: …) zurück, sodass das Modell reagieren kann,
statt abzustürzen. Inbound-Blocks feuern vor dem Upstream-Modellaufruf,
kosten also keine Modell-Tokens.3. Argumente auf den Tools validieren, die Sie behalten
Ein Tool zu erlauben ist nicht dasselbe wie jedes Argument dafür zu erlauben. Dasselbe JSONPath-Prädikat, das ein deny eingrenzt, lässt Sie die Form eines erlaubten Aufrufs einschränken — sodassdb.query kein DROP tragen kann und
file.write kein Verzeichnis verlassen kann.
Ein SQL-DROP blockieren
Glob
db.query, Klausel
{"path":"$.sql","op":"regex","value":"(?i)\\bdrop\\b"}, Verdikt
deny.Ein Secret in Argumenten redigieren
Verdikt
sanitize redigiert gematchte Teilstrings aus den
Tool-Call-Argumenten, bevor der Aufruf weitergeleitet wird. Es berührt
nie, was ein Tool zurückgibt; auf der inbound-Surface (noch keine
Aufruf-Argumente) eskaliert es zu einem Block.4. Egress steuern — einzäunen, wohin der Agent reichen kann
Ein Coding-Agent, der URLs holen kann, kann in SSRF gesteuert werden (Treffen von Cloud-Metadata oder einem internen10.x-Host) oder zur Exfiltration
genutzt werden. Das tight-Autonomie-Level liefert ein SSRF-Preset, das
fetch-förmige Tool-Namen (http_fetch, web_search, fetch_url,
request und ihre <server>.*-Formen) ganz ablehnt.
Für Kontrolle auf Zielebene verfassen Sie eine egress-Regel.
Egress-Regeln grenzen nach Host oder CIDR mit allow- / deny-Einträgen ein,
ausgewertet auf der egress-Surface:
Kein Preset liefert CIDR-basierte Egress-Regeln — das SSRF-Preset matcht
fetch-förmige Tool-Namen. Die Host-/CIDR-Denylist oben ist eine, die Sie
selbst verfassen. Siehe Exfiltration stoppen
für das vollständige Muster.
5. Riskante Operationen für einen Menschen zurückhalten (HITL)
Manche Operationen sollten nicht auto-erlaubt oder auto-abgelehnt werden — ein Deploy, eingit push, eine destruktive Migration. Verwenden Sie dafür das
pending_approval-Verdikt. Der Aufruf wird zurückgehalten, der Agent erhält
eine „held”-Antwort mit einer Approval-ID, und ein Prüfer löst sie
out-of-band auf:
- Verfassen Sie eine Regel (z. B. Glob
deploy.*, Verdiktpending_approval). - Der zurückgehaltene Aufruf gibt HTTP 400
firewall_approval_pendingmit einer Approval-ID zurück. - Ein Prüfer genehmigt sie aus der Konsole (Developer+) oder über einen HMAC-signierten Webhook-Callback.
- Der Agent pollt die Approval und reicht dann den ursprünglichen Aufruf mit
einem einmal nutzbaren
X-OrcaRouter-Firewall-Approval-Header erneut ein — und das Gateway lässt ihn dieses eine Mal durch.
6. Die Skills und MCP-Server steuern, die er lädt
Coding-Agenten ziehen Fähigkeiten zur Laufzeit herein — Community-Skills, BYO MCP-Server. Die Firewall steuert beide am Gateway:- Skills werden in ein Risikoband mit einem Enforcement-Mode (
allow/quarantine/block) gescannt. Ein auto-erkannter Skill wird quarantäniert — zur Freigabe zurückgehalten — bis ein Prüfer ihn freigibt. Siehe Skills. - MCP-Server, die Sie registrieren, dispatchen jeden
tools/calldurch das Gateway, das jeden auf dermcp-Surface vor dem Dispatch auswertet. Credentials werden verschlüsselt gespeichert; ein Health-Probe meldetok/degraded/down. Siehe MCP-Server und Einen MCP-Agenten härten.
7. Verifizieren und beobachten
Bevor Sie sich auf eine Policy verlassen, dry-runnen Sie sie. Der Test-Tab wertet einen Beispiel-Tool-Call gegen die aktuelle Policy aus und zeigt das Verdikt, die gematchte Regel und den Grund — nichts wird dispatcht, nichts persistiert. Einmal live, ist Firewall → Events / Runs der Datensatz jeder Auswertung, filterbar nach Verdikt, Surface, Tool und Run, und der Anomalie-Feed flaggt Raten-/Kosten-Spikes gegen die gelernte Baseline des Workspaces,retry_loop und nie zuvor gesehene Tool-Pfade.
Rückblick
Firewall-Referenz
Die vollständige Policy-Ebene — Surfaces, Verdikte, Auflösung, Autonomie.
Firewall-Regeln
Die Matching-Sprache: Globs, Argument-Klauseln, Egress, Sequenzen.
Gefährliche Tool-Calls
Die Bedrohung, gegen die sich dieses Rezept verteidigt.
Übermäßige Handlungsmacht
Warum überberechtigte Agenten das Kern-Agentenrisiko sind.
Rezept: autonomer Agent
Eine vollständig autonome Agentenschleife Ende zu Ende eingrenzen.
Exfiltration stoppen
Die Egress- und Lethal-Trifecta-Muster im Detail.
