Przejdź do głównej zawartości

Bezpieczna aktualizacja Cursora to trzy ruchy: zapisanie punktu odniesienia dla obecnego buildu (wersji, rozszerzeń, serwerów MCP i wyników testów projektu), aktualizacja i porównanie nowego buildu z tym zapisem oraz trzymanie poprzedniego buildu ze sprawdzonym hashem, żeby nieudana aktualizacja kosztowała minuty. Domyślnie Cursor aktualizuje się sam.

Ta strona jest dla dewelopera, któremu Cursor zaktualizował się w nocy, i dla tech leada, który musi zdecydować, czy zespół idzie za nim. Rano po aktualizacji agent przestaje stosować regułę projektu, jedno rozszerzenie się nie ładuje, a serwer MCP dla Postgresa nie pokazuje żadnych narzędzi. Bez zapisu, jak wszystko wyglądało wczoraj, nie odróżnisz, czy zepsuła to aktualizacja, czy było zepsute już wcześniej.

  • Pięciominutową rutynę przed aktualizacją, która archiwizuje dane Cursora i zapisuje punkt odniesienia do porównania.
  • Prompt do skopiowania, którym agent zapisuje ten punkt odniesienia, i drugi, który powtarza go na nowym buildzie i raportuje każdą różnicę.
  • Kryterium zaliczenia oparte na kodach wyjścia i listach, a nie na czytaniu odpowiedzi agenta linijka po linijce.
  • Kroki wycofania dla macOS, Linuksa i Windows, które instalują poprzedni build po sprawdzeniu jego hasha SHA-256, a na Windows podpisu cyfrowego.
  • Sposób wyjścia z każdej typowej awarii aktualizacji oraz trzeci prompt, który zamienia regresję w zgłoszenie błędu.

Zapisz build, zanim cokolwiek się zmieni. Uruchom w terminalu:

Okno terminala
cursor --version

Pierwsza linia to wersja, druga to hash commita buildu, trzecia to architektura procesora. Zapisz wszystkie trzy razem z datą. Przy wycofaniu najważniejszy jest hash commita: adresy pobierania Cursora są od niego zależne, a cask Homebrew zapisuje go dla każdego wydania, do którego został podbity.

Informacje o wydaniu Cursora numerują aplikację desktopową wersjami minor. Na 2026-10-12 bieżące wydanie to Cursor 3.24 (2026-10-09), a od 3.19 (2026-09-02) wychodzi mniej więcej jedna wersja minor tygodniowo. Cursor CLI ma natomiast wersje oparte na dacie: jego najnowszy build na 2026-10-12 to v2026.10.08. agent to polecenie CLI, a nie launcher cursor z powyższego przykładu: wersję sprawdzisz przez agent --version, a zaktualizujesz przez agent update (strona instalacji CLI w Cursorze, sprawdzone 2026-10-12).

Jeśli cursor nie jest w PATH, najpierw to napraw według instalacji Cursora. Reszta strony korzysta z tego polecenia.

Cursor sam pobiera i instaluje aktualizacje. Cask Homebrew oznacza go jako auto_updates i dlatego brew upgrade go pomija: o tym, kiedy przychodzi nowy build, decyduje aplikacja, a nie menedżer pakietów.

Cursor jest zbudowany na VS Code, który steruje aktualizacjami ustawieniem update.mode. Build Cursora dla macOS ma jednak własny aktualizator: przy odinstalowaniu cask usuwa cache ShipIt z ToDesktop i cache cursor-updater. Traktuj więc ten klucz jako coś do przetestowania na twoim buildzie, a nie gwarancję. Dodaj je do pliku settings.json użytkownika (w palecie poleceń uruchom Preferences: Open User Settings (JSON)):

