TIPS 20 · NOTTE

Der Mac, der nicht schläft

Die Nachricht, die ich Claude hinterlasse, bevor ich schlafen gehe, und wie ich den Mac und die Berechtigungen vorbereite, damit Claude die ganze Nacht arbeitet, ohne Schaden anzurichten.

Was es ist und warum es zählt

Claude Code kann stundenlang arbeiten, auch wenn du nicht da bist. Eines Abends habe ich es ihm wirklich geschrieben: „Ich gehe schlafen, du hast volle Befugnis.“ Am nächsten Morgen war der Build online.

Aber das funktioniert nur, wenn du ihm drei Dinge mitgibst: ein klares Ziel, eine Möglichkeit, seine Arbeit selbst zu prüfen, und eine Grenze dafür, was er anfassen darf.

Ohne Ziel dreht er sich im Kreis. Ohne Prüfung erzählt er dir, dass alles in Ordnung ist. Ohne Grenzen kann er Schaden anrichten. Mit allen dreien findest du morgens die Arbeit und eine Liste von Entscheidungen zum Absegnen, keine Überraschungen.

1. Die Nachricht am Abend

Ich schreibe sie in die Claude-Code-Sitzung, die im Projekt offen ist, als letzte Nachricht, bevor ich ins Bett gehe. Kopiere sie und fülle die Stellen in [ ] aus.

Die Nachricht
Ich gehe schlafen. Du hast volle Befugnis über diese Arbeit, bis morgen früh.

ZIEL
[Ein einziger Satz, konkret. Z. B.: "Die neue Preisseite, online auf der Test-Website".]
Du bist fertig, wenn: [z. B. "die Seite sich auf dem Handy öffnet und die Buttons zur Testzahlung führen"].

WIE DU SELBST PRÜFST
- Lass nach jeder Änderung die Tests laufen und mach nicht weiter, wenn einer fehlschlägt.
- Öffne die Seite im Browser und mach einen Screenshot von jedem fertigen Bildschirm.
- Sag mir nicht "fertig" ohne Beweis: den Befehl, den du benutzt hast, und das Ergebnis.

GRENZEN (was du NICHT anfassen darfst)
- Die echte Datenbank, die Nutzerdaten, die echten Zahlungen.
- Lösch keine Dateien, veröffentliche nichts im App Store, ändere die Schlüssel nicht.
- Wenn du für den nächsten Schritt eins davon tun müsstest: Halt an und schreib es mir.

WENN DU FESTSTECKST
Versuch zwei verschiedene Wege. Wenn keiner funktioniert, schreib auf, wo du stehen geblieben bist, und mach mit dem nächsten Teil weiter.

MORGEN FRÜH
Hinterlass mir eine Zusammenfassung: was du gemacht hast, was du allein entschieden hast und warum, was du von mir brauchst.

Wie du die Stellen in [ ] ausfüllst

  • Ziel: nur eine Sache. „Bring die Website in Ordnung“ ist kein Ziel. „Die neue Preisseite, online auf der Test-Website“ schon.
  • „Du bist fertig, wenn“: Schreib, was du mit eigenen Augen sehen würdest, wenn die Arbeit erledigt wäre. Das ist die Zeile, die ihm sagt, wann er aufhören soll.
  • Die Tests müssen schon existieren und durchlaufen, bevor du schlafen gehst. Wenn du keine hast, kann genau das die Arbeit für heute Nacht sein: sie zu schreiben.
  • Die Screenshots kann Claude nur machen, wenn er einen Weg hat, den Browser zu öffnen, zum Beispiel über die Verbindung mit Chrome. Wenn nicht, streich die Zeile oder setz eine Prüfung ein, die er im Terminal machen kann.

2. Bevor du das Licht ausmachst

Wenn der Mac in den Ruhezustand geht, hört auch Claude auf. Bevor ich die Nachricht einfüge, mache ich vier Dinge:

  1. Ich sichere alles mit einem Commit. So sehe ich morgen früh in den Änderungen nur die Arbeit der Nacht.
  2. Ich schließe das Ladegerät an.
  3. Ich lasse den Laptop offen. Den Deckel zu schließen schickt ihn in den Ruhezustand, auch mit den Einstellungen, die ihn wach halten.
  4. Ich verhindere den Ruhezustand. In der Claude-Desktop-App gibt es die Option Keep computer awake unter Settings > This computer > System. Im Terminal nutze ich einen Befehl, den der Mac schon hat: caffeinate.

