Blog

Claude Code: 30-minútový limit príkazov na pozadí

Markdown

Claude Code zastaví príkaz na pozadí po 30 minútach pri spustení bez dozoru: -p, Agent SDK, CI, cloud. Ako zvýšiť limit a čo robiť po zastavení príkazu.

Prečítať celý článok

Claude Code zastaví príkaz na pozadí po 30 minútach, keď sa spustí bez dozoru: pri spustení s príznakom -p, v aplikácii Agent SDK, pri úlohe CI alebo v cloudovej relácii. Ak Claude nastaví časový limit pre samotný príkaz, bude sa vykonávať najviac 2 hodiny. Bežný terminál, desktopová aplikácia a VS Code nemajú od verzie 2.1.288 žiadny limit.

Kedysi som celý deň sedel pred obrazovkou: zadal som agentovi krok, pozrel sa na výsledok, urobil opravu a požiadal ho, aby pokračoval. Fázu za fázou. Stroj síce mohol písať kód, ale riadil som ho ja. Teraz napíšem plán, rozdelím ho na fázy, zverím implementáciu podagentom na noc a odídem. Počas 8 hodín bez mojej prítomnosti Claude postupuje podľa plánu: skúma, tvorí a dolaďuje. Ráno venujem viac času prijatiu práce než jej opakovaniu.

Ak však nočné spustenie používa -p alebo sa plánovane vykonáva na serveri, v CI či v cloude, vývojový server a zostavenie bežiace na pozadí vydržia 30 minút. Potom ich Claude Code zastaví a nočná práca sa preruší v polovici. Vysvetlím, koho sa limit týka, ako ho zvýšiť a čo robiť, ak sa príkaz už zastavil. Poďme na to.

Pomoc s používaním služby nájdete v dokumentácii Ailoot.

Kľúčové zhrnutie

Od verzie 2.1.285 Claude Code sám zastaví príkazy na pozadí, keď dosiahnu časový limit, a oznámi Claudeovi dôvod. Od verzie 2.1.288 sa limit vzťahuje iba na spustenia bez dozoru: -p, Agent SDK, CI a cloudové relácie. Príkaz spustený priamo na pozadí beží 30 minút alebo po zadaný čas, najviac však 2 hodiny. Príkaz presunutý na pozadie po vypršaní časového limitu beží od tohto okamihu 30 minút. Limit môžete zvýšiť pomocou 2 premenných v konfiguračnom súbore ~/.claude/settings.json.

Koho sa limit týka

Príkaz na pozadí je niečo, čo Claude spustí a nechá bežať, kým sa venuje niečomu inému. Napríklad vývojový server spustený pomocou npm run dev alebo zostavenie, ktoré sleduje zmeny súborov.

Dokumentácia Claude Code uvádza:

V relácii bez dozoru, napríklad pri spustení s príznakom -p, v aplikácii Agent SDK, pri úlohe CI alebo v cloudovej relácii, majú príkazy Bash a PowerShell na pozadí časový limit. Lokálna relácia, v ktorej pracujete cez terminál, desktopovú aplikáciu alebo rozšírenie VS Code, nemá pre príkazy na pozadí časový limit.

Časový limit vyžaduje Claude Code v2.1.285 alebo novšiu verziu. Pred verziou v2.1.288 platil v každej relácii.

— Anthropic, Referencia nástrojov, https://code.claude.com/docs/en/tools-reference.md

Inými slovami, limit platí, keď pri tom nie ste: pri spustení s -p, v aplikácii Agent SDK, pri úlohe CI alebo v cloudovej relácii. Keď v relácii pracujete sami, v termináli, desktopovej aplikácii ani vo VS Code žiadny limit neplatí. Zaviedli ho vo verzii 2.1.285 a pred verziou 2.1.288 platil všade.

Ako zistiť, či sa vás to týka:

  • Otvorili ste Claude Code v termináli alebo vo VS Code, zadali mu úlohu a išli spať. Ak máte verziu 2.1.288 alebo novšiu, limit sa neuplatňuje. Vo verziách 2.1.285 až 2.1.287 platí aj v tomto prípade. Postup aktualizácie na najnovšiu verziu som vysvetlil v samostatnom článku.
  • Claude Code sa spúšťa pomocou claude -p "task" podľa plánu, z vašej vlastnej aplikácie Agent SDK alebo v CI. Limit platí.
  • Úloha beží v cloudovej relácii. Limit platí.

