Anthropic hat einem Problem eine harte Zahl gegeben, das jeder intensive Claude-Code-Nutzer längst spürt: Nutzer haben rund 93 % der Berechtigungsabfragen bestätigt, und das Unternehmen sagt selbst, dass die Aufmerksamkeit nachlässt, je mehr Prompts sich stapeln (Anthropic). Das ist Approval Fatigue — und sie macht aus „Human in the loop“ am Ende „Mensch hält Enter gedrückt“.
Die falsche Antwort ist, --dangerously-skip-permissions auf dem Laptop laufen zu lassen und zu hoffen, dass sich das Modell benimmt. Die richtige Antwort ist langweiliges Security Engineering: Claude Code in einen Dev Container stecken, ihm nur das Repo geben, ausgehenden Traffic beschränken, Bypass-Modus per Policy deaktivieren und Auto-Modus nur dort verwenden, wo er tatsächlich unterstützt wird.
Dieser Guide zeigt ein lauffähiges Setup, das du heute in ein Repo legen kannst. Er behandelt auch den aktuellen Streit in der Community: Entwickler wollen autonomere Agents, aber keine unsichtbaren Leitplanken oder Blackbox-Dateiscans. Die praktische Antwort lautet nicht: „Vertrau Claude einfach mehr.“ Sie lautet: „Mach den Explosionsradius klein genug, damit Autonomie akzeptabel wird.“