Im Terminal starte ich Claude Code so:

Die Zeile
caffeinate -i claude

caffeinate -i hält den Mac wach, solange Claude Code offen bleibt. Wenn du es schließt, verhält sich der Mac wieder wie immer. Der Bildschirm darf trotzdem ausgehen, das ändert nichts.

3. Lass ihn nicht auf ein Ja warten

Im Manual-Modus fragt Claude Code vor den meisten Änderungen und Befehlen um Erlaubnis. Nachts heißt das: Bei der ersten Frage bleibt er stehen, bis du aufwachst.

Deshalb schaue ich, bevor ich schlafen gehe, in welchem Modus ich bin. Im Terminal wechselst du ihn mit Shift+Tab und siehst ihn unter der Eingabezeile. Nachts nutze ich einen dieser zwei:

  • auto: Claude arbeitet, ohne dich etwas zu fragen, und ein zweites Modell prüft die Aktionen, bevor sie laufen, und blockiert die riskanten (Deploys in die Produktion, Massenlöschungen, Force-Push). Es berücksichtigt auch die Grenzen in der Nachricht. Wenn du den Modus mit Shift+Tab nicht findest, hat ihn dein Konto oder Modell nicht: Nimm den anderen.
  • acceptEdits: Dateiänderungen und ein paar einfache Befehle, etwa Ordner anlegen oder verschieben, laufen ohne Nachfrage. Bei anderen Befehlen würde Claude fragen, deshalb gehört dieser Modus zu den Allow-Regeln weiter unten, damit er wenigstens die Tests laufen lassen kann.

Eine Sache zum auto-Modus: Wenn er eine Aktion 3-mal hintereinander oder 20-mal insgesamt blockiert, pausiert er, und Claude fragt dich wieder um Erlaubnis. Wenn du ihn morgens bei einer Frage stehen siehst, schau, was er tun wollte: Genau das ist eine der Entscheidungen, die bei dir liegen.

Den Modus, der alle Berechtigungen überspringt (bypassPermissions), nutze ich dagegen nicht: Laut Dokumentation gehört er nur in isolierte Container oder virtuelle Maschinen, nicht auf deinen Mac.

4. Echte Grenzen: Regeln und Hooks

Eine Regel in der Nachricht ist eine Bitte; ein Hook ist eine Mauer. Die Dokumentation sagt das auch, mit anderen Worten: Berechtigungen setzt Claude Code durch, nicht das Modell. Was du in die Nachricht schreibst, lenkt, was Claude versucht, ändert aber nicht, was er darf.

Die Allow- und Deny-Regeln

Das sind Zeilen in der Datei .claude/settings.json des Projekts. Allow: was Claude ohne Nachfrage tun darf. Deny: was er nie tun darf, in keinem Modus. Steht etwas in Allow und in Deny, gewinnt Deny. Du siehst und änderst sie auch, wenn du in Claude Code /permissions eingibst.

Tagsüber bitte ich Claude, sie vorzubereiten:

Der Prompt
Füge der Datei .claude/settings.json dieses Projekts eine Allow-Regel hinzu, damit du die Tests ohne Nachfrage laufen lassen kannst, und Deny-Regeln für: git push, rm-Befehle, Änderungen an der Datei .env. Zeig mir die Datei, bevor du sie speicherst.

Ungefähr so sollte es aussehen (statt npm test kommt der Testbefehl deines Projekts hinein):

Die Datei
{
  "permissions": {
    "allow": ["Bash(npm test *)"],
    "deny": [
      "Bash(git push *)",
      "Bash(rm *)",
      "Edit(./.env)"
    ]
  }
}

Achtung: Eine Regel blockiert den Befehl in genau dieser Schreibweise, nicht dasselbe Programm in anderer Form. Deshalb bleiben die Grenzen auch in der Nachricht, und die echten Schlüssel haben im Projekt am besten gar nichts zu suchen.

Der Hook für gefährliche Befehle

