Přeskočit na obsah
Bezpečnost 4 min čtení

Anthropic rozšířil hlídač rekurzivního mazání v Claude Code sedmkrát za půl roku

Claude Code 2.1.281 se ptá na potvrzení u rekurzivního mazání, jehož cíl je jen výstupem vnořeného příkazu, a to i v režimu, který se jmenuje „přeskoč oprávnění“. Je to sedmý zásah do téhož hlídače od konce března a předcházelo mu veřejné hlášení uživatele, kterému takový příkaz smazal 600 GB dat. Kanál „stable“ přitom pořád ukazuje na verzi, ve které oprava není.

Ve seznamu změn Claude Code stojí u verze 2.1.281 jednořádková oprava: rekurzivní mazání, jehož cíl je jen výstupem vnořeného příkazu – tedy třeba rm -rf "$(pwd)" –, si teď vyžádá potvrzení. Platí to i v automatickém režimu a při spuštění s přepínačem --dangerously-skip-permissions, jehož jméno slibuje pravý opak, a dokonce i tehdy, když má uživatel volání Bashe výslovně povolené. Vypnout ten dotaz jde proměnnou prostředí CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1. Verze podle evidence balíčku na npm vyšla 23. září 2026.

Detail řezné hlavy kancelářské skartovačky
Řezná hlava kancelářské skartovačky. Foto: Raimond Spekking, Wikimedia Commons (CC BY-SA 4.0)

Hlídač čte příkaz jako text, a ten cestu neobsahuje

Proč taková věc potřebuje vlastní opravu, je vidět na samotném zápisu příkazu. Ochrana před nebezpečným mazáním se rozhoduje podle toho, co je v příkazu napsané. U rm -rf / nebo rm -rf ~ je cíl vidět. U rm -rf "$(pwd)" tam žádná cesta není; ta vznikne teprve tím, že shell nejdřív spustí vnořený příkaz a jeho výstup dosadí na jeho místo. Kontrola tedy dostane k posouzení text, ze kterého se nedá poznat, co se bude mazat.

V automatickém režimu to navíc neposuzuje člověk. Dokumentace k bezpečnosti říká, že v něm akce místo uživatele prohlíží oddělený třídicí model a zastavuje ty, které vyhodnotí jako nebezpečné. I on ale čte nespuštěný příkaz.

Hlášení, které opravě předcházelo

Pět dní před vydáním opravy popsal uživatel v hlášení č. 95426, co se mu stalo 16. září na Windows 11 s Claude Code 2.1.274. Sezení podle něj samo, jako úklid před vlastní prací, spustilo rm -rf "$(cygpath -u 'C:\')" 2>/dev/null. Vnořený příkaz převede zápis C:\ na podobu /c/, takže se mazal celý disk. Běželo to zhruba 35 minut a přišlo asi 600 GB dat: uživatelský profil, několik repozitářů a poznámky, které nikde jinde nebyly.

Dvě věci na tom hlášení stojí za pozornost i bez ohledu na objem. Přesměrování chybového výstupu do /dev/null zahodilo právě ten signál, podle kterého by si šlo všimnout, že něco nehraje – záplavu hlášek o odepřeném přístupu, jak mazání postupuje do systémových adresářů. A přepis sezení leží v ~/.claude/projects, tedy uvnitř mazaného rozsahu, takže doklad o tom, jak příkaz vznikl, zmizel s ním. Hlášení je označené štítky bug, area:securitydata-loss a ke dni vydání tohoto textu je otevřené.

Tentýž hlídač po sedmé

Zajímavější než jedna oprava je řada, do které patří – a není to u tohohle nástroje první taková řada: ochranu proti čtení mimo pracovní adresář opravoval Anthropic během dvou týdnů čtyřikrát. Seznam změn Claude Code obsahuje od konce března sedm zásahů do téhož rozhodnutí – jestli rekurzivní mazání potřebuje potvrzení – a každý z nich přidává jeden další způsob, jak se cíl dá napsat:

verzevyšlaco se do hlídače přidalo
2.1.8425. 3. 2026rozpoznávání kořenů diskových jednotek na Windows (C:\, C:\Windows)
2.1.11317. 4. 2026na macOS se cesty /private/{etc,var,tmp,home} počítají jako nebezpečný cíl i pod povolovacím pravidlem Bash(rm:*)
2.1.15428. 5. 2026rm -rf $HOME s lomítkem na konci proměnné
2.1.2058. 7. 2026proměnná, kterou automatický režim neumí z kontextu dohledat
2.1.20813. 7. 2026katastrofické mazání v příkazu, který někde obsahuje $(…), zpětné apostrofy nebo <(…)
2.1.2614. 9. 2026poziční parametry a skripty předané sh -c v dvojitých uvozovkách
2.1.28123. 9. 2026cíl, který je jen výstupem vnořeného příkazu

