7 Claude Code-regler til at begrænse autonome agenters forbrug i 2026
Markdown7 regler for at sætte grænser i Claude Code, så en autonom agent ikke efterlader dig bankerot: udbyderlofter, Task Budgets, hooks, tilladelseslister, nødafbrydere, sandbox-nøgler og iterationsgrænser.
Læs hele artiklen
Det vigtigste
En autonom agent med ubegrænset adgang til skyen kan løbe en stor regning op i løbet af en nat. Jeg gennemgår 7 Claude Code-regler, du kan indføre på en aften for at forebygge denne type fejl.
Lær at bruge tjenesten i Ailoot-dokumentationen.
Hvor pengene går hen: 3 udgiftskategorier for en autonom agent
Det vigtigste
Hvor bruger en autonom agent dine penge? Gennem tre separate kanaler: tokens hos Anthropic/OpenAI, cloudressourcer (AWS/GCP/Yandex Cloud) og betalte handlinger i tredjeparts-API'er (Stripe-opkrævninger, SMS-gateways, Twilio, Telegram-bots med abonnementer). Hver kanal har sin egen fakturering og sin egen måde at stoppe forbruget på.
Forveksl ikke disse tre kanaler—de fungerer uafhængigt af hinanden og kræver forskellige indstillinger:
- LLM-tokens. Claude, OpenAI eller Gemini opkræver betaling for input- og outputkonteksten i hver anmodning. Anthropic Task Budgets (se regel 2) og et abonnement i stedet for løbende betaling pr. API-forbrug kan hjælpe her.
- Cloudinfrastruktur. Via MCP eller et Bash-værktøj opretter agenten EC2-, RDS- og S3-ressourcer eller udruller lambdas. AWS Budgets, GCP eller Yandex Cloud med en nødafbryder kan hjælpe her (regel 5).
- Tredjeparts-API'er. Agenten foretager en Stripe-opkrævning, sender 100 SMS'er gennem en gateway eller opretter tusind Telegram-abonnementer. Sandbox-nøgler med snævre tilladelser og et fast loft i udbyderens kontrolpanel kan hjælpe her (regel 6).
Her følger 7 regler. Hver dækker en eller to kanaler.
Sådan sætter du et fast loft over API-forbruget (regel 1)
Det vigtigste
Hvordan sætter du et fast loft over API-forbruget? Anthropic og OpenAI har en indbygget grænse for organisationens forbrug, som automatisk begrænser kontoen, når den når det angivne beløb. Forveksl den ikke med advarsler, som blot sender en e-mail. Et fast loft er en barriere; advarsler er en pære. Sæt begge op, og begynd med barrieren.
Sådan aktiverer du det (afsæt mindst 2 minutter pr. udbyder):
Anthropic Console. console.anthropic.com → Settings → Limits → Monthly spend limit. Angiv et beløb, du er villig til at bruge i den værste måned. Når grænsen nås, returnerer API'et 429 og logger hændelsen. Intet ”jeg prøver igen om et minut”—det er blokeret indtil månedens udgang.
OpenAI Platform. platform.openai.com → Billing → Usage limits. Her er der også en blød grænse (e-mailadvarsel) og en hård grænse (API-lukning). Indstil begge; sæt den hårde grænse til 1.5x den bløde grænse, så der er tid til at reagere.
AWS Bedrock / Google Vertex. Hvis du bruger Claude/Anthropic via en cloudmellemmand, skal det hårde loft sættes i cloudtjenesten, ikke hos Anthropic. Det er regel 5.
Det her tæller ikke som et fast loft: e-mailadvarsler (”du har brugt 80% af dit budget”). De kommer med forsinkelse, og ingen læser e-mail om natten. Kun en synkron barriere på udbydersiden.
Sådan fungerer Anthropic Task Budgets, og hvor du indstiller dem (regel 2)
Det vigtigste
Hvad er Anthropic Task Budgets, og hvad beskytter de dig imod? Det er en betafunktion i Opus 4.7/4.8- og Fable/Mythos-serien: Du indstiller et budget for én autonom arbejdsgang, og Claude reducerer dybden af sin ræsonnering, efterhånden som budgettet bliver mindre. Opgaven afsluttes med en opsummering i stedet for, at Claude midt i opgaven siger ”det var det, jeg har ikke mere budget”. Det er ingen universalløsning på cloudforbrug, men den forebygger 80% af tilfældene, hvor agenten ”sad fast i en løkke uden at opdage det”.
Se Anthropics officielle dokumentation for detaljer. Hovedpointen: Det er en blød grænse, ikke en hård. Hvis agenten allerede har oprettet en EC2-instans, ruller Task Budget ikke det tilbage.
Sådan fungerer det i praksis: Du sender feltet task_budget i anmodningens payload (for eksempel 100,000 inputtokens for hele opgaven). Claude får oplysninger om budgettet og skærer selv ned på sine planer, forenkler trin eller springer delopgaver over. Når budgettet nærmer sig nul, trapper den ned og returnerer en foreløbig opsummering i stedet for et ”tak, fordi du lyttede”.
Begrænsninger:
- Kun Anthropic API. Det fungerer ikke på Bedrock/Vertex, som har deres egen fakturering
- Kun betamodeller (Opus 4.7, 4.8, Fable 5, Mythos 5). Ikke på Sonnet 4.6 eller Haiku
- Dækker ikke cloudforbrug eller tredjeparts-API'er. Hvis Claude starter en EC2-instans, forbliver Task Budget tavs
Brug det sammen med regel 1 (fast loft), ikke i stedet for den.
Omkostningsgrænser er en del af kontekstteknik: Du bestemmer, hvad agenten må og ikke må gøre, og hvor dens nødstop er.
Hvad du skal blokere med PreToolUse-hooks i Claude Code (regel 3)
Det vigtigste
Hvad er PreToolUse-hooks i Claude Code, og hvorfor har du brug for dem? Det er scripts, der kører før Claude udfører et værktøjskald. Du kan blokere en anmodning (exit 2), kræve brugerens bekræftelse eller lade den passere uden at spørge. Hovedpointen: Hooks kører før --dangerously-skip-permissions. Det betyder, at du kan blokere farlige handlinger selv i bypass-tilstand.
Tilladelser i Claude Code (pr. 1. juni 2026) evalueres i rækkefølgen deny → ask → allow. Det betyder:
- kontrollér den valgte tilladelsestilstand særskilt; udled ikke beskyttelse i bypass-tilstand af en deny-regeltest i normal tilstand
- hvis en hook returnerer
exit 2, blokeres værktøjskaldet allowedToolsgælder kun, når deny-regler og hooks ikke griber ind
En minimal PreToolUse-hook, som undersøger nogle få farlige kommandostavemåder. Det er et tekstfilter, ikke en fuldstændig shellparser eller adgangsgrænse: Tilsvarende kommandoer, scripts, andre værktøjer og eksisterende cloudressourcer kræver særskilte kontroller.
#!/usr/bin/env bash
# ~/.claude/hooks/block-dangerous-bash.sh
INPUT=$(cat)
if ! COMMAND=$(printf '%s\n' "$INPUT" | jq -er '.tool_input.command | select(type == "string")'); then
echo "Blocked: invalid Bash hook input" >&2
exit 2
fi
# Undersøger de angivne tekstmønstre; dækker ikke alle tilsvarende handlinger
if echo "$COMMAND" | grep -qiE '(rm -rf|aws s3 rb|terraform destroy|kubectl delete|drop database)'; then
echo "Blokeret: destruktiv kommando" >&2
exit 2
fi
exit 0
Gem scriptet på den angivne sti, kontrollér at jq er tilgængelig, og gør det eksekverbart med chmod +x ~/.claude/hooks/block-dangerous-bash.sh. Bind det i ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/block-dangerous-bash.sh" }]
}
]
}
}
Se den officielle dokumentation.
Kontrollér registreringen i /hooks, og giv derefter scriptet harmløst JSON-testinput uden at udføre indholdet i kommandofeltet. En angivet destruktiv stavemåde skal returnere 2; en harmløs kommando skal returnere 0. Test også fejlformet input. Regexen undersøger kun matchede Bash-kald; brug snævre legitimationsoplysninger og miljøisolering til den faktiske beføjelsesgrænse. Se det officielle eksempel på hook-input og -output.
Hvorfor bruge en allowedTools-hvidliste, og hvorfor --dangerously-skip-permissions ikke hører hjemme på værten (regel 4)
Det vigtigste
Hvor angiver du listen over tilladte værktøjer, og hvorfor er værten et dårligt sted til bypass-tilstand? allowedTools i settings.json er en liste over specifikke kommandoer, agenten kan køre uden bekræftelse; alt andet kræver, at du svarer på en forespørgsel. --dangerously-skip-permissions deaktiverer alle bekræftelser, så kør det ikke på værtsmaskinen—brug kun en container eller VM.
En hvidliste er princippet om mindst mulige rettigheder. I stedet for at ”tillade alt” (--dangerously-skip-permissions) tilføjer du kun det, opgaven har brug for:
{
"permissions": {
"allow": [
"Bash(npm install:*)",
"Bash(npm run build)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Read(./src/**)",
"Write(./src/**)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(curl * | sh)",
"Write(/etc/**)",
"Write(~/.ssh/**)"
]
}
}
Det skal du vide om bypass-tilstand:
- Linux/macOS nægter at starte Claude Code i bypass-tilstand som root eller med sudo—indbygget beskyttelse
- På din egen maskine deaktiverer bypass alle bekræftelser, og agenten kan køre
rm -rfpå hvad som helst, åbne SSH-nøgler og uploade data til cloud - Kør aldrig
--dangerously-skip-permissionspå værtsmaskinen, kun i:- en Docker-container med en begrænset volumenmontering (kun den nødvendige mappe)
- en isoleret VM (Multipass, Lima, Orbstack)
- GitHub Codespaces / Replit / en anden sandkasse
En minimal docker run til bypass-tilstand:
docker run --rm -it \
-v "$PWD:/workspace" \
-w /workspace \
--network host \
ghcr.io/anthropics/claude-code:latest \
claude --dangerously-skip-permissions
Hvis agenten har brug for cloud-legitimationsoplysninger, skal du bruge separate nøgler med snævre tilladelser, ikke dine primære nøgler (regel 6).
Sådan sætter du cloudbudgetadvarsler op med en nødafbryder i AWS, GCP og Yandex Cloud (regel 5)
Det vigtigste
En budgetadvarsel rapporterer observeret eller forventet forbrug og kan komme forsinket. En responsfunktion kan blokere nye agenthandlinger eller stoppe bestemte ressourcer; det er forskellige handlinger. Deaktivering af en IAM-nøgle stopper ikke udgifter til ressourcer, der allerede kører. Definér og test ressourcenedlukning særskilt.
Sådan sætter du det op i hver cloudtjeneste:
AWS Budgets (dokumentation). Opret et månedsbudget med tærskler (50%, 80%, 100%). Ved tærsklen på 100% kan et SNS-emne starte en respons-Lambda. Eksemplet nedenfor deaktiverer kun den navngivne brugers IAM-adgangsnøgler; det stopper ikke ressourcer og etablerer ikke et hårdt forbrugsloft:
import boto3
def lambda_handler(event, context):
iam = boto3.client('iam')
# Deaktiverer alle nøgler for brugeren 'claude-agent'
keys = iam.list_access_keys(UserName='claude-agent')['AccessKeyMetadata']
for key in keys:
iam.update_access_key(
UserName='claude-agent',
AccessKeyId=key['AccessKeyId'],
Status='Inactive'
)
return {'statusCode': 200, 'body': 'IAM keys deactivated; existing resources unchanged'}
Afgrænset procedure til ressourcestop: Registrér konto, regioner og præcise instans-ID’er før kørslen i et dedikeret testmiljø med godkendte EBS-baserede EC2-instanser. Vælg kun disse instanser i EC2-konsollen → Instance state → Stop instance → bekræft, og kontrollér derefter, at hver når tilstanden stopped. Gem først nødvendige instance-store-data; stop sletter dem. Kontrollér, at en godkendt planlægger eller et skaleringssystem ikke kan erstatte instanserne. Det stopper denne computerbrug, ikke alle kontoudgifter: Gennemgå bevaret lager og andre tjenester særskilt. Følg den officielle EC2-stopprocedure.
AWS Budgets-dokumentationen advarer om, at notifikationer er forsinket i forhold til ressourceforbruget, og at yderligere omkostninger kan opstå før og efter en advarsel. Udløsning ved 100% kan derfor ikke håndhæve et præcist pengebeløb som loft.
GCP Budget Alerts. Opret et Budget → Pub/Sub-emne → en Cloud Function, der deaktiverer Service Account. Et vigtigt tip fra dokumentationen: advarsler giver kun besked, de lukker ikke noget ned, så Cloud Function er nødvendig.
Yandex Cloud (dokumentation). Indstil budgetter under Billing → Budgets samt ressourcekvoter som et hårdt loft. Du kan forbinde notifikationer med en Telegram-bot via Cloud Functions.
OpenAI API. Bløde og hårde forbrugsgrænser findes direkte i kontrolpanelet—den hårde grænse stopper automatisk API'et; ingen Lambda er nødvendig.
Brug et verificeret hårdt loft hos udbyderen, hvor det findes, forsinkede budgetadvarsler, snævre legitimationsoplysninger og en testet reaktion for de konkrete ressourcer, agenten kan oprette. Tilbagekaldelse af legitimationsoplysninger blokerer nogle nye handlinger; verificeret nedlukning er nødvendig for løbende ressourcebrug. Hverken en advarsel eller en succesbesked fra Lambdaen, der tilbagekalder nøgler, beviser, at al fakturering er stoppet.
Hvorfor en agent har brug for en separat sandbox-API-nøgle med snævre tilladelser (regel 6)
Det vigtigste
Hvorfor har en agent brug for en separat API-nøgle? Så en fejl forbliver afgrænset. Opret en IAM-bruger eller Service Account kun til én agent, giv den de mindst mulige tilladelser (EC2, ikke *), og knyt den til et separat faktureringsprojekt med et fast loft. Hvis agenten bruger det hele, bruger den sine egne 50 dollars på en time, ikke hele virksomhedens kasse.
En minimal AWS-opsætning:
- Opret IAM-brugeren
claude-agent-scan - Politik: kun de nødvendige handlinger (for eksempel
ec2:RunInstancesi én region med størrelsent3.micro, uden en VPC-elastisk IP) - Knyt den til en separat AWS-konto (via Organizations) med et månedsbudget på 100 dollars
- Opret adgangsnøgler, og giv dem kun til agenten; læg dem ikke i dine egne
~/.aws/credentials - Efter sessionen roterer du nøglerne eller sletter brugeren
Tilsvarende for andre udbydere:
- OpenAI / Anthropic: en separat API-nøgle til hver agent, et hårdt loft for hver nøgle i kontrolpanelet og
agent_id-tags i anmodningsmetadata - Stripe / YooKassa: en begrænset API-nøgle til én handling (for eksempel kun
charges:read) og en separat forhandler, hvis muligt - Telegram Bot API: et separat bot-token, ikke det primære
Det gamle sikkerhedsprincip gælder her: mindst mulige rettigheder—agenten får præcis det, opgaven kræver, ikke én byte mere. Hvis opgaven er ”scan netværket”, skal du ikke give den ec2:* og s3:*; giv den kun ec2:DescribeInstances, og det er det.
Hvornår du skal bruge en dry run før start og en iterationsgrænse (regel 7)
Det vigtigste
Hvorfor lade agenten vise sin plan før start, og hvor mange iterationer bør du højst tillade? Plan Mode er en indbygget funktion i Claude Code: Agenten beskriver først, hvad den har tænkt sig at gøre, og du godkender det. Det er en gratis kontrol før start. Og --max-turns N begrænser antallet af trin i én session, så agenten ikke kan køre i ring for evigt. I autonom tilstand skal du sætte den til 10–30 ture, ikke mere.
Plan Mode (/plan) aktiveres, når sessionen starter. Agenten udarbejder en plan, viser den i chatten, venter på godkendelse og går først derefter i gang. Det er gratis og forebygger 70% af tilfældene med ”hov, jeg troede, den ville spørge først”.
--max-turns er et startflag. Hver tur er én cyklus af ”agenten tænker + værktøjskald + resultat”. For autonome opgaver:
- lille ændring: 5–10 ture
- mellemstor opgave: 15–30 ture
- stor autonom opgave: 50–80 ture
Yderligere teknikker:
- Tidsgrænse målt på væguret med Linux-kommandoen
timeout:
timeout 1800 claude --dangerously-skip-permissions --max-turns 30 -p "scan task"
# 1800 sekunder = 30 minutter. Stop processen på en ordentlig måde.
- Log hvert værktøjskald til en fil med en PostToolUse-hook, så du kan se, hvad der skete bagefter
- Cron-overvågning—kontrollér hvert 5. minut, at du ikke har 10 Claude-processer kørende på én gang (et typisk tegn på, at noget er gået galt)
En tjekliste på 5 minutter før du starter Claude Code autonomt
Det vigtigste
Hvad skal være på plads, før du trykker Enter for at starte en autonom opgave? Syv afkrydsningsfelter, cirka et minut hver. Hvis bare ét felt er tomt, må du ikke starte.
Tjekliste før claude --dangerously-skip-permissions:
[ ] 1. Fast loft hos API-udbyderen (Anthropic Console → Limits → Monthly spend limit)
[ ] 2. Task Budget i anmodningens payload (hvis du bruger Opus 4.7+/Fable/Mythos)
[ ] 3. PreToolUse-hook til at blokere rm -rf, aws s3 rb, terraform destroy
[ ] 4. allowedTools-hvidliste i settings.json eller arbejde i en Docker-container
[ ] 5. Forsinkede cloudbudgetadvarsler + testet nøgletilbagekaldelse og godkendt ressourcenedlukning
[ ] 6. Sandbox-API-nøgler (en separat nøgle til agenten, ikke den primære)
[ ] 7. --max-turns N + timeout NNN sekunder + cron-overvågning af processer
Hvis alle syv er på plads, kan du starte. Hvis bare én mangler, skal du stoppe og sætte den op. Tredive minutter nu kan spare 6.000–500.000 senere.
Et eksempel til perspektiv: En vibe-koder lancerede en webbutiksapp med standardadgangskoden til postgres-databasen. Inden for et par dage fandt nogen den, installerede minere og lagde deres egne bagdøre ind. Serveren måtte lukkes, og månedens regning steg på grund af en andens kryptomining.
Denne historie handler om kategori 3 fra afsnit 1 (tredjeparter, der kører ting på din infrastruktur), men logikken er den samme: Forbrugsstyring bør ikke afhænge af, hvem der satte forbruget i gang—din agent, din medarbejder eller en miner i Nigeria.
Læs videre:
- Sådan beskytter du Claude Code mod nedbrud—om
--dangerously-skip-permissionsog tilladelser fra en anden vinkel - Sikkerhed ved vibe-kodning—sikkerhedssøjlen
- Sådan undgår du at bruge alle Claude Code-grænserne på én dag—om abonnementstokens (forveksl ikke dette med denne guide om cloudregninger)
Kilder
Lær Ailoot at kende.
Flere oplysninger
Spørgsmål og svar
Stopper tilbagekaldelse af agentens IAM-nøgler cloudregningen?
Nej. Det blokerer nye godkendte forespørgsler med de nøgler, mens eksisterende ressourcer fortsat kan koste penge. Før en tilladelsesliste over egne ressourcer, stop de godkendte instanser, verificér deres tilstand, og gennemgå bevaret lager og andre tjenester særskilt.
Kan eksemplets kommando-regex håndhæve en fuldstændig sikkerhedsgrænse?
Nej. Den undersøger kun matchede Bash-værktøjskald og udvalgt kommandotekst. Test JSON-parsing og exitkoder, men brug snævre cloudtilladelser og miljøisolering til den reelle adgangsgrænse. Tilsvarende handlinger og andre værktøjer kan slippe uden om et tekstfilter.