Ein Hook ist ein Befehl, den Claude Code von selbst zu einem bestimmten Zeitpunkt ausführt. Der, den du hier brauchst, heißt PreToolUse: Er greift, bevor Claude ein Werkzeug benutzt, zum Beispiel vor jedem Befehl im Terminal. Das Skript schaut sich den Befehl an, und wenn es mit Code 2 endet, blockiert Claude Code ihn und gibt Claude den Grund weiter, damit er einen anderen Weg nimmt. Der Hook blockiert auch Befehle, die eine Allow-Regel durchlassen würde.

Du musst ihn nicht selbst schreiben. Ich bitte Claude darum, auch das tagsüber:

Der Prompt
Erstelle für dieses Projekt einen PreToolUse-Hook in .claude/settings.json, der Bash-Befehle blockiert, die Folgendes enthalten: rm -rf, git push --force, [der Befehl, mit dem du deine App veröffentlichst]. Das Skript muss mit Code 2 enden und den Grund für die Blockade schreiben. Dann teste ihn: Zeig mir, dass ein verbotener Befehl wirklich gestoppt wird und dass ein normaler Befehl durchgeht.

Dann gebe ich in Claude Code /hooks ein und prüfe, ob er in der Liste unter PreToolUse auftaucht.

5. Am nächsten Morgen

Als Erstes lese ich die Zusammenfassung, vor allem den Teil „was du allein entschieden hast“. Dort stehen die Dinge, die ich absegnen muss. Dann führe ich selbst einen der Befehle aus, die er als Beweis benutzt hat: Wenn bei mir ein anderes Ergebnis herauskommt, zählt dieser Beweis nicht.

Und in derselben Sitzung frage ich:

Der Prompt
Zeig mir die Liste der Dateien, die du heute Nacht geändert hast. Sag mir bei jeder Entscheidung, die du allein getroffen hast, was passiert, wenn ich sie rückgängig mache.

Häufige Fehler

  • Ihn im Manual-Modus lassen: Bei der ersten Berechtigungsanfrage bleibt er bis zum Morgen stehen. Bevor du gehst, wähl den Modus und richte die Allow-Regeln ein.
  • Ein vages Ziel wie „verbessere die App“: Er arbeitet die ganze Nacht, und du weißt nicht, woran. Schreib eine einzige Sache, mit der Zeile „du bist fertig, wenn“.
  • Den Deckel schließen oder ihn im Akkubetrieb lassen: Der Mac geht in den Ruhezustand, oder der Akku ist mitten in der Nacht leer. Lass ihn offen, am Ladegerät, mit caffeinate oder der Option, die ihn wach hält.
  • Sich nur auf die Grenzen in der Nachricht verlassen: Sie sind eine Bitte, und in einem langen Gespräch können sie verloren gehen. Für Dinge, die nie passieren dürfen, setz eine Deny-Regel oder einen Hook.

Checkliste

  • Ein Ziel in einem Satz und die Zeile „du bist fertig, wenn“
  • Die Tests existieren und laufen durch, bevor die Nacht beginnt
  • Alles vor der Nacht mit einem Commit gesichert
  • Modus gewählt: auto oder acceptEdits mit den Allow-Regeln
  • Deny-Regeln und Hook tagsüber getestet
  • Ladegerät dran, Deckel offen, Mac geht nicht in den Ruhezustand
  • Die Abendnachricht eingefügt, mit deinen Grenzen

Häufige Fragen

Muss ich die Sitzung über Nacht offen lassen?

Ja, die Sitzung arbeitet auf deinem Mac. Wenn sie bei ausgeschaltetem Computer weiterlaufen soll, hat Claude Code Sitzungen in der Cloud, aber das ist ein anderes Setup.

Reicht der auto-Modus nicht, ohne Regeln und Hooks?

Er blockiert schon von selbst viele riskante Aktionen, aber die Dokumentation sagt selbst, dass er keine Sicherheit garantiert. Und die Grenzen, die du im Chat schreibst, liest er jedes Mal neu aus dem Gespräch: Wird das Gespräch komprimiert, können sie verloren gehen. Für Dinge, die nie passieren dürfen: Deny-Regel oder Hook.

← Alle Anleitungen