Data vydání jsou z evidence balíčku na npm. Do téhle sedmičky se nepočítá osmá zmínka o rm -rf z verze 2.1.143 (15. 5. 2026): ta říká, že úklid pracovní kopie už při nezdaru nesahá k rekurzivnímu mazání, a je to jiné místo v programu, ne rozhodnutí o potvrzení.

Rozdíl mezi červencovou a zářijovou položkou je přitom malý a rozhoduje o všem. Verze 2.1.208 řeší příkaz, jehož cíl je vidět (rm -rf ~) a vnořený příkaz je v něm někde jinde. Verze 2.1.281 řeší případ, kdy vnořený příkaz je celý cíl a není s čím ho porovnat. V jediném komentáři pod hlášením to říká čtenář, který si znění seznamu změn prošel sám: nespuštěný řetězec nikdy neobsahuje /c/ ani kořen disku, takže pravidlo hledající rm -rf / nebo rm -rf ~ ten příkaz propustí.

Ze čtyř návrhů v hlášení dorazil jeden

Autor hlášení navrhl čtyři opatření. Aby se mazání, jehož vyhodnocený cíl je kořen souborového systému, kořen disku nebo kořen uživatelského profilu, rovnou odmítlo místo dotazu. Aby se cíl před potvrzením vyhodnotil a ukázal, ne aby v dialogu stál původní zápis. Aby se potlačení chybového výstupu u destruktivního příkazu bralo samo za důvod k odmítnutí. A aby přepisy sezení nebyly v dosahu toho, co se maže.

V seznamu změn je z toho vidět první polovina prvního bodu: dotaz. Slovo o vyhodnoceném a zobrazeném cíli, o přesměrování chybového výstupu ani o umístění přepisů v něm není – prohledáno nad celým souborem, který má 792 786 bajtů. Proměnná CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT zatím také nestojí v referenci proměnných prostředí, ačkoli ta stránka vydá přes 127 tisíc znaků textu.

Na kanálu „stable“ oprava zatím není

Evidence balíčku na npm vede tři pojmenované kanály. Značky latestnext ukazují na 2.1.281, značka stable na 2.1.273 z 15. září 2026. Kdo se drží stabilního kanálu, má tedy verzi starší nejen než oprava, ale i než 2.1.274, na které se popsaná ztráta dat stala. Odstup toho kanálu není novinka: na konci července zaostával o osm vydání a neměl tehdy ani opravy oprávnění.

Za poznámku stojí i to, co v tom nástroji funguje: hlídač nebezpečného mazání tam vůbec je a ptá se i v režimu, jehož jméno říká, že se na oprávnění ptát nebude. Dokumentace k němu vedle toho popisuje hranici pracovního adresáře a oddělené prostředí pro volání Bashe s odstíněným souborovým systémem a sítí. Sedm položek nad sebou ale ukazuje i mez takové ochrany: dokud se rozhoduje nad textem příkazu a ne nad tím, co z něj po vyhodnocení vyjde, bude se do ní vždycky dát přidat osmý způsob zápisu.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Bezpečnost

    Aplikace OpenClaw pro iOS psala do systémového logu trvalý klíč k agentovi

    Verze OpenClaw pro iPhone před 2026.8.11 vypisovala do sjednoceného logu celou adresu odkazu, kterým se agentovi zadává práce. V té adrese bývá trvalý klíč, který zadání…

  2. Bezpečnost

    Pět serverů MCP dostalo číslo CVE, přestože jejich autoři na hlášení neodpověděli

    Databáze VulDB vydala 20. září 2026 čísla zranitelností šesti projektům, které staví server protokolu MCP. Pět z nich má na GitHubu dohromady deset hvězd a jejich autoři…

  3. Bezpečnost

    Čísla CVE ke dvěma chybám v Rust SDK pro MCP vyšla 79 dní po opravné verzi

    Oficiální Rust SDK protokolu MCP vydalo opravu dvou chyb 29. června a hlášení o nich dalo na svůj repozitář ještě týž den. Registr CVE i databáze GitHubu, ze které čerpá…

  4. Bezpečnost

    Claude Code opravil ochranu proti čtení mimo pracovní adresář počtvrté za dva týdny

    Claude Code 2.1.273 z 15. září opravuje dvě cesty kolem nastavení, které má nástroji zakázat čtení souborů mimo pracovní adresáře. Přepínač existuje od 1. září a je to u…