In der Debatte geht es eigentlich um Beobachtbarkeit und Explosionsradius
Der Hacker-News-Thread zu „Anthropic tries to hide Claude’s AI actions“ ist nicht nur Beschwerdetheater. Ein Kommentator hat die Entwicklerangst gut zusammengefasst: Wenn ein Agent anfängt, veraltete Configs zu öffnen oder irrelevante Dateien zu durchwühlen, muss der Operator das schnell genug merken, um ihn zu stoppen (Hacker News). Ein anderer Thread über den „gefährlichen“ Betrieb von Claude Code kam beim gleichen praktischen Muster heraus: Lass den Agent frei laufen, aber nur in einer Sandbox mit begrenztem Datei- und Netzwerkzugriff (Hacker News).
Anthropics eigener Engineering-Post landet an derselben Stelle. Er trennt Schutzmaßnahmen in Umgebung, Modell und externe Inhalte. Die Umgebung ist der Teil, den du deterministisch machen kannst. Wenn Zugangsdaten nie in die Sandbox gelangen, kann Claude sie auch nicht exfiltrieren — egal ob der Auslöser Prompt Injection, Modell-Übereifer oder eine schlechte Nutzeranweisung ist (Anthropic).
Auto-Modus passt hier hinein, ist aber keine Magie. Anthropic sagt, dass Auto-Modus einen separaten Klassifikator nutzt, um Aktionen vor der Ausführung zu prüfen; die Doku nennt ihn außerdem eine Research Preview, nicht einen Ersatz für Review bei sensiblen Operationen (Claude Code docs). Diese Unterscheidung ist wichtig. Auto-Modus reduziert Prompts. Container reduzieren Konsequenzen.
Das ist die Haltung, die ich Teams empfehle:
| Modus | Dafür nutzen | Nicht dafür nutzen |
|---|---|---|
plan | unbekannte Repos, riskante Änderungen | lange unbeaufsichtigte Edits |
acceptEdits | normale Feature-Arbeit | Deploys, Secrets, Infra-Änderungen |
auto | isolierte Dev Container mit Egress-Kontrolle | Produktionssysteme oder unbekannte Repos |
bypassPermissions | nur Wegwerf-VMs | Entwickler-Laptops |
Anthropics Doku sagt, dass Auto-Modus Claude Code v2.1.83 oder neuer erfordert. Auf der Anthropic API gehören Claude Opus 4.6 oder neuer und Sonnet 4.6 zu den unterstützten Modellen. Für Bedrock, Vertex AI und Microsoft Foundry listet die Doku nur Opus 4.7 und Opus 4.8 für Auto-Modus auf (Claude Code docs).
Den Dev Container bauen
Lege drei Dateien in deinem Repo an:
.devcontainer/
devcontainer.json
Dockerfile
managed-settings.json
Beginne mit .devcontainer/devcontainer.json:
{
"name": "claude-code-safe",
"build": {
"dockerfile": "Dockerfile"
},
"remoteUser": "node",
"mounts": [
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
],
"runArgs": [
"--cap-add=NET_ADMIN",
"--cap-add=NET_RAW"
],
"containerEnv": {
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"ANTHROPIC_BASE_URL": "https://api.onehop.ai/anthropic",
"ANTHROPIC_API_KEY": "${localEnv:ONEHOP_API_KEY}"
},
"postCreateCommand": "sudo /usr/local/bin/init-firewall.sh"
}
Anthropics Dev-Container-Doku empfiehlt, Claude Code in einem Container auszuführen, damit Befehle weg vom Host laufen, während Änderungen trotzdem im gemounteten Repo erscheinen (Claude Code docs). Sie warnt außerdem davor, Host-Secrets wie ~/.ssh oder Cloud-Credential-Dateien zu mounten. Halte dich daran. Wenn Claude einen Repo-begrenzten GitHub-Token braucht, reiche einen kurzlebigen Token über die Umgebung durch. Mounte nicht dein gesamtes Home-Verzeichnis, nur weil es bequem ist.
Jetzt das Dockerfile:
FROM mcr.microsoft.com/devcontainers/javascript-node:22
RUN npm install -g @anthropic-ai/claude-code@latest
COPY managed-settings.json /etc/claude-code/managed-settings.json
COPY init-firewall.sh /usr/local/bin/init-firewall.sh
RUN chmod +x /usr/local/bin/init-firewall.sh
Die Anthropic-Doku bietet auch ein Dev Container Feature, aber die Installation über das Dockerfile macht Policy und Versionierung in einem Team-Repo leichter nachvollziehbar. Wenn du Reproduzierbarkeit willst, pinne @anthropic-ai/claude-code auf eine konkrete Version und behalte DISABLE_AUTOUPDATER=1.
Berechtigungen verriegeln, bevor du Auto-Modus aktivierst
Erstelle .devcontainer/managed-settings.json:
{
"permissions": {
"defaultMode": "auto",
"disableBypassPermissionsMode": "disable",
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(./config/credentials.json)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(git push *)",
"Bash(kubectl *)",
"Bash(terraform apply *)",
"WebFetch(domain:169.254.169.254)"
],
"ask": [
"Bash(npm publish *)",
"Bash(docker push *)",
"Bash(gh release *)"
],
"allow": [
"Bash(npm install)",
"Bash(npm test *)",
"Bash(npm run lint *)",
"Bash(git diff *)",
"Bash(git status *)"
]
},
"autoMode": {
"environment": {
"trustedDomains": [
"registry.npmjs.org",
"github.com"
]
}
}
}
Zwei Details leisten hier echte Arbeit.
Erstens blockiert disableBypassPermissionsMode bypassPermissions und deaktiviert das Flag --dangerously-skip-permissions, wenn es über Managed Settings erzwungen wird. Anthropic dokumentiert genau diese Kontrolle in seiner Settings-Referenz (Claude Code docs).
Zweitens bleiben Deny-Regeln auch im Auto-Modus wichtig. Anthropic sagt, dass Auto-Modus Aktionen blockiert, die über die Anfrage hinaus eskalieren, unbekannte Infrastruktur ansteuern oder von feindlichen Inhalten getrieben wirken. Aber du solltest die Policy deines Teams nicht an einen Klassifikator auslagern. Wenn niemand terraform apply aus einer Agent-Session ausführen soll, dann kodiere das als Deny-Regel.
Eine Einschränkung: Repository-verwaltete Policy kann von jedem geändert werden, der das Repo ändern kann. Anthropics Doku sagt, dass /etc/claude-code/managed-settings.json unter Linux eine hohe Priorität hat; für Policy, die Entwickler nicht durch Repo-Edits umgehen können, solltest du aber serververwaltete Settings oder MDM verwenden (Claude Code docs). Für ein Startup-Team ist eingecheckte Policy trotzdem eine gute Baseline. Beim Enterprise-Rollout solltest du dort nicht stehen bleiben.