{
"update.mode": "manual"
}
WartośćCo robi to ustawienie w VS CodeKiedy go użyć
defaultAutomatycznie i cyklicznie sprawdza aktualizacjeChcesz aktualizacji na bieżąco i masz zapisany punkt odniesienia
startSprawdza tylko przy starcieRestartujesz Cursora w przewidywalnym momencie, na przykład w poniedziałek rano
manualBez sprawdzania w tle; aktualizacja tylko wtedy, gdy sam ją sprawdziszTrzymasz sprawdzony build w czasie deadline’u albo po wycofaniu
noneWyłącza aktualizacjeNigdy na codziennej maszynie: tracisz też poprawki bezpieczeństwa

Wartości i ich znaczenie pochodzą z kodu źródłowego VS Code. Sprawdź, czy twój build Cursora respektuje ten klucz: po ustawieniu manual wyszukiwarka ustawień dla update.mode powinna pokazać wybraną wartość, a Cursor nie powinien proponować restartu z aktualizacją, dopóki sam jej nie sprawdzisz. Jeśli propozycja restartu i tak się pojawi, twój build ignoruje ten klucz; jedyną pewną blokadą jest wtedy wycofanie opisane niżej, powtarzane po każdej aktualizacji.

Na macOS spośród ścieżek, które cask Homebrew usuwa przy pełnym odinstalowaniu Cursora, dwie przechowują twoje dane; Linux i Windows trzymają te same dwa katalogi w miejscach typowych dla VS Code: katalog danych aplikacji (ustawienia, skróty klawiszowe, snippety i stan poszczególnych workspace’ów) oraz ~/.cursor (w którym jest globalny ~/.cursor/mcp.json). Zarchiwizuj oba przy zamkniętym Cursorze.

  1. Zamknij Cursora całkowicie, a nie tylko jego okno. Na macOS użyj Cursor › Quit Cursor.

  2. Zarchiwizuj oba katalogi i zapisz obok archiwum build oraz listę rozszerzeń:

    Okno terminala
    STAMP=$(date +%Y%m%d)
    mkdir -p ~/cursor-backups
    tar -czf ~/cursor-backups/cursor-$STAMP.tgz \
    -C ~ ".cursor" "Library/Application Support/Cursor"
    cursor --version > ~/cursor-backups/version-$STAMP.txt
    cursor --list-extensions --show-versions > ~/cursor-backups/extensions-$STAMP.txt

    Archiwum bywa duże. Trzymaj dwa ostatnie, starsze usuwaj. W Windows PowerShell 5.1 Compress-Archive nie zapisze pliku większego niż 2 GB, a katalog danych aplikacji zawiera duże cache; użyj PowerShell 7, polecenia tar -czf (tar.exe jest w Windows 10 i nowszych) albo pomiń foldery Cache i CachedData.

  3. Zacommituj konfigurację Cursora dla projektu. Reguły, skille, hooki i .cursor/mcp.json należą do repozytorium, gdzie git diff pokaże każdą zmianę wprowadzoną przez aktualizację albo przez kogoś z zespołu. Jeśli git status pokazuje niezacommitowane pliki w .cursor/, zacommituj je teraz na osobnej gałęzi.

  4. Zapisz punkt odniesienia agenta promptem poniżej, w nowym czacie na obecnym buildzie.

Przeczytaj punkt odniesienia raz, przed aktualizacją. Reguła, serwer albo narzędzie, których brakuje już dziś, to nie wina aktualizacji, a lepiej dowiedzieć się o tym teraz niż jutro.

Zaktualizuj Cursora i udowodnij, że nowy build działa

Dział zatytułowany „Zaktualizuj Cursora i udowodnij, że nowy build działa”

