Blog

Claude Code 2.1.268: Čo sa opravilo v pravidlách deny a MCP

Markdown

Claude Code 2.1.268–2.1.269 opravili štyri problémy s oprávneniami a únik tajných údajov v /mcp. Koho sa to týka, ako aktualizovať a ako skontrolovať pravidlá.

Prečítať celý článok

Verzia Claude Code 2.1.268 bola vydaná 10. septembra 2026 a nasledujúci deň po nej vyšla verzia 2.1.269. Mali by ste aktualizovať hneď: v dvoch prípadoch pravidlá deny, ktoré používate na blokovanie prístupu agenta k súborom .env a priečinkom služieb, potichu nefungovali. Príkaz /mcp navyše mohol v termináli vypísať tajné údaje z vašich konfigurácií.

Všetko nižšie vychádza z oficiálneho zoznamu zmien a dokumentácie spoločnosti Anthropic v stave k 17. septembru 2026, teda k dátumu zdrojového materiálu. Najnovšia verzia v tento deň bola 2.1.274. Popisujeme, ako chyby fungovali podľa týchto záznamov; obídenie ochrany sme na zraniteľnej verzii nereprodukovali.

Ďalšie pokyny na prácu s Ailoot nájdete v dokumentácii.

Čo sa opravilo v Claude Code 2.1.268 a 2.1.269?

Kľúčové zistenie

Opravili sa štyri problémy s oprávneniami. Pravidlá deny a ask nefungovali pri cestách cez symbolické odkazy a deny pre Read alebo Edit sa nemusel uplatniť na riadkoch obsahujúcich env -C alebo eval. Pravidlo s „!“ sa uplatňovalo aj mimo svojho súboru nastavení. Príkaz tee zapisoval súbory bez blokovania pravidlom deny pre Edit. Príkazy /mcp a claude mcp list navyše zobrazovali tajné údaje z konfigurácií a chyby doplnkov zobrazovali tokeny z URL adries Git.

Štyri opravy sa týkajú pravidiel oprávnení:

  1. Blokovanie cez symbolické odkazy nefungovalo. Pravidlá deny a ask napísané pre adresáre so symbolickými odkazmi (/etc, /tmp, /var v systéme macOS, /bin v systéme Linux) sa nespustili, keď bola cesta zadaná podľa skutočného umiestnenia. Príkazy Bash tiež ignorovali pravidlá deny napísané pre cestu cez symbolický odkaz.
  2. Blokovanie čítania a úprav zlyhávalo spolu s env -C alebo eval. Ak ten istý príkazový riadok obsahoval konštrukciu, ktorú kontrola oprávnení nedokázala analyzovať, pravidlo deny pre Read alebo Edit sa nemuselo uplatniť.
  3. Pravidlo s „!“ sa uplatňovalo širšie, než bolo zamýšľané. Pravidlo deny alebo ask začínajúce znakom ! sa uplatňovalo aj mimo súboru nastavení, v ktorom bolo zapísané. Teraz sa uplatňuje iba v rámci vlastného zdroja a samostatný znak negácie ! sa ignoruje.
  4. Príkaz tee obchádzal blokovanie pri zápise. Pravidlá deny pre Edit() a kontrola cesty zápisu sa neuplatňovali na súbor vytvorený príkazom Bash tee. Oprávnenie Bash(tee:*) už nepokrýva zápisy mimo pracovných adresárov.

Tieto verzie opravili aj dva problémy súvisiace s odhalením tajných údajov. WebFetch už nečaká donekonečna na odpoveď servera, ktorý udržiava spojenie otvorené: požiadavka teraz zlyhá po 300 sekundách a časový limit možno nastaviť premennou CLAUDE_CODE_WEBFETCH_DEADLINE_MS. Odstránilo sa aj trvalé vysoké využitie CPU počas dlhých nečinných relácií.

Ako fungujú blokovania v Claude Code?

Kľúčové zistenie

Pravidlá sa zapisujú do bloku permissions v súbore settings.json: deny blokuje, ask žiada potvrdenie a allow povoľuje akciu bez potvrdenia. Kontroly prebiehajú v tomto poradí: deny, potom ask a napokon allow. Pravidlo má formát Tool alebo Tool(detail), napríklad Read(./.env).

