Przejdź do głównej zawartości

Kiedy używać trybu agenta, a kiedy trybu zapytań

Tryb agenta kontra tryb zapytań to wybór, czy agent AI może zapisywać w twoim repozytorium, czy tylko je czyta. Claude Code i Codex nazywają postawę tylko do odczytu plan mode, Cursor ma Plan Mode. Bezpieczna praktyka to tryb tylko do odczytu do zatwierdzenia planu, a potem prawo zapisu na jeden ograniczony krok, o którego przyjęciu decydują testy.

Ta strona jest dla programistów, którzy wybierają tryb przy każdym zadaniu, i dla tech leadów, którzy ustalają domyślny tryb zespołu. Pytasz agenta o handler płatności w Express: „dlaczego processPayment czasem obciąża klienta dwa razy?”. Minutę później agent zmienił logikę idempotencji, ruszył trzy miejsca wywołań i wyedytował migrację, a ty przeglądasz diff, o który nie prosiłeś, na najbardziej wrażliwej ścieżce w kodzie. Odwrotny błąd jest cichszy: spędzasz czterdzieści minut na pytaniach tylko do odczytu, zapełniasz okno kontekstu i zaczynasz implementację w sesji, która nie pamięta już ograniczeń.

  • Mapę trybów tylko do odczytu, zapisu i pracy bez nadzoru w Claude Code 2.1.283, Codex CLI 0.157.1 i Cursorze, z dokładnym klawiszem, flagą albo ustawieniem dla każdego.
  • Pętlę dwufazową: eksploracja tylko do odczytu kończy się planem, potem wykonanie jednego zatwierdzonego kroku i stop.
  • Cztery gotowe prompty: planowanie bez edycji, wykonanie jednego kroku, weryfikacja kroku dowodami i zakres zadania wsadowego bez nadzoru.
  • Tabelę decyzyjną, która łączy typ zadania z trybem i ze sprawdzeniem, które dowodzi wyniku.
  • Typowe pułapki, w których wybrany tryb wprowadza cię w błąd, i sposób wyjścia z każdej.

Każde narzędzie ma te same trzy postawy pod innymi nazwami. „Tryb zapytań” oznacza na tej stronie ogólnie postawę tylko do odczytu, niezależnie od nazwy w danym narzędziu. Stan sprawdzony 2026-09-26 w claude --help 2.1.283, codex --help 0.157.1 i w dokumentacji dostawców; aktualne modele wymienia strona o modelach. Dane o Cursorze sprawdzono ostatnio 2026-08-28 (Plan Mode, Cloud Agents) albo w pakiecie @cursor/sdk 1.0.32.

PostawaClaude Code 2.1.283Codex CLI 0.157.1Cursor
Tylko do odczytu: eksploracja i plantryb plan: Shift+Tab aż do ⏸ plan mode on, /plan <prompt> dla jednego promptu albo claude --permission-mode plan/plan w TUI; profil uprawnień :read-only (beta) albo starsze --sandbox read-onlyPlan Mode: „creates detailed implementation plans before writing any code”
Zapis, zatwierdzasz tyManual (w konfiguracji default) albo acceptEdits (edycje przechodzą, inne komendy nadal pytają)profil :workspace z -a on-requestAgent (tryb agent w SDK), z zatwierdzaniem ustawionym na stronie Run modes w sekcji Agent security
Zapis, zatwierdza model recenzującyauto: klasyfikator (domyślnie Claude Sonnet 5) ocenia każdą akcjęAuto-review: --approve-for-meAuto-review dla lokalnych wywołań narzędzi (opcja SDK autoReview)
Bez nadzoruclaude -p z --permission-mode dontAsk i dokładną listą --allowedToolscodex exec z profilem :workspaceCloud Agents, które „run in isolated VMs in the cloud”

Pełna macierz kontroli, łącznie z sandboxami systemu operacyjnego i ruchem sieciowym, jest na stronie uprawnienia, sandboxy i tryby zatwierdzania. Ta strona dotyczy decyzji: jakiej postawy wymaga zadanie i kiedy przejść do następnej.

Każdą nietrywialną zmianę zaczynaj w trybie tylko do odczytu. Ta faza ma dać jeden artefakt: ponumerowany plan z plikami, testami i ryzykami, który możesz odrzucić, zanim zmieni się choć jedna linia.

Naciskaj Shift+Tab, aż pasek stanu pokaże ⏸ plan mode on, albo wystartuj od razu w tym trybie:

Okno terminala
claude --permission-mode plan

W plan mode Claude czyta pliki i uruchamia komendy tylko do odczytu (oraz komendy zatwierdzone przez klasyfikator trybu auto, jeśli tryb auto jest dostępny), a edycje pozostają zablokowane, dopóki nie zatwierdzisz planu. Gdy plan się pojawi, Ctrl+G otwiera go w edytorze, więc możesz go poprawić przed zatwierdzeniem. Żeby sesje w terminalu startowały w plan mode dla całego repozytorium, ustaw "defaultMode": "plan" w sekcji permissions pliku .claude/settings.json. Rozszerzenie VS Code nie czyta ustawień projektu przy wyborze trybu startowego; tam ustaw claudeCode.initialPermissionMode na plan w ustawieniach użytkownika VS Code.