Gdy punkt odniesienia jest już na dysku, sama aktualizacja jest prosta: sprawdź aktualizacje z palety poleceń (Check for Updates albo wyszukaj w palecie „update”) albo przyjmij propozycję restartu. Praca polega na udowodnieniu wyniku, a dowodem jest zestaw porównań, które albo się zgadzają, albo nie.

  1. Potwierdź, że build się zmienił: uruchom cursor --version i porównaj hash commita z zapisanym. Ten sam hash oznacza, że aktualizacja się nie zainstalowała.

  2. Porównaj rozszerzenia z zapisaną listą. Uruchom w katalogu z kopiami:

    Okno terminala
    diff extensions-YYYYMMDD.txt <(cursor --list-extensions --show-versions)

    Zastąp YYYYMMDD datą z kopii zapasowej. Zmiany wersji są normalne. Linia zaczynająca się od < (w PowerShellu oznaczona <=) bez pasującej linii > (=>) dla tego samego rozszerzenia to rozszerzenie, które nie jest już zainstalowane. Zainstalowane rozszerzenie, które nie daje się aktywować, nie pojawi się w tym porównaniu; wychwyci je prompt porównujący albo polecenie Developer: Show Running Extensions.

  3. Sprawdź, czy plik MCP projektu nadal się parsuje. Uszkodzony plik łatwo przeoczyć w interfejsie, więc sprawdź go w terminalu:

    Okno terminala
    python3 -m json.tool .cursor/mcp.json > /dev/null && echo "mcp.json OK"
  4. Otwórz nowy czat na nowym buildzie i uruchom poniższy prompt porównujący.

  5. Uruchom polecenie testów projektu samodzielnie, we własnym terminalu, a nie przez agenta, i sprawdź kod wyjścia poleceniem echo $? (w PowerShellu: $LASTEXITCODE). Dzięki temu kluczowe kryterium nie opiera się wyłącznie na raporcie samego agenta.

  6. Zdecyduj. Build zalicza, gdy hash commita się zmienił, nie brakuje żadnego rozszerzenia, mcp.json się parsuje, twoje własne uruchomienie testów kończy się kodem 0, a każdy wiersz tabeli porównania mówi MATCH. Każda różnica trafia do tabeli decyzji o wycofaniu, zanim zajmiesz się czymkolwiek innym.

Tak oceniasz aktualizację bez czytania pracy agenta: tabela albo mówi MATCH w każdym wierszu, albo wskazuje wiersz, który się zmienił. Deweloper sam zatwierdza aktualizację na swojej maszynie. W zespole tech lead zatwierdza build dopiero wtedy, gdy na nowym buildzie przejdą też zadania kanarkowe z rutyny w historii wersji. Tę samą zasadę „dowody zamiast diffów” opisuje strona o czytaniu dowodów zamiast kodu.

Kiedy wycofać aktualizację, a kiedy naprawić problem na nowym buildzie?

Dział zatytułowany „Kiedy wycofać aktualizację, a kiedy naprawić problem na nowym buildzie?”

Wycofaj, gdy regresja blokuje pracę, którą musisz dowieźć w tym tygodniu, i nie ma szybkiej poprawki. Naprawiaj na bieżącym buildzie, bez wycofywania, gdy przyczyna leży w twojej własnej konfiguracji.

Co pokazuje porównanieNajbardziej prawdopodobna przyczynaCo zrobić
Brakuje reguły albo skilla, a ich plik w git diff się nie zmieniłNowy build inaczej czyta pliki reguł lub skilliWycofaj, a potem na zapasowej maszynie porównaj plik z aktualną dokumentacją Rules albo Skills Cursora
Serwer MCP nie pokazuje narzędzi, a jego polecenie zawodzi też w terminaluTwoje środowisko uruchomieniowe (npx, uvx, docker) albo jego poświadczenia, nie CursorNapraw bez wycofywania według konfiguracji MCP w Cursorze
Serwer MCP nie pokazuje narzędzi, ale jego polecenie działa w terminaluNowy buildRaz zrestartuj Cursora całkowicie; jeśli problem zostaje, wycofaj
Testy lub lint padają na tym samym commicie, który przechodził w punkcie odniesieniaZmieniło się środowisko agenta, na przykład PATH w zintegrowanym terminaluPorównaj echo $PATH w terminalu Cursora i w swoim; wycofaj, jeśli nie naprawisz tego w 30 minut
Jedno rozszerzenie przestało się ładowaćRozszerzenie, nie CursorZaktualizuj albo wyłącz to rozszerzenie; wycofuj tylko wtedy, gdy nie możesz bez niego pracować

