Coding Harness erklärt

Der Harness ist die Laufzeitumgebung hinter Claude Code. Er orchestriert Werkzeugaufrufe, isoliert Ausführungen, kontrolliert Permissions und verwaltet Output. Entwickler definieren seine Grenzen durch Konfiguration — sie sehen ihn nie direkt.

Kernaufgaben

  • Werkzeuge in Sandbox ausführen
  • Datei- und Netzwerk-Zugriffe kontrollieren
  • Output puffern, filtern, maskieren
  • Events und Hooks verarbeiten
  • Fehler isolieren (non-fatal)
Kernkonzept

Harness ≠ Code. Der Harness ist die Infrastruktur um deinen Code. Claude entscheidet was ausgeführt wird. Der Harness entscheidet wie und unter welchen Bedingungen.

Architektur: Vom Tool-Aufruf zum Output

So fließt eine Anfrage durch den Harness

Tool Request (bash, MCP, files) Permission Check (allowed? sandbox ok?) Route Tool Bash Shell MCP Server Remote Tool File I/O Read/Write Collect & Process (buffer, filter, format) Result to Claude

Was der Harness IST — und definitiv NICHT

✓ Harness IST

  • Prozess-Isolations-Engine
  • Permission & Sandbox Manager
  • Event-Loop für Tool-Calls
  • Error Handler (non-fatal)
  • Output Buffer & Filter
  • Lifecycle Hooks & Callbacks

✗ Harness ist NICHT

  • Ein LLM oder AI-Model
  • Dein Code oder Skripte
  • Ein Compiler/Interpreter
  • Ein Web-Server oder Framework
  • Ein Datenspeicher (no state)
  • Ein CI/CD oder Deployment Tool

In der Praxis: 3 Szenarien

Bash-Befehl ausführen

Claude möchte eine Datei lesen. Der Harness fängt den bash-Aufruf ab, verifiziert Permissions, führt ihn in Sandbox aus, puffert Output und gibt Ergebnis zurück.

// Claude ruft auf:
const result = await bash('cat /src/file.txt');

// Harness verarbeitet:
// 1. Permission: /src readable? ✓
// 2. Sandbox: isolate with limited $PATH
// 3. Execute: bash "cat /src/file.txt"
// 4. Buffer: stdout → "file contents"
// 5. Filter: remove secrets (API keys, tokens)
// 6. Return: {success: true, stdout, stderr, exitCode}

// Claude erhält:
// {
//   success: true,
//   stdout: "file contents here...",
//   stderr: "",
//   exitCode: 0
// }

Häufige Missverständnisse

Mythos #1

"Harness macht die KI-Entscheidungen."

Realität: Harness ist pure Infrastruktur. Claude wählt welches Tool und mit welchen Parametern. Der Harness wählt ob und wie es ausgeführt wird (Sandbox, Permissions, Timeout). Zwei völlig unterschiedliche Verantwortungen.

Referenz: Was der Harness kontrolliert

Ubersicht über die Kontrollpunkte des Harness

Bereich Wer kontrolliert Beispiel
File I/O Harness (via Permissions) Read /src ✓, Write /etc ✗
Tool Execution Harness (via Allowlist) bash enabled, docker disabled
Network Harness (via Firewall) Local nur localhost, Remote: api.example.com
Environment Harness (Isolation) Keine $HOME, $USER. Nur whitelisted vars.
Timeouts Harness (Default) Bash: 120s, MCP: 30s, File I/O: 10s
Output Filtering Harness (Pipeline) API keys, tokens, passwords automatisch gemask
Error Isolation Harness (Handler) Tool-Fehler stoppen nicht die Harness-Loop
Best Practice

Konfiguriere Permissions nach Principle of Least Privilege — eng, nicht breit. Wenn ein Tool nicht in der Allowlist steht: Es gibt einen Grund. Frage nach, statt zu forcen.