Claude Code autonoom laten werken: auto mode, Ralph-loop en tmux
Claude Code 's nachts laten doorwerken: auto mode in plaats van --dangerously-skip-permissions, de Ralph-loop tegen te vroeg stoppen, en tmux om de sessie levend te houden.

Het idee is verleidelijk: je geeft Claude Code 's avonds een flinke taak, gaat slapen en vindt de volgende ochtend werkende code met groene tests. Daarvoor moet je twee gewoontes van Claude Code omzeilen. Hij vraagt toestemming voordat hij iets doet. En hij stopt zodra hij denkt dat hij klaar is, ook als de tests nog rood zijn.
Voor het eerste probleem was --dangerously-skip-permissions lang het standaardantwoord. Dat is niet meer de beste route. Voor het tweede is er de Ralph-loop, en inmiddels ook het ingebouwde commando /goal.
Bijgewerkt op 5 november 2026: auto mode is nu de standaard op elk abonnement, de Ralph-plugin is verhuisd naar de officiële pluginrepository, en
/goalen achtergrondsessies staan erin als ingebouwde alternatieven voor de Ralph-loop en tmux.
Probleem 1: Claude vraagt steeds toestemming
In de handmatige modus (in de CLI heet die Manual) vraagt Claude Code toestemming voordat hij bestanden aanpast, shellcommando's draait of het netwerk op gaat. Kom je na een uur terug, dan kan hij al die tijd op één Enter hebben gewacht.
Auto mode: de standaardkeuze voor lange taken
Claude Code heeft inmiddels een auto mode. Daarin beoordeelt een tweede model, de classifier, elke actie in plaats van jij. Gewoon werk in je projectmap gaat door; riskante acties worden tegengehouden. Standaard blokkeert de classifier onder meer: code downloaden en uitvoeren (zoals curl | bash), gevoelige data naar buiten sturen, productie-deploys en migraties, force pushes, git reset --hard en het definitief verwijderen van bestanden die er al stonden voordat de sessie begon.
Sinds Claude Code 2.1.283 (eind september 2026) start elke interactieve sessie in de terminal en in VS Code standaard in auto mode, op elk abonnement. Eén keer Shift+Tab zet je terug naar Manual. Een sessie met claude -p kan in sommige situaties toch in Manual starten, dus geef de modus daar expliciet mee:
claude --permission-mode auto
De documentatie noemt auto mode de modus voor lange taken. Een sandbox of container is daarbij extra bescherming, geen vereiste.
--dangerously-skip-permissions: alleen in een container
De vlag bestaat nog. Hij zet de modus bypassPermissions aan: alle toestemmingsvragen en veiligheidschecks vallen weg, ook voor schrijven naar beschermde paden. De documentatie is er duidelijk over: gebruik dit alleen in geïsoleerde omgevingen zoals containers, VM's of dev containers zonder internettoegang, waar Claude Code je eigen systeem niet kan beschadigen. Als root weigert Claude Code de vlag, behalve binnen een herkende sandbox.
Anthropic levert een dev container-configuratie die Claude Code als gewone gebruiker draait. Voor volledig onbeheerd werk in zo'n container geeft de documentatie dit voorbeeld:
claude -p "schrijf unit tests voor de billing-module" --dangerously-skip-permissions
Het verschil in één zin: bij auto mode kijkt een tweede model mee, bij bypass kijkt niemand mee.
Wat CLAUDE.md wel en niet doet
Een CLAUDE.md in de root van je project leest Claude Code aan het begin van elke sessie. Zet erin hoe het project werkt: stack, conventies, hoe je de tests draait. Hoe concreter, hoe beter Claude het volgt.
# CLAUDE.md ## Stack - Backend: PHP (Laravel 11) - Frontend: React + Vite - Database: MySQL 8 ## Werkwijze - Tests draaien: php artisan test - Nieuwe code in /app en /resources - Databasewijzigingen alleen via migrations
Verboden horen er niet in thuis, of in elk geval niet alleen daar. Volgens de documentatie behandelt Claude CLAUDE.md als context, niet als afgedwongen configuratie. Wat echt niet mag, zet je in deny-regels in .claude/settings.json. Die gelden in elke modus, ook in bypassPermissions.
{
"permissions": {
"deny": [
"Read(./.env)",
"Edit(./.env)",
"Bash(git push *)"
]
}
}
Eén kanttekening: een Bash-regel matcht de tekst van het commando. Bash(git push *) houdt git push origin main tegen, maar niet git -C . push origin main. Wil je iets waterdicht blokkeren, gebruik dan een PreToolUse-hook of de sandbox.
Probleem 2: Claude stopt te vroeg
Het tweede probleem los je niet op met permissies. Claude denkt dat hij klaar is terwijl de tests nog falen, en wacht op jou. Daarvoor is de Ralph-loop.
Waarom heet het Ralph Wiggum?
Ralph Wiggum is het jongetje uit The Simpsons dat vrolijk doorgaat, hoe vaak het ook misgaat. Ontwikkelaar Geoffrey Huntley beschreef de techniek in juli 2025 met de zin "Ralph is a Bash loop": een while-lus die dezelfde prompt steeds opnieuw aan een coding-agent voert. Elke ronde ziet de agent het werk van de vorige ronde terug in de bestanden.
De officiële plugin
Anthropic maakte er een officiële plugin van. In de pluginlijst heet hij Ralph Loop. Anthropic beheert hem nu in de repository claude-plugins-official, in de map ralph-loop; eerder stond hij als ralph-wiggum in de repository van Claude Code. De plugin werkt binnen je sessie, zonder bash-lus:
- Je start één keer een loop met
/ralph-loopen een opdracht. - Claude werkt aan de taak en probeert op een gegeven moment te stoppen.
- Een Stop-hook onderschept dat moment en geeft dezelfde opdracht opnieuw.
- Claude ziet zijn eigen eerdere werk: de gewijzigde bestanden en de git-geschiedenis. Faalden de tests, dan ziet hij dat ook.
- Dit herhaalt zich tot Claude de afgesproken voltooiingstekst geeft, of tot het maximale aantal rondes bereikt is.
# Loop starten (binnen een Claude Code-sessie) /ralph-loop "[taakomschrijving]" --completion-promise "COMPLETE" --max-iterations 30 # Tussentijds stoppen /cancel-ralph
Met --completion-promise geef je de tekst op die Claude als <promise>COMPLETE</promise> moet uitvoeren als het werk af is. De plugin vergelijkt die tekst letterlijk, dus je kunt er geen meerdere voorwaarden in stoppen. --max-iterations staat standaard op onbeperkt. Een onmogelijke taak loopt zonder die grens eindeloos door, en elke ronde kost tokens. Zet hem dus altijd.
Een prompt die een loop aankan
Bij Ralph is de prompt het hele stuur. Niemand kijkt mee om bij te sturen, dus alles wat vaag is, vult Claude zelf in, en dat dertig keer.
Te vaag:
"Bouw een todo API en maak het goed."
Toetsbaar:
Bouw een REST API voor todos. Klaar als: - Alle CRUD-endpoints werken (GET, POST, PUT, DELETE) - Alle endpoints valideren hun input - De tests slagen (coverage > 80%) - Er een README met API-documentatie is Output <promise>COMPLETE</promise> als aan alle criteria is voldaan.
Te groot:
"Bouw een compleet e-commerceplatform."
Gefaseerd:
Fase 1: Gebruikersauthenticatie (JWT, registratie, login, tests) Fase 2: Productcatalogus (lijst, zoeken, detail, tests) Fase 3: Winkelwagen (toevoegen, verwijderen, afrekenen, tests) Werk fase voor fase. Begin pas aan fase 2 als fase 1 volledig klaar is. Output <promise>COMPLETE</promise> als alle drie de fases klaar zijn.
In de goede versies kan Claude zelf vaststellen of hij klaar is. Dat is precies wat de voltooiingstekst nodig heeft.
Wanneer Ralph niet werkt
De plugin-documentatie noemt zelf de gevallen waarin je het beter niet gebruikt: taken die menselijk oordeel of ontwerpkeuzes vragen, eenmalige handelingen, taken zonder duidelijk succescriterium en debuggen in productie. Huntley is ook voorzichtig. Hij ziet de techniek vooral voor nieuwe projecten, rekent erop dat je ongeveer 90% van de weg komt. In een apart stuk vatte hij zijn houding samen in de titel "LLMs are mirrors of operator skill": de uitkomst is zo goed als degene die de loop aanstuurt.
/goal: de ingebouwde variant
Claude Code heeft een eigen commando dat hetzelfde idee uitvoert: /goal met een voorwaarde, bijvoorbeeld /goal alle tests in tests/auth slagen en lint is schoon. Na elke beurt controleert een apart model of de voorwaarde klopt; zo niet, dan werkt Claude door. Technisch is het net als de Ralph-plugin een Stop-hook, maar je hebt geen plugin nodig en geen voltooiingstekst die letterlijk moet overeenkomen. Wil je dat de beurten zonder toestemmingsvragen doorlopen, draai /goal dan in auto mode. Wie een vast maximum aan rondes wil, of de prompt elke ronde opnieuw wil geven, blijft de Ralph-plugin gebruiken.
Alles samen: een onbeheerde sessie
Om de sessie te laten doorlopen als je de terminal sluit of je SSH-verbinding verbreekt, draai je Claude in tmux. tmux houdt de terminalsessie in leven op de machine waarop hij draait, los van jouw verbinding. Dat moet dan wel een machine zijn die aan blijft, zoals een server of een desktop. Klap je de laptop dicht waarop tmux zelf draait, dan gaat alles mee in slaap.
Een ingebouwd alternatief is een achtergrondsessie: claude --bg "opdracht" start een sessie die zonder open terminal doorwerkt en die je terugvindt in de agent view. Volgens de documentatie blijven zulke sessies bewaard als je computer in slaap valt, en gaan ze verder bij het ontwaken. Agent view is nog een research preview.
# 1. Naar je project (met CLAUDE.md en deny-regels) cd ~/projects/mijn-app # 2. tmux-sessie starten tmux new -s ralph-werk # 3. Claude starten in auto mode claude --permission-mode auto # 4. In Claude: de loop starten /ralph-loop "Bouw de auth-module af. Klaar als: JWT-login, registratie en refresh token werken, wachtwoordreset via e-mail werkt, de tests slagen (coverage > 80%) en de conventies uit CLAUDE.md gevolgd zijn. Output <promise>COMPLETE</promise> als alles klaar en getest is." --completion-promise "COMPLETE" --max-iterations 30 # 5. Loskoppelen: Ctrl+B, daarna D # 6. Later terugkeren tmux attach -t ralph-werk
Een logbestand met | tee heb je hier niet nodig, en het werkt ook niet goed met een interactieve terminal-interface. Claude Code bewaart elke sessie als transcript op je eigen machine (onder ~/.claude/projects/, standaard 30 dagen), en de git-geschiedenis laat zien wat er per ronde veranderde.
Wat levert het op?
De README van de plugin noemt drie resultaten: zes repositories in één nacht tijdens een hackathon bij Y Combinator, een opdracht van 50.000 dollar opgeleverd voor 297 dollar aan API-kosten, en een complete programmeertaal ("cursed") gebouwd in drie maanden. Het zijn claims van de makers, zonder onafhankelijke controle. Het voorbeeld van het contract komt uit een screenshot die Huntley deelde, en daarbij werd een andere coding-agent gebruikt (Amp), niet Claude Code.
Vijf regels voor een nacht zonder toezicht
- Maak de opdracht toetsbaar. Meetbare criteria, liefst in de vorm van tests die Claude zelf kan draaien.
- Leg verboden vast in de instellingen, niet alleen in CLAUDE.md.
- Zet altijd
--max-iterations. Standaard is er geen grens. - Gebruik bypass alleen in een container. Op je eigen machine is auto mode de verstandige keuze.
- Review alles voordat het naar productie gaat. Claude is krachtig, maar niet onfeilbaar.
Een goede prompt schrijven is de helft van het werk. De andere helft is vooraf vastleggen wat Claude niet mag, en achteraf lezen wat hij deed. De loop werkt 's nachts door, maar het oordeel blijft bij jou.
Verder lezen op deze site
- Claude Code Routines: zo werken ze en hier liggen de grenzen
- Starten met Claude Code in november 2026: de complete gids voor Python, IDE en database
- Claude Code in PhpStorm: installatie, plugin en de gewoontes die werken
- Herdr, Caprock en ccdeck vergeleken: zo houd je meerdere codeeragents bij (november 2026)
Bronnen
- Claude Code-documentatie: Choose a permission mode
- Claude Code-documentatie: Configure permissions
- Claude Code-documentatie: How Claude remembers your project
- GitHub: ralph-loop-plugin in anthropics/claude-plugins-official
- Claude Code-documentatie: /goal
- Claude Code-documentatie: agent view en achtergrondsessies
- Claude Code-documentatie: sessies en transcripts
- Claude Code CHANGELOG (2.1.283/2.1.284: auto mode standaard)
- Claude-plugins: Ralph Loop
- Geoffrey Huntley: Ralph (juli 2025)
- Geoffrey Huntley: LLMs are mirrors of operator skill