Prompt jest taki sam w każdym narzędziu. Wymusza plan, który niesie wszystko, czego potrzebuje następna faza, łącznie z komendą dowodzącą każdego kroku:

Przeglądasz plan, nie kod. Odrzuć go, jeśli któryś krok nie ma testu, dotyka pliku spoza zmiany albo zamiast odpowiedzi na otwarte pytanie zgaduje. Ogranicz tę fazę w czasie: gdy plan przestaje się poprawiać, idź dalej, bo każde kolejne pytanie zużywa kontekst potrzebny implementacji. Kiedy zacząć świeżą sesję z samym planem na wejściu, wyjaśnia przewodnik po oknach kontekstu.

Dawaj prawo zapisu na jeden krok naraz i każ agentowi zatrzymać się po nim. To zatrzymanie sprawia, że zatwierdzony plan nie zamienia się w nieprzejrzane przepisanie połowy modułu.

Przy kodzie płatności, autoryzacji, migracji albo infrastruktury zatwierdź plan opcją Yes, manually approve edits, żeby każda edycja pytała o zgodę. Przy kodzie rutynowym wybierz Yes, and use auto mode. Wstępnie zezwól na komendę testów regułą w /permissions, na przykład Bash(npm test *), żeby monity, które widzisz, dotyczyły rzeczy ważnych. Jeśli krok pójdzie źle, /rewind (albo dwa razy Esc przy pustym prompcie) przywraca kod i rozmowę do punktu kontrolnego.

Dyscyplina trybów decyduje o tym, co agentowi wolno. Nie decyduje, czy wynik jest poprawny. To zadanie sprawdzeń, które działają bez ciebie, tak żeby człowiek czytał kod tylko tam, gdzie wymaga tego ryzyko.

  1. Test wskazany w planie nie przechodzi przed krokiem i przechodzi po nim. Agent wkleja oba wyniki. Krok, którego nowy test nigdy nie padł, niczego nie dowiódł; jak nie dać agentowi osłabić testu, żeby przeszedł, opisuje przewodnik po TDD.
  2. Przechodzą bramki repozytorium: sprawdzanie typów, lint i pełny zestaw testów, uruchomione przez CI, a nie zgłoszone przez agenta.
  3. Drugie przejście atakuje diff. Uruchom prompt przeglądu poniżej w świeżej sesji tylko do odczytu albo przez osobnego agenta recenzenta, żeby kontekst autora nie usprawiedliwiał jego własnych luk. Przegląd PR-ów od agentów ustawia to jako stałą bramkę.
  4. Krok zostawia podsumowanie dowodów: zmienione pliki, uruchomione komendy, wyniki i otwarte założenia. Recenzent czyta to podsumowanie, nie diff; format definiuje pakiet dowodów.
  5. Człowiek czyta kod tylko w klasach eskalacji: ruch pieniędzy, autoryzacja, migracje danych, infrastruktura i wszystko, co oznaczył recenzent. Klasy i osoby zatwierdzające wymienia strona dowody zamiast diffów.

Każde znalezisko staje się kolejnym krokiem planu, zaczynającym się od niezaliczonego testu. Pętla się nie zmienia: tylko do odczytu, żeby zdecydować, zapis, żeby wykonać jeden krok, i znów tylko do odczytu, żeby sprawdzić.

Puszczaj agenta bez nadzoru tylko wtedy, gdy spełnione są trzy warunki: zadanie jest mechaniczne, o poprawności każdej zmiany rozstrzyga komenda, a zasięg szkód ogranicza się do gałęzi albo jednorazowego środowiska. Poprawki lintera, formatowanie, zmiana nazw w stylu codemodu i szablony testów się kwalifikują. Projekt API, strategia obsługi błędów, praca nad wydajnością i wszystko z klas eskalacji — nie, bo „poprawne” wymaga tam osądu, którego komenda nie dostarczy.

Uruchom w trybie bezobsługowym z dontAsk, który odrzuca każdą akcję wymagającą zgody, więc lista dozwolonych narzędzi jest całą polityką. Pracuj na osobnej gałęzi albo w osobnym worktree:

Okno terminala
claude -p "Fix every ESLint error in src/components/. Run npm run lint after each file." \
--permission-mode dontAsk \
--allowedTools "Read" "Edit" "Bash(npm run lint *)"

--dangerously-skip-permissions wyłącza wszystkie sprawdzenia, a pomoc CLI zaleca go „only for sandboxes with no internet access”. Używaj go wyłącznie w jednorazowym kontenerze albo maszynie wirtualnej z ograniczoną siecią i bez produkcyjnych poświadczeń.