Claude Code má tri zoznamy pravidiel: deny (vždy zakázané), ask (pred vykonaním akcie sa opýtať) a allow (povolené bez potvrdenia). Keď sa agent chystá niečo vykonať, pravidlá sa kontrolujú presne v tomto poradí. Pravidlo deny, ktoré sa zhoduje, ruší každé pravidlo allow pre tú istú akciu: pravidlo allow nemôže vytvoriť výnimku zo zákazu.

Pravidlá sa ukladajú na troch miestach: používateľské pravidlá v ~/.claude/settings.json, projektové pravidlá v .claude/settings.json v úložisku a lokálne pravidlá v .claude/settings.local.json. Tu je príklad nastavení, ktoré zakazujú čítanie súboru s kľúčmi:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(rm *)"
    ]
  }
}

Všetky aktívne pravidlá a súbor, z ktorého každé pochádza, môžete zobraziť spustením príkazu /permissions v relácii. Ak pravidlo blokuje čítanie, hlásenie o zamietnutí uvedie dané pravidlo, čo sa hodí pri nasledujúcej kontrole.

Ktoré chyby ovplyvnili blokovania a rozsah pravidiel?

Chyby ovplyvnili kontroly ciest a príkazov, ako aj rozsah pravidiel z rôznych súborov nastavení.

Prvý prípad: symbolické odkazy. V systéme macOS sú /etc, /tmp a /var symbolické odkazy na skutočné priečinky pod /private; v systéme Linux je podobným odkazom zvyčajne /bin. Ak ste napísali pravidlo deny pre jednu podobu cesty, ale agent k nej pristupoval cez inú (napríklad cez skutočné umiestnenie namiesto symbolického odkazu), pravidlo sa nespustilo. Príkazy Bash tiež ignorovali zákaz zapísaný pre cestu cez symbolický odkaz. Vo verzii 2.1.268 sa opravili oba prípady: pravidlo teraz platí bez ohľadu na to, aká podoba cesty sa použila.

Druhý prípad: env -C a eval na tom istom riadku. Kontrola oprávnení analyzuje príkaz, aby zistila, ku ktorým súborom pristúpi. Nedokáže analyzovať konštrukcie ako env -C alebo eval. Chyba spočívala v tom, že keď sa takáto konštrukcia objavila na riadku, pravidlo deny pre Read alebo Edit sa nemuselo uplatniť. Príkaz tak mohol obísť zákaz čítania alebo úpravy chráneného súboru.

Tretí prípad: pravidlo s „!“ presahovalo svoje hranice. Pravidlo začínajúce znakom ! sa má uplatňovať iba v súbore nastavení, v ktorom je zapísané. Pred verziou 2.1.269 sa uplatňovalo aj na iné zdroje nastavení. Teraz je jeho rozsah obmedzený na vlastný súbor a pravidlo pozostávajúce iba zo samostatného ! sa ignoruje.

Štvrtý prípad: zápis cez tee. Príkaz Bash tee môže zapisovať do súboru. Kontrola cesty zápisu a pravidlá deny pre Edit() sa na tento súbor nevzťahovali. Oprávnenie Bash(tee:*) zároveň pokrývalo zápisy mimo pracovných adresárov. Vo verzii 2.1.269 sa tieto kontroly začali uplatňovať na zápisy cez tee: zákaz pre súbor sa vykoná a Bash(tee:*) pokrýva iba pracovné adresáre.

Ak používate cielené blokovania na ochranu .env, niekoľkých priečinkov služieb alebo nebezpečných príkazov, mali by ste skontrolovať aj tie. Postup je uvedený nižšie.

Prečo mohlo /mcp zobraziť vaše kľúče?

Kľúčové zistenie

Kľúče v konfiguráciách MCP sa často poskytujú prostredníctvom premenných ${VAR}. Príkazy /mcp, /plugin, claude mcp list a claude mcp get, ako aj chyby pri prihlasovaní do MCP, zobrazovali dosadené hodnoty — teda samotné kľúče. Vo verzii 2.1.268 je výstup redigovaný.

V konfiguráciách serverov MCP sa kľúče zvyčajne uchovávajú v premenných prostredia a odkazuje sa na ne pomocou ${VAR}, aby sa súbor dal uložiť do úložiska bez samotných tajných údajov. Problém spočíval v tom, že príkazy na zobrazenie konfigurácie (/mcp, /plugin, claude mcp list, claude mcp get) a chybové hlásenia pri prihlasovaní do MCP zobrazovali konfiguráciu už s dosadenými hodnotami. Na obrazovke sa objavil samotný kľúč.