Egress mit einer kleinen Allowlist beschränken
Füge .devcontainer/init-firewall.sh hinzu:
#!/usr/bin/env bash
set -euo pipefail
ALLOWED_HOSTS=(
api.onehop.ai
api.anthropic.com
claude.ai
platform.claude.com
registry.npmjs.org
github.com
raw.githubusercontent.com
)
iptables -P OUTPUT DROP
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
for host in "${ALLOWED_HOSTS[@]}"; do
for ip in $(getent ahostsv4 "$host" | awk '{print $1}' | sort -u); do
iptables -A OUTPUT -p tcp -d "$ip" --dport 443 -j ACCEPT
done
done
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
Das ist absichtlich simpel. Es löst erlaubte Hostnamen beim Start auf und erlaubt TCP 443 zu diesen IPs. Für produktionsreife Kontrolle setzt du den Container hinter einen Proxy und loggst jede Anfrage. Aber selbst diese einfache Default-Deny-Regel ist besser, als einem autonomen Coding-Agent das ganze Internet offen zu lassen.
Anthropics Netzwerk-Doku listet benötigte Domains wie api.anthropic.com, claude.ai, platform.claude.com, downloads.claude.ai, storage.googleapis.com und raw.githubusercontent.com, abhängig von Installations- und Authentifizierungspfad (Claude Code docs). Wenn du über npm installierst und Auto-Updates deaktivierst, brauchst du die Download-Domains zur Laufzeit vielleicht nicht. Halte die Liste eng und füge Domains nur hinzu, wenn Builds aus einem bekannten Grund scheitern.
Ausführen:
export ONEHOP_API_KEY=oh_your_key_here
code .
# VS Code: Dev Containers: Rebuild and Reopen in Container
claude --permission-mode auto
Im Container prüfen:
whoami
claude --version
curl -I https://api.onehop.ai
curl -I https://example.com
Die OneHop-Anfrage sollte funktionieren. Die Anfrage an example.com sollte fehlschlagen, sofern du die Domain nicht hinzugefügt hast.
Claude Fable 5 über OneHop routen
Anthropic hat Claude Fable 5 und Claude Mythos 5 am 9. Juni 2026 veröffentlicht. Fable 5 kostet 10 Dollar pro Million Input-Tokens und 50 Dollar pro Million Output-Tokens, also weniger als die Hälfte des Preises von Mythos Preview (Anthropic). OneHop listet Claude Fable 5 als anthropic/claude-fable-5, mit offiziellem Pricing von $10/M Input und $50/M Output sowie OneHop-Preisen von $3/M Input und $15/M Output, plus $10 Startguthaben für neue Nutzer ohne erforderliche Karte (OneHop).
Aktueller Betriebs-Hinweis: Die OneHop-Seite zu Fable 5 sagt, dass das Modell vorübergehend nicht verfügbar ist, obwohl es weiter gelistet wird. Lass die Config stehen, aber rechne damit, es erst zu nutzen, wenn dein Account und deine Region Zugriff haben.
Für einen direkten Anthropic-Messages-Aufruf über OneHop verwendest du den Anthropic-kompatiblen Endpoint, den OneHop für dieses Modell veröffentlicht:
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.onehop.ai/anthropic",
api_key="oh_your_key_here",
)
message = client.messages.create(
model="anthropic/claude-fable-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Summarize this repo's test strategy."}],
)
print(message.content[0].text)
Wenn deine App bereits OneHops OpenAI-kompatibles Gateway nutzt, ist die einzeilige base URL-Änderung:
client = OpenAI(base_url="https://api.onehop.ai/v1", api_key="oh_your_key_here")
Für Claude Code konkret verwendest du die Anthropic-kompatible base URL in ANTHROPIC_BASE_URL, weil Claude Code die Anthropic Messages API spricht. OneHops Fable-5-Modellseite listet Anthropic Messages derzeit als verfügbar unter https://api.onehop.ai/anthropic, während OpenAI Chat Completions für dieses Modell als nicht unterstützt markiert ist (OneHop).

Das Betriebsmodell: Weniger vertrauen, schneller shippen
Das beste Claude-Code-Setup ist nicht das großzügigste. Es ist das, bei dem Fehler billig sind.
Nutze den plan-Modus, wenn Claude eine neue Codebase erkundet. Wechsle erst zu auto, wenn die Aufgabe klar begrenzt ist. Halte bypassPermissions per Policy deaktiviert. Verweigere Lesezugriff auf Secrets. Verweigere Deploys, Pushes auf geschützte Branches, Cloud-Mutationen und Metadata-Endpoints. Setze den Agent in einen Nicht-Root-Dev-Container. Blockiere Egress standardmäßig. Reviewe den Diff vor dem Merge.
Das klingt vielleicht langsamer als YOLO-Modus. In der Praxis ist es schneller, weil niemand 40 triviale Prompts beaufsichtigen oder sich fragen muss, ob eine Bestätigung gerade einem Modell erlaubt hat, einen Token zu exfiltrieren. Anthropics eigener Containment-Post sagt, dass der Referenz-Dev-Container existiert, damit Claude Code unbeaufsichtigt ohne Freigaben pro Aktion laufen kann (Anthropic). Das fehlende Stück ist Team-Policy.
Wenn du den kürzesten Weg suchst, Fable-Class-Coding auszuprobieren, ohne deinen Provider-Stack neu aufzubauen, route über Claude Fable 5 on OneHop. Neue Accounts können mit $10 gratis starten. Die base URL-Änderung ist der einfache Teil. Der eigentliche Gewinn entsteht, wenn du sie mit einem Container kombinierst, der Autonomie sicher genug macht, um sie wirklich zu nutzen.