Keď nechám agentov pracovať samostatne, v prompte požiadam: „Zapíš tieto podmienky a dôvody zastavenia do pracovného plánu. Skontroluj, či proces nezávisí od okna, ktoré zatvorím, ani od samotného počítača.“ Tridsaťminútový limit je jedným z týchto dôvodov.

Ako dlho beží príkaz na pozadí

Odpočítavanie sa začne, keď príkaz prejde na pozadie. Existujú 2 prípady.

Claude spustí príkaz hneď na pozadí. Má 30 minút. Ak Claude pri jeho spustení určí čas (parameter timeout), dostane tento čas, najviac však 2 hodiny.

Príkaz sa nedokončí, kým naň Claude čaká. Pri bežnom príkaze Claude čaká 2 minúty. Ak sa dovtedy nedokončí, Claude Code ho nezastaví, ale presunie na pozadie. Od tej chvíle má 30 minút.

Po vypršaní času Claude Code príkaz zastaví a oznámi Claudeovi:

Background command "<description>" was stopped after reaching its background time limit

Ak práca nie je dokončená, Claude môže príkaz spustiť znova s dlhším časovým limitom.

A ešte jedna poznámka k -p. Pri tomto type spustenia sa príkazy na pozadí ukončia približne 5 sekúnd po poslednej odpovedi Claudea. Server spustený pri nočnom spustení s -p vydrží iba tak dlho ako samotné spustenie. Limit 30 minút je dôležitý, keď spustenie trvá dlhšie: Claude na začiatku spustí server a potom na ňom hodinu vykonáva kontroly.

Ako zorganizovať nočnú prácu v Claude Code

Unavovalo ma celý deň riadiť agenta, a tak som to nahradil jedným orchestrátorovým promptom. Spustím ho večer a Claude pracuje celú noc, postupne prechádza jednotlivé fázy: píše, kontroluje, opravuje a samostatne vytvára commity.

Skupiny podagentov píšu kód, pričom každý pracuje s vlastnými súbormi, aby si navzájom neprekážali. Ďalšia, nová skupina prácu preberie: vykoná kontrolu kódu, bezpečnostné kontroly a živé testy. Ak nájdu problém, ihneď sa opraví a kontroly sa zopakujú. Prompt obsahuje vetu: „Ak ti dôjde kontext, zaznamenaj stav; ďalšie spustenie bude pokračovať.“

V opísanom príklade sa týmto spôsobom za 3 dni dokončilo 8 zo 14 fáz.

Treba mať na pamäti len 2 veci. Orchestrátor za vás nepremýšľa: najprv napíšte podrobný plán s fázami a až potom spustite nočnú prácu. Navyše spotrebuje veľkú časť limitu vášho predplatného, takže nemá zmysel nastavovať ho pre malú úlohu. Vždy obmedzte počet pokusov, inak agent cez noc vyčerpá celý limit vášho predplatného. Ako nastaviť tieto limity spotreby som vysvetlil v samostatnom článku.

Ako zvýšiť limit

Možnosť 1: požiadajte Claudea. Claude vyberie čas pre konkrétny príkaz; nemusíte ho nastavovať sami. Do úlohy však môžete napísať: „Nechaj vývojový server bežať na pozadí 2 hodiny.“ Takto nemožno dosiahnuť viac než 2 hodiny.

Možnosť 2: premenné v konfiguračnom súbore. Hodnoty sa uvádzajú v milisekundách. Limity nemožno znížiť pod 30 minút a 2 hodiny; možno ich iba zvýšiť.

  • BASH_DEFAULT_TIMEOUT_MS Ak ju nastavíte nad 1800000 (30 minút), zmení sa predvolený 30-minútový limit. Platí pre príkazy, ktoré Claude spustí na pozadí bez zadania času, aj pre príkazy presunuté na pozadie po vypršaní časového limitu. Ak ju nastavíte nad 7200000 (2 hodiny), zvýši sa aj horný limit.
  • BASH_MAX_TIMEOUT_MS Ak ju nastavíte nad 7200000, zvýši sa horný limit 2 hodín. Predvolený 30-minútový limit sa nezmení: príkaz bez vlastného nastaveného času sa stále zastaví po 30 minútach.

Premenná BASH_DEFAULT_TIMEOUT_MS má aj vedľajší účinok. Tá istá premenná určuje, ako dlho Claude čaká na bežný príkaz, kým ho presunie na pozadie. Nastavte ju na 1 hodinu a Claude bude čakať 1 hodinu namiesto 2 minút. Pri nočnej práci to neprekáža. Cez deň budete dlhšie čakať na odpoveď, keď príkazy trvajú dlho.