Ďalšia oprava sa týka chýb doplnkov a trhoviska: mohli zobraziť token alebo heslo z pôvodnej URL adresy Git.

Ak sa výstup príkazu /mcp alebo claude mcp list zo staršej verzie objavil vo vysielanom prenose, na snímke obrazovky, v správe kolegovi alebo v protokole, ktorý opustil váš počítač, a to aj automaticky, predpokladajte, že kľúče z konfigurácií MCP boli odhalené, a vymeňte ich. Ak výstup váš počítač neopustil, stačí aktualizovať. Samostatný sprievodca servermi MCP a pripravenými nastaveniami je tu: Servery MCP pre Claude Code.

Ďalšie zmeny v týchto verziách

WebFetch a artefakty. Predtým sa pravidlo WebFetch bez podrobností v zozname deny alebo ask vzťahovalo aj na čítanie a úpravu zverejnených artefaktov. Od verzie 2.1.268 sa na ne už nevzťahuje. Ak chcete blokovať artefakty, potrebujete samostatné pravidlo Artifact alebo pravidlo pre doménu, napríklad WebFetch(domain:claude.ai). Ak ste sa spoliehali na všeobecný zákaz WebFetch ako ochranu pred čítaním artefaktov, znova skontrolujte svoje nastavenia: predchádzajúce pravidlo už tieto akcie neblokuje.

WebFetch má teraz časový limit. Požiadavka na server, ktorý udržiava spojenie otvorené a nedokončí svoju odpoveď, teraz zlyhá po 300 sekundách. Predtým sa takáto požiadavka mohla zaseknúť na neurčito. Toto správanie možno nastaviť premennou CLAUDE_CODE_WEBFETCH_DEADLINE_MS; nastavenie hodnoty 0 časový limit vypne.

Odstránilo sa trvalé vysoké využitie CPU v nečinných reláciách. Počas dlhých nečinných relácií mohla nečinná slučka v Claude Code spôsobovať trvalo vysoké využitie CPU. Táto chyba sa opravila vo verzii 2.1.268. Mohla sa týkať aj ľudí, ktorí nechávajú relácie otvorené celý deň.

Nainštalujte najnovšiu verziu. Vo verzii 2.1.269 sa objavila nová chyba: po dlhom čase od spustenia relácie začali príkazy Bash Git, ktoré iba čítali údaje, žiadať o povolenie. Opravilo sa to vo verzii 2.1.270. Aktualizujte preto na najnovšiu verziu (k 17. septembru 2026 to bola 2.1.274); nezastavte sa pri verzii 2.1.268 ani 2.1.269.

Ako aktualizovať a overiť, že blokovania fungujú?

Kľúčové zistenie

Skontrolujte verziu pomocou claude --version, aktualizujte na najnovšie vydanie a potom otestujte pravidlo na bezpečnom súbore bez tajných údajov: pridajte preň pravidlo deny, požiadajte agenta, aby súbor prečítal, a uistite sa, že hlásenie o zamietnutí odkazuje na vaše pravidlo.

  1. Zistite svoju aktuálnu verziu. V termináli spustite claude --version. Opravy vyššie opísaných problémov vyšli vo verziách 2.1.268 a 2.1.269. Ak je číslo verzie nižšie než 2.1.268, vaša verzia tieto opravy ešte neobsahuje, hoci to, či sa vás jednotlivé problémy týkajú, závisí od používaných ciest, príkazov a pravidiel.
  2. Aktualizujte. Sprievodca ako aktualizovať Claude Code na najnovšiu verziu obsahuje podrobné pokyny a riešenie problémov. Vyberte najnovšiu verziu; nezastavte sa pri 2.1.268.
  3. Otestujte blokovanie. Netestujte pravidlo na skutočnom súbore .env: ak blokovanie zlyhá, agent uvidí skutočné kľúče. Vytvorte testovací súbor, napríklad secret-test.txt, s ľubovoľným textom, napríklad „toto je test“; do zoznamu deny v projektovom súbore .claude/settings.json pridajte pravidlo "Read(./secret-test.txt)"; reštartujte reláciu; a požiadajte: „prečítaj súbor secret-test.txt a povedz mi, čo obsahuje.“ Očakávaným výsledkom je zamietnutie, ktoré uvedie vaše pravidlo. Ak agent súbor prečíta, blokovanie v tomto teste nefungovalo. Najprv skontrolujte syntax v predchádzajúcej časti a otvorte /permissions, aby ste videli aktívne pravidlá a súbory, z ktorých sa načítali. Samotný výsledok testu neurčuje príčinu. Jedno zamietnutie ukazuje, že pravidlo pre tento súbor funguje; o ostatných pravidlách nič nehovorí, preto ich kontrolujte postupne rovnakým spôsobom.
  4. Ak používate takéto cesty, skontrolujte prípad so symbolickým odkazom. Ak máte pravidlá deny pre /tmp, /etc alebo /var v systéme macOS, prípadne pre /bin v systéme Linux, po aktualizácii zopakujte test pre tieto cesty.
  5. Skontrolujte pravidlá s „!“. Ak ste nejaké použili, overte, že každé je zapísané v súbore, v ktorom sa má uplatňovať.