Wycofanie instaluje ponownie poprzedni build i zostawia twoje dane na miejscu. Potrzebujesz poprzedniego numeru wersji i hasha commita, zapisanych w version-YYYYMMDD.txt, oraz pasującego hasha SHA-256. Historia casku Homebrew na GitHubie (Homebrew/homebrew-cask, plik Casks/c/cursor.rb) zawiera wydania, do których cask został podbity, każde z wersją, commitem i sha256 dla macOS (Apple silicon i Intel) oraz Linuksa (x86_64 i aarch64), niezależnie od tego, czy instalowałeś przez Homebrew. Może pominąć wydanie, które pojawiło się i zniknęło między podbiciami. Na Windows hash instalatora zawiera manifest winget, ale tylko dla wydań, które winget spakował, a pakuje ich znacznie mniej, niż Cursor publikuje.

  1. Otwórz historię pliku Casks/c/cursor.rb w repozytorium casków Homebrew i znajdź commit, który ustawił zapisaną przez ciebie wersję. Skopiuj wersję, hash commita i sha256 dla swojej platformy.

  2. Zamknij Cursora całkowicie.

  3. Pobierz poprzedni build, sprawdź jego hash i zainstaluj go:

    Okno terminala
    CURSOR_COMMIT=PREVIOUS_COMMIT_HASH
    ARCH=arm64 # x64 on Intel Macs
    curl -fL -o Cursor.zip \
    "https://downloads.cursor.com/production/$CURSOR_COMMIT/darwin/$ARCH/Cursor-darwin-$ARCH.zip"
    shasum -a 256 Cursor.zip # must equal the cask's sha256 for your arch
    unzip -q Cursor.zip
    mv /Applications/Cursor.app ~/cursor-backups/Cursor-bad.app
    mv Cursor.app /Applications/

    PREVIOUS_VERSION i PREVIOUS_COMMIT_HASH to dwie pierwsze linie zapisanego pliku version-YYYYMMDD.txt. Jeśli sprawdzenie hasha pokaże inną wartość, przerwij i usuń pobrany plik.

  4. Ustaw "update.mode": "manual", zanim uruchomisz stary build, inaczej Cursor przy następnym sprawdzeniu aktualizacji znów zainstaluje nowy. Cursor jest w tym momencie zamknięty, więc edytuj plik ustawień użytkownika bezpośrednio: ~/Library/Application Support/Cursor/User/settings.json na macOS, ~/.config/Cursor/User/settings.json na Linuksie albo %APPDATA%\Cursor\User\settings.json na Windows. Zachowaj instalator, archiwum zip albo AppImage buildu, do którego wracasz: jeśli blokada nie zadziała i Cursor znów się zaktualizuje, cofniesz to tak samo, bez ponownego szukania w historii casku.

  5. Uruchom Cursora, potwierdź stary commit poleceniem cursor --version i ponownie uruchom prompt porównujący. Każdy wiersz powinien mówić MATCH.

  6. Przywróć archiwum danych tylko wtedy, gdy porównanie nadal zawodzi. Zamknij Cursora, przenieś obecne katalogi danych w inne miejsce (albo zmień ich nazwy) i rozpakuj archiwum na ich miejsce, tak jak robią to poniższe polecenia. Przeniesienie zamiast usunięcia zachowuje wszystko, co powstało po zrobieniu kopii.

    Okno terminala
    mv "$HOME/Library/Application Support/Cursor" "$HOME/Library/Application Support/Cursor.pre-restore"
    mv ~/.cursor ~/.cursor.pre-restore
    tar -xzf ~/cursor-backups/cursor-YYYYMMDD.tgz -C ~

Blokadę aktualizacji zdejmuj świadomie. Nadaj jej termin, na przykład „do następnego wydania, które wspomina o tej regresji”, i przywróć update.mode, gdy to wydanie przejdzie porównanie na zapasowej maszynie.

Co się psuje przy aktualizacji Cursora i jak z tego wyjść?

