Blog JSystems - uwalniamy wiedzę!

Szukaj

Claude Code

Claude Code usuwa działający kod - jak się zabezpieczyć

W skrócie

  • Przy większej zmianie Claude Code potrafi usunąć działający fragment kodu, który uznał za zbędny, martwy albo kolidujący z nowym rozwiązaniem.
  • Powodem jest to, że model realizuje cel zadania i sam decyduje, co jest przeszkodą, gdy nie widzi, że dany kod jest naprawdę potrzebny.
  • Rozwiązanie: pracuj pod kontrolą wersji, zawężaj polecenia, każ zachować istniejącą logikę i przeglądaj diff przed zaakceptowaniem.

Claude Code, agentowe narzędzie CLI od Anthropic, nie tylko dopisuje kod, ale też go przepisuje i kasuje. Gdy prosisz o refaktor albo o wdrożenie nowej funkcji, model może uznać, że stary blok jest niepotrzebny, i po prostu go usunąć. Czasem ma rację, a czasem wycina obsługę przypadku brzegowego, walidację albo funkcję, z której korzysta kod, którego akurat nie miał otwartego. Bez kopii w systemie kontroli wersji odtworzenie takiego fragmentu bywa bolesne.

Jak to wygląda w praktyce

Prosisz o uproszczenie funkcji, a przy okazji znika obsługa sytuacji, gdy dane wejściowe są puste. Albo zlecasz przepisanie modułu na nowy wzorzec i po zmianie brakuje metody, którą wołał zupełnie inny plik. Testy, jeśli je masz, zaświecą się na czerwono. Jeśli testów nie masz, dowiesz się o tym dopiero na produkcji albo podczas ręcznego klikania. Szczególnie podstępny jest wariant, w którym Claude Code zostawia kod pozornie kompletny, ale usuwa jeden warunek, przez co logika działa inaczej niż wcześniej.

Dlaczego Claude Code tak działa

Model dostaje cel i dąży do czystego, spójnego wyniku. Jeśli w trakcie realizacji widzi kod, który wygląda na nieużywany albo kłóci się z nowym podejściem, traktuje jego usunięcie jako element porządków. Problem w tym, że Claude Code widzi tylko ten kontekst, który mu podałeś albo który sam zdążył przeczytać. Nie ma pełnej wiedzy o wszystkich miejscach w projekcie, które zależą od danego fragmentu, chyba że mu je pokażesz albo pozwolisz je znaleźć. Dlatego blok, który dla Ciebie jest krytyczny, dla modelu bywa martwym kodem do sprzątnięcia. To nie złośliwość ani błąd, tylko skutek pracy na ograniczonym oknie kontekstu.

Jak to rozwiązać krok po kroku

  1. Zawsze pracuj w repozytorium Git z czystym drzewem przed sesją. To Twoja siatka bezpieczeństwa: cokolwiek Claude Code usunie, odzyskasz przez git restore albo git revert.
  2. W prompcie wprost chroń istniejącą logikę: napisz zachowaj całą obecną funkcjonalność, nie usuwaj obsługi przypadków brzegowych ani walidacji, dodaj nowe zachowanie obok starego zamiast je zastępować.
  3. Przy refaktorze poproś o podejście zachowawcze: niech Claude Code najpierw wypisze, co zamierza usunąć i dlaczego, a dopiero po Twojej zgodzie to wykona. Pytanie o plan przed edycją odsiewa większość niechcianych kasowań.
  4. Jeśli masz testy, każ mu uruchomić je po zmianie. Poproś: po refaktorze odpal zestaw testów i pokaż wynik. Czerwony test od razu ujawni usuniętą ścieżkę.
  5. Nie zostawiaj długich, wieloetapowych zleceń bez kontroli. Podziel refaktor na mniejsze kroki i po każdym sprawdź diff. Im mniejsza tura, tym mniejsze ryzyko, że coś ważnego zniknie niezauważone.
  6. Wpisz stałą regułę do pliku CLAUDE.md, na przykład: nie usuwaj kodu bez wyraźnego polecenia, w razie wątpliwości zostaw go i zapytaj. Model czyta ten plik na starcie każdej sesji.

Jak sprawdzić, że zadziałało

Po turze przejrzyj git diff i zwróć uwagę na linie oznaczone minusem: to dokładnie to, co zniknęło. Jeśli widzisz tam warunek, funkcję albo walidację, której nie chciałeś tracić, przywróć ją. Uruchom testy i, jeśli to aplikacja, przeklikaj ścieżkę, której dotyczyła zmiana. Dobrym nawykiem jest wyszukanie w projekcie odwołań do usuwanej nazwy przed akceptacją: jeśli gdziekolwiek jeszcze się pojawia, to znak, że kod nie był martwy. Gdy diff pokazuje tylko świadomie zaplanowane usunięcia, a testy przechodzą, zmiana jest bezpieczna.

Wróć do listy: 100 najczęstszych problemów z Claude Code

Szkolenie Claude Code - od zera do zespołu agentów AI, prowadzi Łukasz Matuszewski (JSystems)

Szkolenie Claude Code - od zera do zespołu agentów AI -->

Szkolenie Claude Code - od zera do zespołu agentów AI

Tryb planowania, tryby uprawnień, komendy, MCP, hooki i systemy multi-agent - wszystko na żywym kodzie podczas trzydniowego szkolenia. Prowadzi Łukasz Matuszewski. Szkolenie ma terminy gwarantowane - odbędzie się niezależnie od liczby zgłoszeń.

Sprawdź szkolenie Claude Code

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Dlaczego Claude Code usuwa działający kod podczas refaktoru?
Model dąży do czystego, spójnego wyniku i jeśli widzi fragment, który wygląda na nieużywany albo kłóci się z nowym podejściem, traktuje jego usunięcie jako porządki. Problem w tym, że widzi tylko ten kontekst, który mu podałeś albo który zdążył przeczytać, więc blok krytyczny dla Ciebie bywa dla niego martwym kodem. To skutek pracy na ograniczonym oknie kontekstu, a nie złośliwość.
Jak zabezpieczyć się przed utratą kodu, zanim zlecę zmianę?
Zawsze pracuj w repozytorium Git z czystym drzewem przed sesją, bo to siatka bezpieczeństwa: cokolwiek zniknie, odzyskasz przez git restore albo git revert. W prompcie wprost chroń logikę, pisząc, że ma zachować całą obecną funkcjonalność i nie usuwać obsługi przypadków brzegowych ani walidacji, a nowe zachowanie dodać obok starego, nie zamiast niego.
Jak sprawić, żeby Claude Code nie kasował kodu bez mojej zgody?
Poproś o podejście zachowawcze: niech najpierw wypisze, co zamierza usunąć i dlaczego, a wykona to dopiero po Twojej akceptacji. Pytanie o plan przed edycją odsiewa większość niechcianych kasowań. Warto też wpisać do pliku CLAUDE.md regułę, że nie usuwa kodu bez wyraźnego polecenia, a w razie wątpliwości zostawia go i pyta.
Jak sprawdzić, czy refaktor nie wyciął czegoś ważnego?
Przejrzyj git diff i zwróć uwagę na linie z minusem, bo to dokładnie to, co zniknęło; jeśli jest tam warunek, funkcja albo walidacja, przywróć je. Uruchom testy i przeklikaj ścieżkę, której dotyczyła zmiana. Przed akceptacją wyszukaj w projekcie odwołania do usuwanej nazwy: jeśli gdziekolwiek jeszcze występuje, kod nie był martwy.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...