Ak blokovanie funguje, ale Claude Code stále nevidí potrebné súbory, pozrite si samostatné vysvetlenie: prečo Claude Code nevidí súbory projektu.

Ak teraz nemôžete aktualizovať

Niekedy musíte aktualizáciu odložiť: nemôžete zmeniť prostredie, počítač patrí spoločnosti alebo potrebujete dokončiť aktuálnu úlohu. Kým neaktualizujete, môžete znížiť riziko takto:

  • napíšte pravidlá deny pre oba zápisy cesty — symbolický odkaz aj skutočné umiestnenie (v systéme macOS sú skutočné cesty pod /private);
  • nekombinujte viacero príkazov na jednom riadku a v príkazoch, ktorých vykonanie žiadate od agenta, sa vyhýbajte env -C a eval;
  • nikomu nezobrazujte výstup príkazov /mcp, /plugin, claude mcp list ani claude mcp get a vymeňte kľúče z konfigurácií MCP, ktoré sa mohli dostať do cudzích rúk;
  • pamätajte, že tee obchádza pravidlo deny pre Edit — ak je Bash povolený, nepovažujte súbory za chránené.

Tieto opatrenia znižujú pravdepodobnosť konkrétnych obídení, ale nenahrádzajú opravu. Hneď ako budete môcť, aktualizujte a vykonajte test z predchádzajúcej časti.

Stručné zhrnutie

Verzie 2.1.268 a 2.1.269 opravili štyri problémy s oprávneniami v Claude Code: symbolické odkazy, riadky s env -C a eval, pravidlá s „!“, ktoré sa uplatňovali aj mimo vlastného súboru, a zápisy cez tee. Samostatne opravili odhalenie tajných údajov vo výstupe /mcp a tokenov v chybách doplnkov. Skontrolujte číslo verzie, aktualizujte na najnovšie vydanie a vykonajte test s testovacím súborom z predchádzajúcej časti. Zamietnutie, ktoré uvedie vaše pravidlo, dokazuje, že blokovanie pri tomto teste fungovalo. Samotná prítomnosť pravidla v nastaveniach na overenie jeho funkčnosti nestačí.

Zdroje

Ak chcete pokračovať v práci s modelmi, môžete prejsť na Ailoot.

Viac podrobností

Otázky a odpovede: Claude Code 2.1.268: Čo sa opravilo v pravidlách deny a MCP

Ako otestovať pravidlo deny bez odhalenia skutočného tajomstva?

Vytvorte súbor s neškodným textom, zakážte k nemu prístup Read, reštartujte reláciu a požiadajte agenta, aby ho prečítal. Očakávajte odmietnutie s uvedením vášho pravidla. Na skúšku, ktorá môže zlyhať, nikdy nepoužívajte skutočný súbor .env.

Dokazuje jedno úspešné odmietnutie bezpečnosť všetkých oprávnení?

Nie. Overuje iba testovaný súbor a spôsob prístupu. V /permissions si prezrite aktívne pravidlá a potom otestujte ďalšie cesty a prípady, na ktoré sa spoliehate, vrátane ciest cez symbolické odkazy, ak ich používate.

Všetky články