Dit is de uitgebreide handleiding. Voor een overzicht in vijf minuten leest u de bijbehorende blogpost.
1. Waarom geplande agents ertoe doen
Tot voor kort werkte een AI-codeeragent alleen zolang iemand meekeek. U opende een terminal, gaf een opdracht, keurde de acties goed en las het resultaat. Sloot u de sessie, dan stopte het werk. Dat model past bij verkennend werk, maar veel engineeringwerk is verkennend noch urgent. Het is terugkerend: de issuewachtrij van de afgelopen nacht triëren, controleren of de documentatie nog klopt met de API, elke pull request tegen dezelfde checklist reviewen, een deployment verifiëren voordat het releasevenster sluit.
Teams die een agent dit werk onbewaakt wilden laten doen, moesten het leidingwerk zelf bouwen. De gebruikelijke opties waren een cronjob in GitHub Actions, een reservemachine die ergens in een kast bleef draaien, of een workflow-engine zoals Trigger.dev of n8n met een agentaanroep erop geschroefd. Het werkt allemaal, maar elke oplossing voegt infrastructuur, credentials, kosten en onderhoud toe rond wat in feite één instructie is: "doe dit elke nacht en vertel me wat je hebt gevonden."
Routines maken dat leidingwerk overbodig. Het schema, de rekenkracht, de checkout van de repository en de audittrail zitten allemaal in Claude Code zelf.
2. Wat een routine is
Anthropic definieert een routine als een opgeslagen Claude Code-configuratie. Die bestaat uit vijf onderdelen:
- Prompt. De instructie die Claude bij elke run uitvoert. Omdat niemand aanwezig is om vragen te beantwoorden, moet de prompt op zichzelf staan en beschrijven wat "klaar" betekent. Hier kiest u ook het model, en dat model wordt bij elke run gebruikt.
- Repositories. Een of meer GitHub-repositories. Elke repository wordt aan het begin van elke run opnieuw gekloond, vanaf de standaardbranch tenzij de prompt iets anders zegt.
- Cloudomgeving. Deze bepaalt netwerktoegang, omgevingsvariabelen en een optioneel setupscript dat afhankelijkheden installeert. Het resultaat van de setup wordt gecachet, zodat die niet elke keer opnieuw draait.
- Connectors. De MCP-integraties op uw claude.ai-account, zoals Slack, Linear of Google Drive, waaruit de routine mag lezen en waarnaar hij mag schrijven.
- Triggers. Een of meer van: schema, API en GitHub-event. Eén routine kan alle drie combineren.
Elke run is een volwaardige Claude Code-cloudsessie. Die kan shellcommando's uitvoeren, de skills gebruiken die in de gekloonde repository zijn vastgelegd en elke tool aanroepen op de connectors die u hebt opgenomen. Er is geen keuze voor een permissiemodus en niets wacht op goedkeuring. Die autonomie is precies de bedoeling, en daarom is scoping ook zo belangrijk (zie sectie 8).
3. De drie soorten triggers
3.1 Schema
De eenvoudigste trigger voert de routine uit volgens een vast ritme (elk uur, dagelijks, op werkdagen of wekelijks) of één keer op een specifiek moment in de toekomst. Een paar details zijn goed om te weten:
- Lokale tijd. U voert tijden in uw eigen tijdzone in en Claude Code rekent ze om. Een run om 09:00 vindt dus plaats om 09:00 op uw klok, waar de cloudhardware ook staat. Sommige vroege handleidingen van derden stelden dat schema's alleen in UTC werkten. De documentatie van Anthropic zegt iets anders.
- Vermijd het hele uur. Runs die precies op het hele uur zijn gepland, kunnen enkele minuten later starten. Kiest u 09:07 in plaats van 09:00, dan is de timing voorspelbaarder.
- Eigen cron. Voor intervallen die de voorinstellingen niet dekken, zoals om de twee uur of op de eerste van de maand, kiest u de dichtstbijzijnde voorinstelling en voert u daarna
/schedule updateuit in de CLI om een cron-expressie in te stellen. Het minimuminterval is één uur; alles wat vaker is, wordt geweigerd. - Eenmalige runs. Beschrijf het tijdstip in gewone taal, bijvoorbeeld
/schedule in 2 weeks, open a cleanup PR that removes the feature flag. Claude bevestigt het exacte tijdstip voordat hij de routine opslaat. Nadat de run is uitgevoerd, schakelt de routine zichzelf uit en krijgt hij de status Ran. Eenmalige runs tellen niet mee voor het dagelijkse maximum.
3.2 API
Een API-trigger geeft de routine een eigen HTTPS-endpoint. Elk systeem dat een geauthenticeerd POST-verzoek kan doen, kan een run starten: een alertingtool, een deploymentpipeline, een interne beheerpagina. Het token wordt in de web-UI gegenereerd, één keer getoond, is alleen geldig voor die routine en kan op elk moment opnieuw worden gegenereerd of ingetrokken.
curl -X POST https://api.anthropic.com/v1/claude_code/routines/<ROUTINE_TRIGGER_ID>/fire \
-H "Authorization: Bearer <ROUTINE_TOKEN>" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text": "Error rate on checkout-api above 5% for 10 minutes."}'
Het antwoord bevat een sessie-ID en een sessie-URL die u kunt openen om de run live te volgen. Het optionele veld text bevat context die specifiek is voor de run. Beveiligingsbewuste teams doen er goed aan te weten dat Claude Code deze tekst in een <routine-fire-payload>-blok verpakt en als niet-vertrouwde gegevens markeert. Claude volgt geen instructies daarin op, tenzij de eigen opgeslagen prompt van de routine zegt dat de payload gebruikt moet worden. Als uw routine op de inhoud van een alert moet reageren, moet de prompt dat expliciet zeggen, bijvoorbeeld: "Onderzoek de alert die in het routine-fire-payload-blok wordt beschreven." Door dit ontwerp kan iemand met een uitgelekt token wel een run starten, maar niet de instructies van de routine herschrijven.
Het endpoint zit achter een gedateerde beta-header. Anthropic geeft aan dat breaking changes onder nieuwe headerversies worden uitgebracht en dat de twee vorige versies blijven werken, zodat aanroepers tijd hebben om te migreren.
3.3 GitHub-events
Een GitHub-trigger start een nieuwe sessie telkens wanneer er een passend event plaatsvindt op een gekoppelde repository. Daarvoor moet de Claude GitHub App op die repository zijn geïnstalleerd. Twee categorieën events worden ondersteund:
- Pull request: geopend, gesloten, toegewezen, gelabeld, gesynchroniseerd en andere updates.
- Release: aangemaakt, gepubliceerd, bewerkt of verwijderd.
Filters bepalen welke events meetellen. U kunt filteren op auteur, titel, body, basisbranch, headbranch, labels, draftstatus en merge-status, met de operatoren equals, contains, starts with, is one of, is not one of en matches regex. Alle voorwaarden moeten kloppen. Eén valkuil: matches regex test het volledige veld, dus om elke titel met "hotfix" erin te vangen hebt u .*hotfix.* nodig, niet hotfix.
Elk event levert een eigen, onafhankelijke sessie op, dus twee pushes naar dezelfde pull request betekenen twee runs. Tijdens de preview gelden voor GitHub-events bovendien limieten per uur, per routine en per account. Events boven de limiet worden genegeerd totdat het venster opnieuw begint.
4. Stap voor stap een routine aanmaken
U kunt routines op drie plekken aanmaken: op het web via claude.ai/code/routines, in de sectie Routines van het tabblad Code in de Claude Desktop-app, of in de CLI. Alle drie schrijven naar hetzelfde account, dus een routine die u op de ene plek aanmaakt, verschijnt direct ook op de andere.
4.1 Op het web
- Open
claude.ai/code/routinesen kies New routine. - Geef de routine een naam en schrijf de prompt. Selecteer het model.
- Voeg de repositories toe waarin Claude moet werken.
- Kies een cloudomgeving. De omgeving Default heeft netwerktoegang op het niveau Trusted, dat gangbare package registries, API's van cloudproviders en ontwikkeldomeinen toestaat. Moet de routine uw eigen services bereiken, pas dan eerst de toegestane domeinen van de omgeving aan.
- Selecteer een of meer triggers. Voor een API-trigger slaat u de routine eerst op; de URL en het token worden daarna gegenereerd.
- Controleer de connectors. Al uw gekoppelde connectors zijn standaard inbegrepen, en Claude kan elke tool daarop gebruiken, inclusief schrijfacties, zonder het te vragen. Verwijder alles wat de taak niet nodig heeft.
- Kies Create en daarna Run now om de routine te testen voordat u op het schema vertrouwt.
4.2 Vanuit de CLI
In elke lokale Claude Code-sessie maakt /schedule (alias /routines) via een gesprek een geplande routine aan. Claude vraagt naar het ritme, de repositories en de prompt, en slaat de routine daarna op in uw account.
/schedule daily PR review at 9am
/schedule tomorrow at 9am, summarise yesterday's merged PRs
/schedule list
/schedule update
/schedule run
/schedule why did my nightly review do nothing this morning?
Het laatste voorbeeld is bijzonder handig. Claude toont de recente runs van de routine, leest het relevante log en legt uit wat er is gebeurd, inclusief toolfouten en geweigerde permissies. Recente CLI-versies kunnen ook via een gesprek een GitHub-trigger koppelen zodra de GitHub App is geïnstalleerd. API-tokens kunnen echter alleen op het web worden aangemaakt of ingetrokken.
Wordt /schedule niet herkend, dan ligt dat bijna altijd aan de authenticatie. Routines vereisen een aanmelding met een claude.ai-abonnement. Een Console-API-sleutel, een omgevingsvariabele ANTHROPIC_API_KEY of een aanmelding via een cloudprovider zoals Amazon Bedrock verbergt het commando. Op de abonnementen Team en Enterprise kan een Owner routines bovendien voor de hele organisatie uitschakelen.
5. Prompts schrijven die onbewaakte runs doorstaan
De prompt van een routine lijkt meer op een runbook dan op een chatbericht. Er is niemand om onduidelijkheden op te helderen, dus vage instructies leveren vage resultaten op, of erger: zelfverzekerde acties die u niet bedoelde. Vergelijk:
"Kijk eens naar onze repo's en laat me weten wat er speelt."
"Geef een lijst van pull requests in acme/webapp die in de afgelopen 24 uur zijn geopend of bijgewerkt. Noteer per PR de auteur, of CI groen is en eventuele onopgeloste reviewthreads. Plaats geen commentaar bij een PR en wijzig er geen enkele. Plaats één Slack-bericht in #eng-daily met een tabel van de resultaten en vermeld PR's die ouder zijn dan vijf dagen apart onder 'Stale'. Als er geen PR's zijn, plaats dan 'No PR activity' en stop."
Een goede routineprompt beschrijft:
- Scope: welke repositories, welk tijdvenster en welke items.
- Toegestane acties: wat Claude mag wijzigen en, minstens zo belangrijk, waar hij niet aan mag komen.
- Uitvoer: de exacte bestemming en het formaat, zoals een draft-PR, een Slack-kanaal of een opmerking in een tracker.
- Stopvoorwaarden: wat te doen als er niets te doen is, en wanneer op te geven.
- Omgang met de payload: bij API-triggers: of en hoe de meegestuurde tekst moet worden gebruikt.
Reken erop dat u een nieuwe routine in de eerste week twee of drie keer bijschaaft. Lees de transcripten, niet alleen de statusbadge. Anthropic zegt expliciet dat een groene status alleen betekent dat de sessie is gestart en zonder infrastructuurfout is afgesloten. Het betekent niet dat de taak is geslaagd.
6. Sub-routines: werk structureren binnen één run
Anthropic levert geen functie die "sub-routines" heet. Bij Workstation gebruiken we de term voor een ontwerppatroon dat lange, onbewaakte runs veel betrouwbaarder maakt: de prompt van de routine fungeert als orkestrator en delegeert elke duidelijk afgebakende stap aan een subagent of een skill die in de repository is vastgelegd.
Dit werkt dankzij twee bouwstenen van Claude Code die met uw repository meereizen:
- Subagents zijn Markdown-bestanden met YAML-front matter in
.claude/agents/. Elke subagent heeft een eigen systeemprompt, een allowlist van tools en optioneel een eigen model, en draait in een eigen contextvenster. Alleen een samenvatting gaat terug naar de aanroeper. Subagents kunnen parallel draaien en kunnen standaard zelf tot drie niveaus diep delegeren. - Skills in
.claude/skills/bundelen herbruikbare procedures, zoals uw stijl voor release notes of uw checklist voor securityreviews, die Claude laadt wanneer ze relevant zijn. Routines gebruiken de skills die in de gekloonde repository zijn vastgelegd.
Een nachtelijke onderhoudsroutine die zo is opgebouwd, zou er zo uit kunnen zien:
# Routine prompt (orchestrator)
1. Use the issue-triager subagent to label and assign issues opened since the last run.
2. Pick the single highest-priority bug labelled "good-first-fix".
3. Use the bug-fixer subagent to implement a fix on a claude/ branch.
4. Use the test-runner subagent to run the test suite; if it fails twice, stop and report.
5. Open ONE draft PR, using the release-notes skill for the description.
6. Post a three-line summary to #eng-nightly.
# .claude/agents/issue-triager.md
---
name: issue-triager
description: Labels and assigns new issues. Never edits code.
tools: Read, Grep, Glob
model: haiku
---
You triage GitHub issues. Apply area labels from CODEOWNERS and
assign the owning team. Return a table of issue, label and owner.
De voordelen zijn praktisch. Elke helper ziet alleen wat hij nodig heeft, zodat de context van de orkestrator gedurende een lange run klein en gefocust blijft. Toolpermissies zijn per stap beperkter: de triager hierboven kan helemaal geen bestanden bewerken. Goedkopere modellen kunnen mechanische stappen afhandelen. En omdat de subagents en skills in versiebeheer staan, gaan wijzigingen in het gedrag van de routine net als elke andere wijziging door code review.
7. Co-routines: routines die samenwerken
Ook "co-routines" is onze term, geen functie van Anthropic. We gebruiken hem voor meerdere onafhankelijke routines die werk aan elkaar overdragen, zoals een productielijn een onderdeel van het ene station naar het volgende doorgeeft. Routines kunnen elkaar niet rechtstreeks aanroepen en delen geen geheugen. In plaats daarvan produceert de ene routine een duurzaam artefact waarop de trigger van een andere routine let.
Een typische keten:
- Routine A (schema) triëert op doordeweekse avonden de backlog en opent een draft-PR vanuit een
claude/fix-…-branch. - Routine B (GitHub,
pull_request.opened) is gefilterd op headbranches die beginnen metclaude/. Hij past de reviewchecklist van het team toe en labelt de PR. - Een mens reviewt en voert de merge uit. Dit is de goedkeuringspoort.
- Routine C (GitHub,
pull_request.closed, merged = true) werkt de documentatie bij of port de wijziging naar een zuster-SDK en opent een vervolg-PR. - Routine D (API) wordt na de release door de deploymentpipeline aangeroepen. Hij voert smoke checks uit en meldt go of no-go. Bij no-go maakt hij een issue aan in de tracker, dat Routine A de volgende nacht oppakt.
De overdrachtskanalen, van meest naar minst gestructureerd:
- GitHub-events: native, filterbaar en volledig controleerbaar.
- Labels en naamconventies voor branches: werk routeren zonder lijmcode te schrijven.
- API-aanroepen: vanuit CI, monitoring of interne tools, waarbij de payload als niet-vertrouwde context wordt behandeld.
- Een gedeelde tracker of een gedeeld artefact: een Linear-issue of een statuspagina die de volgende geplande run leest.
Ontwerp co-routines zorgvuldig. Gebruik filters zodat een routine nooit afgaat op zijn eigen output, bijvoorbeeld door de auteurs of branches uit te sluiten die hij zelf aanmaakt. Houd een menselijke merge tussen elke routine die code schrijft en elke routine die code uitrolt. Onthoud dat elke fase put uit hetzelfde dagelijkse maximum aantal runs op accountniveau en dezelfde limieten voor GitHub-events. Merkt u dat u vertakkingslogica, retries en fan-out over veel routines aan het bouwen bent, dan bent u dit patroon ontgroeid en is een specifieke workflow-engine het betere gereedschap.
8. Beveiliging en governance
- Routines handelen als u. Routines horen bij een individueel claude.ai-account en worden niet gedeeld met teamgenoten. Commits en pull requests dragen uw GitHub-identiteit, en acties via connectors gebruiken uw gekoppelde accounts. Behandel een routine als een persoonlijk toegangstoken met een brein eraan vast.
- Branchbescherming. Claude pusht standaard naar branches met het voorvoegsel
claude/. Hij weigert te pushen naar beschermde branches, naar branches met een open PR van iemand anders en naar branches met commits van anderen. - Least privilege. Verwijder overbodige connectors. Houd de netwerktoegang op Trusted, tenzij een specifiek domein nodig is; geblokkeerde verzoeken mislukken met
403enx-deny-reason: host_not_allowed. Sla op de abonnementen Pro en Max API-sleutels op als API credentials van de omgeving in plaats van als gewone variabelen, want die zijn zichtbaar voor iedereen die de omgeving gebruikt. - Niet-vertrouwde invoer. API-payloads en tekst via Run now komen binnen gemarkeerd als niet-vertrouwd. Inhoud die tijdens een run wordt opgehaald, zoals de tekst van issues en webpagina's, valt onder de normale bescherming tegen prompt injection. Schrijf prompts die Claude vertellen wat hij mag vertrouwen.
- Status van de koppeling. Verloopt de GitHub-koppeling, dan worden runs tot 72 uur overgeslagen en schakelt de routine zichzelf daarna uit totdat u opnieuw koppelt.
- Beheer op organisatieniveau. Owners op de abonnementen Team en Enterprise kunnen routines voor alle leden uitschakelen via de beheerinstellingen.
9. Abonnementen, gebruik en limieten
| Abonnement | Dagelijkse routine-runs bij lancering |
|---|---|
| Pro | 5 |
| Max | 15 |
| Team en Enterprise | 25 |
Routines verbruiken abonnementstegoed op dezelfde manier als interactieve sessies. Het dagelijkse maximum geldt daar bovenop. Uw actuele tegoed ziet u op claude.ai/code/routines en kan tijdens de preview veranderen. Met usage credits ingeschakeld gaan runs boven het maximum door als afgerekend extra gebruik; zonder credits worden extra runs geweigerd totdat het venster opnieuw begint. Eenmalige geplande runs tellen niet mee voor het maximum. Zolang een abonnement is gepauzeerd, staan de bijbehorende routines stil.
10. Routines vergeleken met andere planningsopties
10.1 Binnen Claude Code
| Routines (cloud) | Geplande taken in Desktop | /loop |
|
|---|---|---|---|
| Draait op | Cloud van Anthropic | Uw eigen machine | Uw eigen machine |
| Machine moet aan staan | Nee | Ja | Ja |
| Sessie moet open zijn | Nee | Nee | Ja |
| Lokale bestanden | Nee (verse clone) | Ja | Ja |
| Permissieverzoeken | Geen (autonoom) | Configureerbaar | Overgenomen van de sessie |
| Minimuminterval | 1 uur | 1 minuut | 1 minuut |
| Het meest geschikt voor | Betrouwbaar onbewaakt werk | Taken die lokale tools nodig hebben | Polling tijdens een sessie |
/loop-taken zijn gebonden aan een sessie en verlopen na zeven dagen. Ze zijn ideaal om een build of pull request in de gaten te houden terwijl u werkt, maar ze zijn geen vervanging voor een routine.
10.2 Buiten Claude Code
- GitHub Actions is goedkoop, staat naast de code en geeft volledige controle over de runner. De prijs is YAML, secretbeheer en onderhoud van runners. Kies Actions voor deterministische buildstappen en routines voor werk dat beoordelingsvermogen vraagt.
- Workflow-engines zoals Trigger.dev verzorgen retries, fan-out en langlopende orkestratie, maar u schrijft die orkestratie zelf in code. Gebruik ze wanneer de workflow zelf het product is.
- Integratieplatforms zoals n8n en Zapier blinken uit in het verplaatsen van gegevens tussen SaaS-tools. Routines blinken uit in redeneren over code, logs en documenten. De twee vullen elkaar goed aan: een n8n-flow kan het API-endpoint van een routine aanroepen.
11. Toepassingen die goed werken
- Backlogonderhoud: 's nachts labelen en eigenaarschap toewijzen, met 's ochtends een samenvatting.
- Alerttriage: monitoring roept de API-trigger aan, waarna Claude de stacktrace koppelt aan recente commits en een draft-fix opent.
- Codereview op maat: uw eigen checklist op elke PR die klaar is voor review.
- Deployverificatie: smoke checks en logscans na elke release, afgesloten met een go of no-go.
- Documentatiedrift: een wekelijkse scan van gemergede PR's en update-PR's voor documentatie die naar gewijzigde API's verwijst.
- Bibliotheken porten: gemergede wijzigingen uit de ene SDK spiegelen naar de zuster-SDK in een andere taal.
- Afhankelijkheden op orde: een wekelijkse controle van verouderde packages met één geteste upgrade-PR.
Routines zijn minder geschikt voor werk dat vaker dan elk uur moet gebeuren, voor taken die halverwege een menselijke beslissing nodig hebben en voor complexe workflows met veel vertakkingen en retries.
12. Hoe de community reageerde
De reacties zijn gemengd, maar overwegend positief. InfoQ citeerde engineers die enthousiast waren over de mogelijkheid om AI via webhooks rechtstreeks aan observability-dashboards en CI-workflows te koppelen. Anderen waren sceptisch. Zij wezen op eerdere planningsfuncties van Claude die alleen op de eigen machine van de gebruiker draaiden, en vonden dat betrouwbaarheid, uptime en quotalimieten aandacht verdienen voordat er nieuwe functies bijkomen. Onze ervaring is dat routines aan de beveiligingskant goed zijn ontworpen, met name de omgang met niet-vertrouwde payloads en de branchbescherming. De belangrijkste operationele risico's zijn te ruim ingestelde connectors en prompts die niet specifiek genoeg zijn.
13. Hoe Workstation dit inzet
Bij Workstation verzorgen we agentische automatisering voor klanten op het gebied van DevOps, financiële operaties en klantworkflows. Routines passen goed bij onze aanpak: deterministische infrastructuur voor het leidingwerk, AI voor het beoordelingsvermogen en een menselijke goedkeuringspoort voordat iets productie bereikt. Wilt u hulp bij het ontwerpen van routineketens, subagentbibliotheken of de governance daaromheen, neem dan contact op met ons team.
14. De belangrijkste punten
- Een routine is een opgeslagen prompt met repositories, omgeving, connectors en triggers, die autonoom in de cloud draait.
- Triggers kunnen een schema zijn (minimaal één uur, lokale tijd), een API-aanroep (bearer-token, niet-vertrouwde payload) of een GitHub-event voor een pull request of release.
- Beschikbaar op Pro, Max, Team en Enterprise, met een dagelijks maximum aantal runs bovenop het normale gebruik. De functie is nog in research preview.
- Gebruik sub-routines (subagents en skills) om één lange run gefocust en met minimale rechten te laten verlopen.
- Gebruik co-routines (routines die werk overdragen via PR's, labels en API-aanroepen) voor pipelines met meerdere fasen, met een menselijke merge-poort in het midden.
- Beperk connectors en netwerktoegang strikt, schrijf prompts als runbooks en lees de transcripten.
Bronnen en verder lezen
- Anthropic: Introducing routines in Claude Code (14 april 2026)
- Claude Code-documentatie: Automate work with routines
- Claude Code-documentatie: Run prompts on a schedule (/loop)
- Claude Code-documentatie: Subagents
- Claude Platform-documentatie: Trigger a routine through the API
- InfoQ: Anthropic Introduces Routines for Claude Code Automation
- MindStudio: Claude Code Routines: How to Run Scheduled AI Agents Without a Server
- Tahir op Medium: What is Claude Code Routines?
Routines bevinden zich in research preview. Gedrag, limieten en de API kunnen veranderen. De feiten in deze handleiding weerspiegelen de gepubliceerde documentatie van Anthropic per 25 september 2026.