Ak sa nechcete zaoberať podrobnosťami: ak potrebujete 3 hodiny pre bežné príkazy aj horný limit, nastavte BASH_DEFAULT_TIMEOUT_MS na 10800000. To stačí; druhú premennú nepotrebujete.

Konfiguračný súbor sa nachádza v priečinku .claude vo vašom domovskom adresári: ~/.claude/settings.json v systémoch macOS a Linux a %USERPROFILE%\.claude\settings.json v systéme Windows. Ak súbor neexistuje, vytvorte ho. Limit 1 hodina vyzerá takto:

{
  "env": {
    "BASH_DEFAULT_TIMEOUT_MS": "3600000"
  }
}

Ak súbor už obsahuje blok env, pridajte doň riadok. Bežiaca relácia prevezme nové hodnoty po uložení súboru. Odstránenie premennej sa prejaví až pri ďalšom spustení claude.

Súbor musí byť na počítači, na ktorom agent beží. Aby mohol agent pracovať celú noc, počítač nesmie prejsť do režimu spánku. Prípadne môžete Claude Code spustiť na vzdialenom serveri a umiestniť tam aj nastavenia.

Ak sa príkaz už zastavil

Nemusíte nič robiť ručne. Claude Code oznámi Claudeovi, prečo sa príkaz zastavil, takže sa ho najprv jednoducho opýtajte, čo sa stalo.

Potom postupujte krok za krokom:

  1. Jednorazové dlhé spustenie do 2 hodín. Požiadajte Claudea, aby príkaz spustil znova s dlhším časovým limitom.
  2. Príkazy pravidelne potrebujú viac než 30 minút. V konfiguračnom súbore nastavte BASH_DEFAULT_TIMEOUT_MS na hodnotu vyššiu než 1800000, ako v príklade vyššie. Ak potrebujete viac než 2 hodiny, nastavte tam aj BASH_MAX_TIMEOUT_MS na hodnotu vyššiu než 7200000.
  3. Spustite príkaz znova. Dokumentácia nič nesľubuje v prípade príkazu, ktorý už pred zmenou bežal na pozadí.
  4. Skontrolujte výsledok ďalšieho spustenia. Ak sa v hlásení Claudea znova objaví fráza „stopped after reaching its background time limit“, nastavenie sa na daný príkaz neuplatnilo.

Podagenti a rutiny umožňujú agentovi pracovať, aj keď ste preč.

V samostatnom článku som vysvetlil, ako nechať agenta pracovať v slučke celú noc. A tu nájdete vysvetlenie, ako nakonfigurovať Claude Code, aby cez noc nepoškodil projekt.

Skontrolujte, v ktorom kroku sa vaše nočné spustenie zastaví, a porovnajte dôvod s uvedenými limitmi.

Zdroje

  • Claude Code: Referencia nástrojov - kde sa limit uplatňuje, verzie 2.1.285 a 2.1.288, 30 minút a 2 hodiny, presúvanie príkazov na pozadie po vypršaní časového limitu, text oznámenia a premenné BASH_DEFAULT_TIMEOUT_MS a BASH_MAX_TIMEOUT_MS.
  • Claude Code: Premenné prostredia - predvolený limit 2 minúty pre bežný príkaz, blok env v ~/.claude/settings.json a to, kedy relácia prevezme nové hodnoty.
  • Claude Code: Headless - spustenia s -p; príkazy na pozadí sa ukončia približne 5 sekúnd po poslednej odpovedi.
  • Claude Code: Nastavenia - umiestnenie súboru ~/.claude/settings.json v systéme Windows.

Spoznajte Ailoot.

Viac podrobností

Otázky a odpovede: Claude Code: 30-minútový limit príkazov na pozadí

Spustí ponechanie interaktívnej relácie cez noc 30-minútový limit?

V Claude Code 2.1.288 a novšom sa limit článku týka behov bez dozoru ako -p, Agent SDK, CI a cloud. Samotné ponechanie bežnej lokálnej interaktívnej relácie ju do tejto kategórie nezaradí.

Udrží väčší timeout server po skončení behu -p?

Nie. Príkazy na pozadí pri -p končia krátko po záverečnej odpovedi. Timeout mení trvanie príkazu počas behu, nerobí z neho trvalý hosting.

Všetky články