Dział zatytułowany „Co się psuje przy aktualizacji Cursora i jak z tego wyjść?”
  • Aktualizacja się pobiera, ale nigdy nie instaluje, albo propozycja restartu ciągle wraca. Zamknij Cursora całkowicie, łącznie z oknami na innych pulpitach, i uruchom go ponownie. Jeśli build się nie zmienia, zainstaluj bieżące wydanie z menedżera pakietów albo ze strony pobierania Cursora na istniejącą instalację. Twoje katalogi danych zostają nietknięte.
  • Po aktualizacji Cursor mocno obciąża maszynę. Uruchom go z wyłączonymi rozszerzeniami: cursor --disable-extensions. Jeśli obciążenie znika, włączaj rozszerzenia po jednym albo uruchom Help: Start Extension Bisect z palety poleceń. Jeśli nie znika, przetestuj czysty profil poleceniem cursor --user-data-dir /tmp/cursor-clean --extensions-dir /tmp/cursor-clean-ext i zgłoś build Cursorowi, jeśli czysty profil też działa wolno.
  • Agent ignoruje regułę po aktualizacji. Tabela porównania wskazuje brakującą regułę. Sprawdź poleceniem git log -p -- .cursor/, że jej plik się nie zmienił, a potem wycofaj aktualizację albo popraw plik według aktualnej dokumentacji Rules Cursora. Format pliku opisuje strona o regułach projektu w Cursorze.
  • Serwery MCP nie pokazują narzędzi. Uruchom w terminalu command i args serwera z mcp.json. Jeśli to zawodzi, problem leży w środowisku uruchomieniowym albo poświadczeniach; konfiguracja MCP w Cursorze ma rozwiązanie dla każdego objawu. Jeśli działa, zamknij Cursora całkowicie i uruchom go ponownie, żeby wczytał mcp.json od nowa.
  • Wycofałeś aktualizację, a Cursor znów się zaktualizował. update.mode nie było ustawione przed startem starego buildu albo twój build je ignoruje. Ustaw je, zainstaluj stary build ponownie i po pełnym restarcie potwierdź go poleceniem cursor --version.
  • Zniknęła historia czatów albo stan workspace’u. Zamknij Cursora i przywróć archiwum jak w kroku 6 wycofania. Bez archiwum nie ma czego przywracać i właśnie dlatego kopia powstaje przed każdą aktualizacją.
  • U jednej osoby z zespołu działa, u drugiej nie, na tym samym buildzie. Porównaj linia po linii ich wynik cursor --version i listy rozszerzeń. Różne hashe commitów oznaczają, że to nie jest ten sam build, niezależnie od tego, co mówi linia z wersją.

Wyślij zgłoszenie z oboma hashami commitów. Na zgłoszenie z dwoma buildami i jedną reprodukcją producent może zareagować; na „zepsuło się po aktualizacji” nie.

Jak zespół powinien wdrażać aktualizację Cursora?

Dział zatytułowany „Jak zespół powinien wdrażać aktualizację Cursora?”

Zespół dokłada do wszystkiego powyżej jedną zasadę: żadna maszyna nie spotyka nowego buildu jako pierwsza w trakcie deadline’u. Rutyną zarządza tech lead, a jest ona rozpisana w historii wersji Cursora: przeczytaj informacje o wydaniu pod kątem zacommitowanej konfiguracji, uruchom zadania kanarkowe na starym i nowym buildzie, przenieś najpierw jednego ochotnika, potem wszystkich. Ta strona dostarcza elementów, które ta rutyna zakłada: punktu odniesienia i porównania na każdej maszynie oraz wycofania, które zajmuje minuty. Zatwierdzony build zapisz w dokumencie onboardingowym zespołu jako hash commita, bo dwie maszyny mogą pokazywać tę samą linię wersji i różnić się pod spodem.

Pozostałe narzędzia aktualizują się inaczej: zobacz procedury aktualizacji Claude Code i bądź na bieżąco z Codeksem.