Blog JSystems - uwalniamy wiedzę!

Szukaj

Claude Code

Claude Code nie może edytować ani zapisać pliku (cannot edit/write file) - co zrobić

W skrócie

  • Problem: Edycja lub zapis pliku przez Claude Code kończy się błędem "cannot edit file", "cannot write file" albo "File has not been read yet".
  • Dlaczego: Claude Code wymaga wcześniejszego odczytu pliku przed edycją, a fragment do podmiany musi pasować dokładnie i być unikatowy; do tego dochodzą brak uprawnień, zła ścieżka lub blokada przez inny program.
  • Rozwiązanie: Poproś o odczyt pliku, podaj dokładny unikatowy fragment, sprawdź prawa zapisu i ścieżkę oraz zamknij plik w innych aplikacjach.

Claude Code próbuje zmienić plik i zwraca komunikat o niemożności edycji albo zapisu. W większości przypadków to nie awaria narzędzia, tylko naruszenie jednej z jego reguł bezpieczeństwa. Pokazujemy, jak to szybko rozbroić.

Jak to wygląda w praktyce

Podczas próby modyfikacji pliku Claude Code przerywa działanie i wypisuje komunikat w rodzaju cannot edit file, cannot write file albo File has not been read yet. Zmiana nie zostaje zapisana, a Ty widzisz plik w niezmienionej postaci.

Czasem błąd pojawia się dopiero przy podmianie konkretnego fragmentu - narzędzie zgłasza, że nie znalazło szukanego tekstu albo że pasuje on w wielu miejscach naraz. Efekt jest ten sam: edycja nie przechodzi.

Dlaczego tak się dzieje

Claude Code celowo wymaga, żeby przed edycją najpierw odczytał plik - stąd File has not been read yet. Bez tego nie zna aktualnej treści i odmawia zapisu, żeby nie nadpisać czegoś w ciemno.

Druga rodzina przyczyn to sam fragment do podmiany. Edycja wymaga, żeby stary tekst pasował do pliku znak w znak i był unikatowy. Różnica w spacjach, tabulatorach albo końcach linii wystarczy, żeby dopasowanie nie zaskoczyło, a powtarzający się fragment jest odrzucany jako niejednoznaczny.

Reszta to klasyka systemu plików: plik tylko do odczytu lub brak uprawnień zapisu, ścieżka, która nie istnieje albo ma literówkę, oraz plik zablokowany przez inny otwarty program. Zdarza się też, że plik zmienił się poza sesją i stan znany Claude jest już nieaktualny.

Jak to rozwiązać krok po kroku

  1. Poproś Claude, żeby najpierw odczytał plik, który ma edytować - to usuwa błąd File has not been read yet.
  2. Sprawdź prawa zapisu i atrybut tylko do odczytu; w razie potrzeby zdejmij flagę (na Windows attrib -R plik, na systemach Unix chmod u+w plik).
  3. Podaj dokładny, unikatowy fragment do podmiany - skopiuj go 1:1 z pliku, łącznie z wcięciami, i dołóż otaczające linie, żeby był jednoznaczny.
  4. Upewnij się, że ścieżka jest poprawna i plik faktycznie istnieje pod tą lokalizacją (ls lub dir).
  5. Zamknij plik w innych programach (edytor, IDE, podgląd), które mogą go blokować, i spróbuj ponownie.
  6. Jeśli plik zmienił się poza sesją, poproś o ponowny odczyt, żeby Claude pracował na aktualnej wersji przed kolejną edycją.

Jak sprawdzić, że zadziałało

Po zmianie otwórz plik w edytorze albo poproś Claude o jego ponowny odczyt i sprawdź, czy modyfikacja faktycznie się zapisała. Jeśli treść jest już nowa, a kolejne edycje przechodzą bez komunikatu o błędzie, problem jest rozwiązany.

Wróć do listy 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 żąda odczytu pliku przed każdą edycją?
To zabezpieczenie: bez znajomości aktualnej treści narzędzie mogłoby nadpisać zmiany, których nie widziało. Odczyt daje mu pewny punkt odniesienia, dlatego przy pierwszej edycji nowego pliku w sesji zwykle robi Read, a jeśli tego nie zrobi, zgłasza File has not been read yet.
Co zrobić, gdy fragment do podmiany nie jest unikatowy?
Rozszerz go o sąsiednie linie, żeby całość występowała w pliku tylko raz, albo wskaż konkretne miejsce przez unikatowy kontekst wokół. Możesz też poprosić o podmianę wszystkich wystąpień naraz, jeśli faktycznie chcesz zmienić każde z nich w ten sam sposób.
Skąd wiem, że to problem z uprawnieniami, a nie z dopasowaniem tekstu?
Komunikaty o braku dostępu lub pliku tylko do odczytu wskazują na system plików, a informacje o nieznalezionym albo niejednoznacznym fragmencie dotyczą samej treści. Sprawdź atrybuty pliku i prawa zapisu; jeśli są w porządku, przyczyna leży po stronie dopasowywanego tekstu.
Czy różnice w białych znakach naprawdę potrafią zablokować edycję?
Tak, i to jest częsta pułapka. Spacje kontra tabulatory, dodatkowa spacja na końcu linii albo inny znak końca wiersza sprawiają, że dopasowanie znak w znak nie zaskakuje. Najpewniej kopiować fragment prosto z odczytanego pliku, zamiast przepisywać go ręcznie.

Komentarze (0)

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

Brak komentarzy...