When it goes wrong
getting started cursor · Step 4
The first useful week with Cursor is the week you learn how to say no.
I asked for a null check on the session user. It rewrote the auth helper, renamed a type, and added a comment that said the flow was simpler now. The login worked. I could not have told you why. Its the same story as night one, just with better lighting.
This is step 4. You showed it the files. It still wandered. That is normal. If the problem is still unnamed, You dont need another tool is still waiting. The product is built to keep going.
Read the diff like it is a stranger's PR
Agent applies edits as it works. Official help says review them in the diff view and reject anything you do not want. Do that. Sit there for a minute after the spinner stops.
I read the diff before I read the explanation. The explanation is a story. The diff is what landed on disk. If I cannot say what a hunk does, I do not keep the hunk.
Reject is a real control. Their shortcut list has Cmd+Backspace to reject all suggested changes, and Cmd+Return to accept them all. Accept all is how Friday me ruins Saturday me. I scroll. I reject the rename. I keep the two-line guard if it is actually the two-line guard.
Ask it what it changed. Not as a vibe check. "List the files you edited and why, one sentence each. I did not ask for a rename." Sometimes it undoes the extra. Sometimes it defends the extra. Then I restore.
Restore, do not negotiate with a bad turn
Checkpoints are the part I treat like the main feature now. Agent snapshots your files before significant changes. You can click a checkpoint in the timeline, preview, restore. Hover a previous message and use Restore Checkpoint. Restoring puts the files back. It does not delete the chat, so the bad idea is still there to learn from.
Official docs say checkpoints are local and separate from git. Use them to undo Agent. Use git when you want a version you still believe in tomorrow.
I commit before I ask for anything spicy. Then if restore is messy because I also typed in the file by hand, I still have git restore. Checkpoints are for the agent's mess. Git is for mine.
Plan mode's help also talks about reverting a previous message, confirming, then tightening the plan and running it again. Same muscle. Go back. Do not keep patching a house that was framed wrong.
If the thread itself is poisoned, start a new chat. Their Agent help is blunt about this. Start a new chat when you finish a feature or switch tasks. Switching modes starts a fresh context window too. I used to stay in one heroic thread so it would "remember the project." It remembered my first bad instruction and kept obeying it.
Do not accept the 400 line auth rewrite
You can feel it starting. You asked for a guard on one route. The file list keeps growing. auth.ts, session.ts, middleware.ts, a new test file for a helper you did not want. The summary says it simplified the flow.
Stop the run. There is a Stop button. Restore to before that turn. Write a smaller sentence. "Add the guard in middleware.ts only. Do not change auth.ts." If it cannot do that, the problem is the ask or the files, not your refusal to be ambitious.
I have a personal ceiling. If the diff is longer than I will read before coffee, it is too long for this chat. Big changes can happen. They should be changes I requested, with a plan I saw first.
The agent likes to finish the thought. You said null check and it heard auth is messy. Auth might be messy. That is a later PR. Week one you are trying to keep a job.
Plan mode is still real
I checked. Plan mode is in the current docs. Open Agent with Cmd+I or Ctrl+I. Press Shift+Tab in the input until you hit Plan, or use the mode picker. Cmd+. opens the mode menu if you would rather click.
Instead of writing code it researches the repo, asks questions, writes a plan you can edit, and waits. You hit Build when the plan looks like something you would assign a person. Plans save under your home directory by default. You can save one into the workspace if you want it in git.
I use it when I know the task will touch more than a couple files, or I cannot name the files yet. "Add a teams field to the invoice" is a plan. "Rename this label" is Agent, maybe even Cmd+K.
Cursor will also nudge you toward Plan when the prompt sounds big. I still switch on purpose. I do not want a surprise architecture.
Ask mode is the read-only one. Use it when you want an explanation and no diff. Debug mode exists for bugs that need runtime evidence. I stay in Agent for most small fixes. I switch to Plan when I feel the rewrite loading in my shoulders.
Their troubleshooting page says use Plan first for tasks that touch many files, and start a new chat when you switch tasks. That is the whole advanced course, basically.
When I start a new chat
When the task changed. When I finished a feature. When I restored twice and it is still arguing for the rename. When the answers start repeating a decision I already reversed.
A clean chat is cheap. Cmd+N or Cmd+R is a new chat. Cmd+T is a new chat tab if I want the old one nearby. I bring the files and the error again. I do not say "continue but do it right." The new chat does not owe the old chat anything, and that is the point.
A loop that has saved me more than once:
Commit or stash the good state.
Ask for one change, files attached.
Read the diff, reject the extras.
Restore if the extras won.
New chat if the thread is stuck on the extras.
Git is the memory that matters. Checkpoints are the undo. The chat is a scratch pad that goes stale.
You will still have a day where you accept too much. I did it last month on a script that sorted a CSV. It also cleaned up the quoting and finance sent the file back. I restored, then I wrote the ask again with "do not change quoting." It listened. The tool was fine. I had been polite instead of specific.
Next is making a boring loop you can repeat on a Thursday. If this already feels like too much editor for a problem that is mostly words, that is a hint to use Claude or Grok and come back when there is a folder again. Which tool when if you want the short rule.