Sandbox jest użyteczny tylko wtedy, gdy faktycznie trzyma agenta wewnątrz wyznaczonego obszaru. Claude Code 2.1.216 uszczelnia kilka luk, które mogłyby pozwolić zadaniu w tle, subagentowi lub wznowionej sesji na wyjście poza przypisany katalog. To wydanie wprowadza nowy przełącznik konfiguracji, ale ważniejsza praca odbyła się „pod maską”: inteligentniejsza obsługa Git worktrees, linków symbolicznych (symlinks) oraz restartów agenta. Jeśli uruchamiasz Claude Code lokalnie lub w CI, zmiany te zasługują na coś więcej niż tylko szybkie przejrzenie changelogu.
Przełącznik systemu plików, którego nie powinieneś traktować bagatelnie
Wersja 2.1.216 dodaje sandbox.filesystem.disabled. Po ustawieniu tej opcji Claude Code pomija własną izolację systemu plików, nadal jednak wymuszając sandbox sieciowy. Na pierwszy rzut oka brzmi to jak sposób na uniknięcie błędów uprawnień lub przyspieszenie operacji na plikach. Tak nie jest. Tę opcję należy włączyć tylko wtedy, gdy inna warstwa już chroni Twój dysk.
Oznacza to jednorazowy kontener, który jest usuwany po każdym uruchomieniu, lub dedykowaną maszynę wirtualną bez dostępu do Twojego katalogu domowego lub wolumenów produkcyjnych. Jeśli uruchamiasz Claude Code bezpośrednio na macOS, Windows lub czystym hoście Linux, pozostaw izolację systemu plików włączoną. Sandbox sieciowy nie zastępuje kontroli systemu plików, a niewielkie niedogodności związane z dostępem do plików w sandboxie są znacznie mniej kosztowne niż odzyskiwanie danych po przypadkowym nadpisaniu lub złośliwym wstrzyknięciu promptu (prompt injection), które pozwoli na wyjście poza folder projektu.
Traktuj ten przełącznik jako warstwę zapewniającą kompatybilność (shim), a nie suwak wydajności. Istnieje on dla środowisk, w których system operacyjny lub orchestrator już zajmuje się izolacją, a własny sandbox Claude'a wprowadzałby niepotrzebną złożoność.
Co tak naprawdę naprawia ta aktualizacja
Poza nową ustawieniem, wersja 2.1.216 zamyka kilka praktycznych luk, które mogłyby pozwolić agentowi dotrzeć tam, gdzie nie powinien.
Izolacja worktree. Subagenci nie mogą już przekierowywać poleceń Git do katalogu nadrzędnego lub sąsiedniego, znajdującego się poza ich własnym worktree. Wcześniej subagent działający wewnątrz Twojego projektu mógł kierować operacje Git na wspólny checkout lub sąsiednie repozytoria. Ma to znaczenie, ponieważ wielu programistów przechowuje wiele projektów w jednym wspólnym katalogu nadrzędnym. Teraz te polecenia przekraczające granice zakończą się niepowodzeniem.
Wzmocnienie ochrony linków symbolicznych w ścieżce .claude. Definicje workflow i zaplanowane zadania wcześniej podążały za linkami symbolicznymi podczas zapisywania konfiguracji. Atakujący, który mógłby utworzyć link symboliczny z .claude do, na przykład, profilu powłoki (shell profile) lub katalogu SSH, mógłby potencjalnie zmusić agenta do zapisu danych poza projektem. Aktualizacja zapobiega temu poprzez odmowę podążania za linkami symbolicznymi w tej ścieżce.
Bezpieczniejsze operacje rewind. Polecenie /rewind, które pozwala cofnąć ostatnie zmiany, pomija teraz ścieżki będące linkami symbolicznymi i twardymi (hard-linked). Bez tego zabezpieczenia operacja rewind mogłaby podążyć za linkiem symbolicznym i nadpisać plik znajdujący się daleko od Twojego repozytorium. Claude raportuje teraz te pominięte ścieżki w sposób jawny, dzięki czemu wiesz, że granica została zachowana.
Wznowieni agenci zachowują swoje ograniczenia. Sesje działające w tle, które zostały zatrzymane, a następnie wznowione, wcześniej powracały do domyślnych uprawnień narzędzi. Jeśli celowo ograniczyłeś agenta tak, aby mógł tylko czytać, ale nie pisać, restart mógł po cichu przywrócić szerszy dostęp. Teraz oryginalne ograniczenia są zachowywane i przywracane wraz z sesją.
Wybór profilu bezpieczeństwa
Claude Code 2.1.216 organizuje te kontrole w trzy profile. Wybierz profil na podstawie miejsca, w którym uruchamiasz narzędzie, a nie na podstawie tego, co wydaje się najszybsze.
Default. Zarówno izolacja systemu plików, jak i sieci pozostają aktywne. Jest to właściwy wybór do lokalnego rozwoju na laptopie lub stacji roboczej. Chroni Twój katalog domowy, pliki systemowe i sąsiednie projekty bez konieczności zarządzania kontenerami.
Compatibility. Izolacja systemu plików jest wyłączona, ale sandbox sieciowy pozostaje aktywny. Ogranicz stosowanie tego profilu do jednorazowych kontenerów lub maszyn wirtualnych, gdzie system plików jest już efemeryczny lub ściśle ograniczony. Nie używaj go tylko dlatego, że masz dość wpisywania haseł, aby umożliwić agentowi dostęp do chronionego folderu.
Managed Hard Gate. Obie warstwy sandboxa pozostają włączone, a profil zakłada dodatkowe polityki kontenerowe wymuszane przez orchestratora lub zespół ds. bezpieczeństwa. Jest to rozwiązanie stworzone dla potoków CI, zdalnych środowisk programistycznych i konfiguracji korporacyjnych, gdzie wymagana jest obrona wielowarstwowa (defense in depth).
Jeśli nie masz pewności, który profil będzie odpowiedni, zacznij od Default. Możesz obniżyć poziom ochrony dopiero po zweryfikowaniu, że Twoje środowisko uruchomieniowe faktycznie samodzielnie izoluje system plików.
Aktualizacja bez przerywania przepływu pracy
Nie traktuj tego jak rutynowej poprawki, którą instalujesz w piątkowe popołudnie. Ścieżka aktualizacji w wersji 2.1.216 jest prosta, ale konsekwencje błędnej konfiguracji już nie.
Najpierw zaktualizuj do wersji 2.1.216 za pomocą swojego standardowego menedżera pakietów lub instalatora. Następnie wybierz jeden z trzech profili izolacji przed rozpoczęciem jakichkolwiek zadań agenta. Nie mieszaj profili w trwających sesjach, nie wiedząc, który z nich ma pierwszeństwo.
Następnie przeprowadź pięć nieinwazyjnych testów granicznych opisanych poniżej. Są to szybkie, zautomatyzowane kontrole, które potwierdzają, że piaskownica (sandbox) zachowuje się zgodnie z obietnicami profilu. Podczas testowania wygeneruj hashe strażnicze (sentinel hashes) dla plików znajdujących się poza Twoim tymczasowym repozytorium testowym. Hash strażniczy to po prostu suma kontrolna wrażliwego pliku lub katalogu, który chcesz chronić. Po przeprowadzeniu testów porównaj hashe. Jeśli cokolwiek się zmieniło, oznacza to wyciek izolacji.
Porównaj również logi. Claude Code zapisuje odmowy i zdarzenia piaskownicy w swoich lokalnych logach. Szukaj wyraźnych odrzuceń w sytuacjach, gdy próbowano połączyć się z zablokowanym hostem lub gdy subagent wychodzi poza swój worktree. Ciche błędy są gorsze niż te jawne, więc upewnij się, że logi pokazują aktywację zabezpieczeń (guardrails).
Na koniec wdrażaj zmiany stopniowo. Zacznij od pojedynczego projektu lub gałęzi nieprodukcyjnej. Pozwól nowej wersji działać przez dzień lub dwa, zanim wdrożysz ją w całym zespole lub infrastrukturze CI.
Pięć testów granicznych, które potwierdzą działanie piaskownicy
Zawsze przeprowadzaj te testy wewnątrz tymczasowego repozytorium wypełnionego fałszywymi danymi. Nigdy nie kieruj ich na kod produkcyjny, prawdziwe dane uwierzytelniające ani działającą infrastrukturę.
Granica sieciowa. Spróbuj połączyć się z dwoma punktami końcowymi: jednym, który wyraźnie zezwoliłeś, oraz jednym, który zablokowałeś. Proste żądanie HTTP do publicznej usługi testowej, takiej jak httpbin.org, może służyć jako dozwolony cel, podczas gdy żądanie do lokalnego punktu końcowego metadanych lub wewnętrznego adresu IP powinno zakończyć się niepowodzeniem. Jeśli zablokowane żądanie zakończy się sukcesem, Twoja piaskownica sieciowa jest błędnie skonfigurowana.
Izolacja worktree. Z poziomu subagenta uruchom komendę Git skierowaną do katalogu nadrzędnego. Na przykład spróbuj użyć git -C .. status lub poproś agenta o opisanie plików znajdujących się poza jego checkoutem. Dzięki poprawce w wersji 2.1.216 operacja ta musi zakończyć się niepowodzeniem. Subagent powinien widzieć tylko własny worktree.
Pułapka na symlinki. Utwórz w swoim projekcie link symboliczny (symlink) wskazujący na katalog poza repozytorium, np. /tmp/sentinel-target. Następnie spróbuj zapisać zadanie lub workflow pod ścieżką .claude, co spowodowałoby zapis przez ten link. Po zapisaniu sprawdź katalog zewnętrzny. Jeśli nadal jest pusty, oznacza to, że wzmocnienie ochrony symlinków działa.
Pominięcie podczas rewind. Skonfiguruj folder w swoim repozytorium, który zawiera link symboliczny do pliku systemowego lub innego katalogu. Uruchom /rewind na tym folderze. Claude powinien wymienić pominięte ścieżki z linkami symbolicznymi lub twardymi, zamiast próbować do nich dotrzeć. Potwierdź, że cel poza repozytorium pozostał nietknięty.
Wskrzeszenie sesji. Uruchom agenta działającego w tle z rygorystycznym ograniczeniem, np. z wyłączonymi narzędziami do zapisu plików. Wstrzymaj lub zatrzymaj sesję, a następnie ją wznow. Natychmiast spróbuj nakazać agentowi zapisanie pliku. Jeśli ograniczenie jest nadal aktywne, poprawka dla wznowionych agentów działa. Jeśli agent nagle odzyska pełny dostęp do narzędzi, nadal jesteś narażony na ryzyko.
Słowo końcowe
Claude Code 2.1.216 daje Ci większą elastyczność niż poprzednie wersje, ale ta elastyczność wiąże się z jasnym nakazem: weryfikuj, zanim zaufasz. Nowy przełącznik systemu plików nie służy temu, aby ułatwiać życie kosztem bezpieczeństwa. Jest on przeznaczony dla inżynierów, którzy już zbudowali solidne fundamenty pod tym narzędziem. Prawdziwymi usprawnieniami w tym wydaniu są ciche zabezpieczenia (guardrails), które powstrzymują subagentów przed wkraczaniem do katalogów nadrzędnych, odmawiają podążania za linkami symbolicznymi podczas zapisu konfiguracji i pamiętają zasady nawet po długiej przerwie.
Przeprowadź pięć testów. Sprawdź hashe strażnicze. Przeczytaj logi. Wtedy, i dopiero wtedy, pozwól nowej wersji wykonywać realną pracę.
Źródło: Claude Code v2.1.216 Release Notes
Opcjonalna społeczność edukacyjna: GyaanSetu on Telegram
