Claude Code: gräns på 30 minuter för bakgrundskommandon
MarkdownClaude Code stoppar ett bakgrundskommando efter 30 minuter vid obevakade körningar: -p, Agent SDK, CI, molnet. Så höjer du gränsen och vad du gör när ett kommando stoppas.
Läs hela artikeln
Claude Code stoppar ett bakgrundskommando efter 30 minuter när det körs obevakat: en start med flaggan -p, ett Agent SDK-program, ett CI-jobb eller en molnsession. Om Claude anger en tid för själva kommandot körs det i högst 2 timmar, medan den vanliga terminalen, skrivbordsappen och VS Code inte har haft någon gräns sedan version 2.1.288.
Förr satt jag framför skärmen hela dagen: gav agenten ett steg, tittade på resultatet, gjorde en korrigering och bad den fortsätta. Fas efter fas. Maskinen kanske skrev koden, men det var jag som styrde den. Nu skriver jag en plan, delar upp den i faser, lämnar över implementationen till underagenter över natten och går därifrån. Under 8 timmar utan mig arbetar Claude sig igenom planen: undersöker, bygger och förfinar. På morgonen lägger jag mer tid på att godkänna arbetet än på att göra om det.
Men om en nattkörning använder -p, körs enligt ett schema på en server, i CI eller i molnet, varar en utvecklingsserver och en byggprocess som körs i bakgrunden i 30 minuter. Sedan stoppar Claude Code dem, och nattarbetet stannar upp halvvägs. Jag förklarar vem gränsen påverkar, hur du höjer den och vad du gör om ett kommando redan har stoppats. Då kör vi.
Se Ailoot-dokumentationen för hjälp med tjänsten.
Det viktigaste
Sedan version 2.1.285 har Claude Code själv stoppat bakgrundskommandon när de når tidsgränsen och meddelat Claude orsaken. Sedan 2.1.288 gäller gränsen bara obevakade körningar: -p, Agent SDK, CI och molnsessioner. Ett kommando som startas direkt i bakgrunden körs i 30 minuter eller den tid som angetts för det, men högst 2 timmar. Ett kommando som flyttas till bakgrunden efter en tidsgräns körs i 30 minuter från den tidpunkten. Du kan höja gränsen med 2 variabler i inställningsfilen ~/.claude/settings.json.
Vilka påverkas av gränsen
Ett bakgrundskommando är något som Claude startar och låter köras medan det gör något annat. Till exempel en utvecklingsserver som startats med npm run dev eller en byggprocess som bevakar ändringar i filer.
Dokumentationen för Claude Code säger:
I en session som körs obevakat, till exempel en körning med flaggan
-p, ett Agent SDK-program, ett CI-jobb eller en molnsession, har Bash- och PowerShell-kommandon i bakgrunden en tidsgräns. En lokal session som du arbetar i från en terminal, skrivbordsappen eller VS Code-tillägget har ingen tidsgräns för bakgrundskommandon.Tidsgränsen kräver Claude Code v2.1.285 eller senare. Före v2.1.288 gällde den i alla sessioner.
Med andra ord gäller gränsen när du inte är där: en körning med -p, ett Agent SDK-program, ett CI-jobb eller en molnsession. Det finns ingen gräns i terminalen, skrivbordsappen eller VS Code när du själv arbetar i sessionen. Den infördes i 2.1.285 och gällde överallt före 2.1.288.
Så ser du om detta gäller dig:
- Du öppnade Claude Code i terminalen eller VS Code, gav det en uppgift och gick och lade dig. Det finns ingen gräns om versionen är 2.1.288 eller senare. I versionerna 2.1.285 till och med 2.1.287 gäller den även här. Jag förklarade hur du uppdaterar till den senaste versionen i en separat artikel.
- Claude Code startas med
claude -p "task"enligt ett schema, från ditt eget Agent SDK-program eller i CI. Gränsen gäller. - Uppgiften körs i en molnsession. Gränsen gäller.
När jag ber agenter arbeta självständigt skriver jag i prompten: ”Skriv in dessa villkor och skälen till att stoppa i arbetsplanen. Kontrollera att processen inte är beroende av ett fönster som jag stänger eller av själva datorn.” Gränsen på 30 minuter är ett av skälen.
Hur länge ett bakgrundskommando körs
Nedräkningen börjar när kommandot hamnar i bakgrunden. Det finns 2 fall.
Claude startar kommandot direkt i bakgrunden. Det får 30 minuter. Om Claude anger en tid när det startar kommandot (parametern timeout) får det den tiden, men högst 2 timmar.
Kommandot blir inte klart medan Claude väntar på det. Claude väntar 2 minuter på ett vanligt kommando. Om det inte har blivit klart stoppar Claude Code det inte, utan flyttar det till bakgrunden. Från den tidpunkten har det 30 minuter.
När tiden är ute stoppar Claude Code kommandot och meddelar Claude:
Background command "<description>" was stopped after reaching its background time limit
Om arbetet inte är klart kan Claude köra kommandot igen med en längre tidsgräns.
En sak till om -p. Vid den här typen av körning avslutas bakgrundskommandon cirka 5 sekunder efter Claudes slutliga svar. En server som startas i en nattkörning med -p körs bara så länge själva körningen pågår. Gränsen på 30 minuter spelar roll när körningen pågår längre: Claude startar en server i början och ägnar en timme åt att köra kontroller mot den.
Så planerar du nattarbete i Claude Code
Jag tröttnade på att styra agenten hela dagen, så jag ersatte det med en enda orkestreringsprompt. Jag startar den på kvällen, och Claude arbetar hela natten och går igenom faserna i ordning: skriver, kontrollerar, åtgärdar och committar på egen hand.
Grupper av underagenter skriver koden, var och en med sina egna filer så att de inte stör varandra. En annan, ny grupp godkänner arbetet: kodgranskning, säkerhetskontroller och kontroller i den riktiga miljön. Om de hittar ett problem åtgärdas det direkt och kontrollerna körs igen. Prompten innehåller raden: ”Om du får slut på kontext, dokumentera läget; nästa körning fortsätter.”
I exemplet som beskrivs slutfördes 8 av 14 faser på det här sättet under 3 dagar.
Det finns bara 2 saker att tänka på. Orkestreraren tänker inte åt dig: skriv först en detaljerad plan med faser och starta sedan nattpasset. Det förbrukar också en stor del av din prenumerationskvot, så det är knappast värt att sätta upp för en liten uppgift. Begränsa alltid antalet försök, annars förbrukar agenten hela din prenumerationskvot under natten. Jag förklarade hur du ställer in dessa användningsgränser i en separat artikel.
Så höjer du gränsen
Alternativ 1: be Claude. Claude väljer tiden för ett visst kommando; du ställer inte in den själv. Men du kan skriva i uppgiften: ”Håll utvecklingsservern igång i bakgrunden i 2 timmar.” På det här sättet kan du inte få mer än 2 timmar.
Alternativ 2: variabler i inställningsfilen. Värdena anges i millisekunder. Du kan inte sänka gränserna under 30 minuter och 2 timmar; du kan bara höja dem.
BASH_DEFAULT_TIMEOUT_MSändrar standardgränsen på 30 minuter om den sätts till ett värde över1800000(30 minuter). Den gäller både kommandon som Claude startar i bakgrunden utan att ange en tid och kommandon som flyttas till bakgrunden efter en tidsgräns. Om du sätter den över7200000(2 timmar) höjs även taket.BASH_MAX_TIMEOUT_MShöjer taket på 2 timmar om den sätts till ett värde över7200000. Den ändrar inte standardgränsen på 30 minuter: ett kommando utan egen angiven tid stoppas fortfarande efter 30 minuter.
BASH_DEFAULT_TIMEOUT_MS har en bieffekt. Samma variabel anger hur länge Claude väntar på ett vanligt kommando innan det flyttas till bakgrunden. Sätt den till 1 timme, så väntar Claude 1 timme i stället för 2 minuter. Det är inget problem under natten. På dagen får du vänta längre på svar när kommandon tar lång tid.
Om du inte vill sätta dig in i detaljerna: om du behöver 3 timmar för både vanliga kommandon och taket, sätter du BASH_DEFAULT_TIMEOUT_MS till 10800000. Det räcker; du behöver inte den andra variabeln.
Inställningsfilen finns i mappen .claude i din hemkatalog: ~/.claude/settings.json på macOS och Linux, och %USERPROFILE%\.claude\settings.json på Windows. Skapa filen om den inte finns. En gräns på 1 timme ser ut så här:
{
"env": {
"BASH_DEFAULT_TIMEOUT_MS": "3600000"
}
}
Om filen redan har ett env-block lägger du till raden där. En aktiv session hämtar de nya värdena när du sparar filen. Om du tar bort en variabel börjar det gälla först nästa gång du startar claude.
Filen måste finnas på datorn där agenten körs. För att agenten ska arbeta över natten får datorn inte försättas i viloläge. Du kan också köra Claude Code på en fjärrserver och lägga inställningarna där.
Om kommandot redan har stoppats
Du behöver inte göra något manuellt. Claude Code talar om för Claude varför ett kommando stoppades, så fråga först bara vad som hände.
Gå sedan vidare steg för steg:
- En enstaka lång körning på upp till 2 timmar. Be Claude köra kommandot igen med en längre tidsgräns.
- Kommandon behöver regelbundet mer än 30 minuter. Sätt
BASH_DEFAULT_TIMEOUT_MSöver1800000i inställningsfilen, som i exemplet ovan. Om du behöver mer än 2 timmar sätter du ävenBASH_MAX_TIMEOUT_MSöver7200000där. - Kör kommandot igen. Dokumentationen lovar inget om ett kommando som redan kördes i bakgrunden innan ändringen.
- Kontrollera resultatet av nästa körning. Om Claudes rapport återigen innehåller frasen ”stopped after reaching its background time limit” tillämpades inställningen inte på det kommandot.
Underagenter och rutiner gör att agenten kan fortsätta arbeta när du är borta.
Jag förklarade hur du kör en agent i en loop hela natten i en separat artikel. Och här förklaras hur du konfigurerar Claude Code så att det inte ställer till det i projektet över natten.
Kontrollera vilket steg som stoppar nattkörningen och jämför orsaken med gränserna ovan.
Källor
- Claude Code: referens för verktyg - var gränsen gäller, versionerna 2.1.285 och 2.1.288, 30 minuter och 2 timmar, att flytta kommandon till bakgrunden efter en tidsgräns, meddelandetexten och variablerna BASH_DEFAULT_TIMEOUT_MS och BASH_MAX_TIMEOUT_MS.
- Claude Code: miljövariabler - standardtiden på 2 minuter för ett vanligt kommando, env-blocket i ~/.claude/settings.json och när en session hämtar nya värden.
- Claude Code: huvudlös körning - körningar med -p; bakgrundskommandon avslutas cirka 5 sekunder efter det slutliga svaret.
- Claude Code: inställningar - var ~/.claude/settings.json finns i Windows.
Lär känna Ailoot.
Fler detaljer
Frågor om den här guiden: Claude Code: gräns på 30 minuter för bakgrundskommandon
Utlöser en interaktiv session över natten 30-minutersgränsen?
I Claude Code 2.1.288 eller senare gäller artikelns gräns obevakade körningar som -p, Agent SDK, CI och molnsessioner. En vanlig lokal interaktiv session hamnar inte i kategorin bara för att den lämnas öppen.
Håller större timeout servern igång efter avslutad -p-körning?
Nej. Bakgrundskommandon i en -p-körning avslutas kort efter slutsvaret. Ändrad timeout påverkar kommandolängd under körningen; den gör inte körningen till beständig drift.