Przebiegu bez nadzoru nikt nie pilnuje, więc jego zakres musi być zapisany w prompcie:

Sprawdzenie przebiegu bez nadzoru to ta sama bramka co w poprzedniej sekcji: CI uruchamia lint, typy i testy na gałęzi, a podsumowanie mówi recenzentowi, co pominięto. Ustawienia sandboxa i sieci, których potrzebuje taki przebieg, opisuje przewodnik po uprawnieniach i sandboxach.

ZadanieTrybCo dowodzi wyniku
Zrozumienie nieznanego kodu, wdrożenie się, badanie błęduTylko do odczytuKażde twierdzenie wskazuje plik i linię, które możesz otworzyć; niezaliczony test odtwarza błąd
Plan zmiany obejmującej więcej niż jeden plikTylko do odczytu, potem zapis krok po krokuKażdy krok planu wskazuje swój test i komendę
Wykonanie zaplanowanego kroku w rutynowym kodzieZapis, model recenzujący albo acceptEditsTest kroku najpierw nie przechodzi, potem przechodzi; bramki CI przechodzą
Zmiana płatności, autoryzacji, migracji albo infrastrukturyZapis, zatwierdzasz każdą edycjęJak wyżej plus przegląd kodu przez człowieka (klasa eskalacji)
Lint, formatowanie, mechaniczne zmiany nazw, szablony testówBez nadzoru, na gałęziKomenda lint albo typów dochodzi do zera; CI przechodzi
Nie masz pewnościNajpierw tylko do odczytuPlan, który możesz odrzucić, nic nie kosztuje

Dla tech leadów domyślnym ustawieniem do przyjęcia jest ostatni wiersz: sesje w repozytoriach startują w plan mode, a przejście do zapisu to świadomy krok programisty, gdy plan już istnieje. W Claude Code zacommituj "defaultMode": "plan" w .claude/settings.json (sesje w terminalu) i poproś użytkowników VS Code o ustawienie claudeCode.initialPermissionMode; w Codeksie ustaw default_permissions = ":read-only" w ~/.codex/config.toml albo dodaj -c 'default_permissions=":read-only"' do zespołowego aliasu uruchamiania.

  • Plan mode mimo wszystko edytuje pliki. W interaktywnej sesji Claude Code uruchomionej z --dangerously-skip-permissions albo --allow-dangerously-skip-permissions blokady plan mode nie są egzekwowane: Claude ma polecenie planować, ale edycja, którą spróbuje wykonać, przejdzie. Wyjście: /rewind do ostatniego punktu kontrolnego i nigdy nie zaczynaj sesji planowania z flagą obejścia.
  • Pytanie w świeżej sesji zamienia się w edycje. Trybem startowym Claude Code w v2.1.283 jest auto, nie Manual. Wyjście: /rewind, potem "defaultMode": "plan" w .claude/settings.json repozytorium, żeby sesje w terminalu startowały tylko do odczytu, oraz claudeCode.initialPermissionMode dla rozszerzenia VS Code, które ignoruje wartość z projektu.
  • Agent przeskakuje od analizy do refaktoryzacji. Prompt w rodzaju „przeanalizuj moduł auth, a potem go zrefaktoryzuj” zachęca agenta do pominięcia analizy. Wyjście: rozdziel go na prompt tylko do odczytu i prompt jednego kroku z tej strony, w osobnych turach.
  • Zatwierdzony plan rośnie w trakcie kroku. Niejasny krok zaprasza do rozszerzania zakresu. Wyjście: odrzuć edycje spoza listy plików z planu, cofnij je i sformułuj krok ponownie, z listą plików i warunkiem zatrzymania.
  • Zostajesz w trybie tylko do odczytu zbyt długo. Długa eksploracja zapełnia okno kontekstu, a implementacja startuje ze skompaktowanego, stratnego podsumowania. Wyjście: zapisz plan do pliku, zacznij świeżą sesję i podaj jej plan jako pierwszą wiadomość.
  • Agent zdaje się ignorować prośby o implementację. Zwykle wciąż jest w trybie tylko do odczytu. Wyjście: sprawdź wskaźnik trybu (⏸ plan mode on w Claude Code) albo profil Codeksa, zanim zaczniesz przepisywać prompt.
  • Codex odrzuca twoje flagi. codex exec -a never kończy się błędem „unexpected argument”, -a on-failure błędem „invalid value”, a profil uprawnień nie działa razem z --sandbox. Wyjście: usuń flagę i uruchom codex exec …, które i tak działa z approval: never, oraz wybierz profile albo starszą flagę, nie oba naraz.
  • Przebieg bez nadzoru ruszył coś wrażliwego. Profil workspace w Codeksie i szeroka lista dozwolonych narzędzi w Claude Code mogą sięgnąć plików takich jak .env. Wyjście: wycofaj gałąź, przenieś sekrety poza drzewo robocze i zawęź listę dozwolonych narzędzi albo profil przed następnym przebiegiem.