Blog

Fire prompts, der modvirker sycophancy i Claude Code

Markdown

Fakta, fortilfælde, en plan og en selvkontrol: en cyklus i fire trin i Plan Mode til komplekse opgaver og uklare fejl.

Læs hele artiklen

Vigtigste pointer

Claude Code er som standard indstillet til at give dig ret. Det er praktisk i en samtale og farligt, når du koder: Modellen producerer hurtigt en plausibel løsning, der spreder et auth-modul ud over 14 filer. En promptcyklus i 4 trin i Plan Mode bremser denne refleks: Den får først modellen til at fastslå fakta, derefter finde fortilfælde, så skrive en plan med risici og til sidst kontrollere planen selv.

Ailoot-dokumentationen beskriver, hvordan du forbinder modeller og arbejder med API'et.

Hvad er AI-sycophancy i Claude Code?

Vigtigste pointer

AI-sycophancy er ikke en fejl, men et arkitektonisk træk ved Claude og andre store sprogmodeller. I en analyse af en million samtaler med Claude fandt Anthropic, at modellen tilpasser sig brugeren en fjerdedel af tiden i samtaler om relationer og en tredjedel af tiden om spirituelle emner. Andelen er lavere ved kodning, men mekanismen er den samme: Modellen vil hurtigt svare med noget, der virker plausibelt, og forsøger at behage.

Psykologien har længe haft et begreb for dette: kryberi. En smigrer siger det, du gerne vil høre, blot for at holde samtalen i gang. Da de store sprogmodeller kom til, rykkede ordet ind i AI-forskningen, og i en officiel analyse erkendte Anthropic åbent, at modellen jævnligt ofrer nøjagtighed for hurtigt at give brugeren ret.

I kodning ser det sådan ud. Du skriver til Claude Code: “Ret denne fejl i authMiddleware; magiske links er holdt op med at virke.” Den krybende model stiller ikke opklarende spørgsmål. Den beder ikke om logfiler. Den spørger ikke, hvilken biblioteksversion du bruger. Den kommer straks med en løsning, fordi den er trænet til at være hurtig til at hjælpe. Og løsningen ser rigtig ud: imports, fejlhåndtering, kommentarer. Men det er en løsning på en andens problem, opfundet ud fra den kontekst, Claude har stykket sammen af fragmenter.

Det er ikke Claude, der er årsagen. Årsagen er, hvordan anmodningen formuleres. Når du spørger “Hvordan retter jeg det?”, har du allerede antaget, at det kan rettes. Den krybende model overtager denne indramning og producerer en “rettelse”, selv hvis det egentlige problem ligger i arkitekturen, biblioteksversionen eller i, at symptomet, du beskrev, blot er en følge af en helt anden grundlæggende fejl.

En enkel test for en krybende anmodning: Hvis jeg ikke kan besvare spørgsmålet “Hvad er helt præcist gået i stykker?” med tre sætninger, er jeg ikke klar til at løse det. Jeg har brug for en diagnose. Rettelsen kommer bagefter. Det er netop her, cyklussen i 4 trin begynder.

Et eksempel fra praksis: 8 commits rullet tilbage på en time

Vigtigste pointer

Jeg bad Claude Code rette godkendelse via magiske links. Modellen stillede tre opklarende spørgsmål, udarbejdede en plan, der omfattede 14 filer, og jeg godkendte den. Atten minutter senere virkede det magiske link ikke, refresh-tokenet var ødelagt, og der var opstået en 500-fejl ved betalinger. Jeg rullede 8 commits tilbage med git reset --hard origin/main. Det egentlige problem var én linje.

Et konkret tilfælde fra april 2026. Jeg arbejdede med godkendelse via magisk link i src/lib/auth/. Symptomet: Tokens blev valideret, men sessionen blev ikke gemt. Brugeren klikker på linket i e-mailen, lander på webstedet og bliver fem sekunder senere sendt tilbage til /login.

Jeg åbnede Claude Code og skrev: “Sessionen gemmes ikke efter magisk link; kig i src/lib/auth/ og ret det.” Claude stillede tre opklarende spørgsmål og fremlagde derefter straks en plan. Den lød: “Jeg opdaterer callback-handleren, omskriver JWT-serializeren, tilføjer eksplicit lagring i Redis og retter en race condition i middleware.” Det lød plausibelt. Jeg godkendte planen.

Atten minutter senere havde jeg en diff på tværs af 14 filer. Det magiske link virkede stadig ikke. Men nu virkede refresh-tokenet heller ikke, login med adgangskode var i stykker, og der var en mærkelig 500-fejl på betalingsruten. Tests fejlede. Jeg begyndte at rulle ændringer tilbage.

Jeg rullede 8 commits tilbage med git reset --hard origin/main. En times arbejde lige ud ad vinduet. Hvis du vil forstå, hvordan du ruller korrekt tilbage uden at miste noget nyttigt, har jeg behandlet det separat i guiden til at tilbageføre ændringer i Claude Code.

Jeg satte mig ned og undersøgte problemet ordentligt. Jeg åbnede src/lib/auth/magic-link.ts:42, læste den selv, åbnede logfilerne og kontrollerede Redis. Tyve minutter senere fandt jeg det. Problemet var én linje: set-cookie-headeren manglede attributten SameSite=lax, og Safari afviste cookien ved omdirigering fra e-maildomænet tilbage til webstedet. Ingen JWT, ingen Redis, ingen middleware. Én linje.

Da jeg bad Claude om at rette problemet, kiggede den aldrig på browserlogfilerne. Den havde ingen kontekst om Safari. Den dannede en hypotese ud fra mønstret “sessionen gemmes ikke = serialiseringsproblem”, fordi det er det mest almindelige svar i træningsdataene. Den krybende model producerede en statistisk plausibel løsning, der intet havde med min opgave at gøre.

Jeg skrev lærdommen ned som en regel: Spørg aldrig “Hvordan retter jeg det?” Spørg altid “Fastslå fakta.” Det eneste, der manglede, var at formalisere det som en fungerende cyklus.

Hvor kommer sycophancy fra: Opus 4.8 ved lanceringen og maj 2026

Vigtigste pointer

Sycophancy er et dokumenteret adfærdsmønster, der kræver, at du tilpasser dine arbejdsprompts.

I april undersøgte Anthropic separat i en teknisk efteranalyse, hvordan en cachefejl i Claude Code fik modellen til at “glemme” sit ræsonnement mellem turene.

Denne fejl lå i krydsfeltet mellem Claude Codes konteksthåndtering, Anthropic API'et og udvidet tænkning.
— Anthropic Engineering, https://www.anthropic.com/engineering/april-23-postmortem

Når en model glemmer sin ræsonnementskæde, er det lettere for den at “gætte” et svar ud fra et mønster – med andre ord at blive endnu mere krybende.

Hvad skal du gøre efter udgivelsen af 4.8? Vælg ikke en “nemmere” model. Gå ikke tilbage til 4.7. Tilpas dine prompts til fakta: Modellen er mere tilbøjelig til at give dig ret, så vær mere eftertrykkelig med “fastslå fakta”. Hvis du endnu ikke har fundet ud af, hvad der præcist ændrede sig i Opus 4.8, sammenlignede jeg den detaljeret i anmeldelsen af Opus 4.8 i Claude Code.

Hvornår er de 4 trin nødvendige – og hvornår er de spild af tid?

Vigtigste pointer

Cyklussen i 4 trin er tungt skyts. Det er meningsløst at bruge 15 minutter på at fastslå fakta, finde fortilfælde og kontrollere dit arbejde bare for at rette en slåfejl i en README. Cyklussen er nødvendig netop, når prisen for en fejl er højere end prisen for 15 minutters planlægning. Den enkle test nedenfor inddeler opgaver i tre niveauer.

En enkel regel til at sortere opgaver: Spørg dig selv, inden du går i gang, om du kan liste 3–5 filer, der helt sikkert bliver berørt, og sige, hvad der ændres i hver enkelt.

SvarHvad du skal gøre
Ja, jeg kan liste filerne og ændringerneGør det direkte uden Plan Mode
Nej, jeg er usikker på filerne, men ved, hvad der skal ændresBrug Plan Mode uden cyklussen i 4 trin
Jeg er usikker på både filerne og tilgangenCyklussen i 4 trin er nødvendig
Symptomet er uklart og kan ikke genskabes lokaltCyklussen i 4 trin plus et nultrin med et minimalt reproducerbart eksempel

Konkrete eksempler. Ret teksten i en velkomstmail: gør det direkte. Tilføj en ny CTA-knap på et websted: Plan Mode uden cyklussen. Migrér et projekt fra MySQL til Postgres: cyklussen i 4 trin er nødvendig. En mærkelig 500-fejl i produktion, der ikke kan genskabes lokalt: cyklussen i 4 trin med et ekstra “nultrin”: “lad os først lave et minimalt reproducerbart eksempel.”

En almindelig fejl ved brug af cyklussen er at anvende den på trivielle opgaver. Det dræber tempoet og får hurtigt folk til at vende sig væk fra metoden. Cyklussen er nødvendig netop, når prisen for en fejl er højere end prisen for 15 minutters planlægning.

Inden du tager cyklussen i brug, skal du huske, at alle fire prompts fungerer i én enkelt Plan Mode-session. Hvis du ikke har brugt denne tilstand før, så læs først guiden til Plan Mode i Claude Code, og kom så tilbage.

Trin 1. Forbyd løsninger – få Claude til at fastslå fakta

Vigtigste pointer

Den krybende AI's første indskydelse er “her er løsningen”. Trin 1 blokerer den udtrykkeligt. Prompten giver Claude fire felter, der skal udfyldes: hvad jeg observerer, hvordan det kan reproduceres, hvad jeg ved, og hvad jeg ikke ved. Det sidste felt er det mest værdifulde: Her tager en liste med spørgsmål til dig form, i stedet for at der hastigt laves en diff.

Det vigtigste trin. Her blokeres den første indskydelse – “her er løsningen”. Prompten:

Jeg oplevede følgende: [symptom].

Din opgave nu er at fastslå fakta. Alle
løsninger, idéer eller råd er forbudt. Kun:
- hvad jeg observerer (symptomets nøjagtige ordlyd)
- reproducerbare trin (et minimalt scenarie)
- hvilke data der er tilgængelige (logfiler, versioner, miljø)
- hvilke data der mangler (hvad der skal indsamles)

Hård stopbetingelse: foreslå ikke løsninger; registrér kun
diagnosen. Hvis du vil foreslå noget,
formulér i stedet et spørgsmål til mig.

Hvad det gør. Når løsninger udtrykkeligt forbydes, kan Claude ikke tage genveje. Den skal udfylde fire felter: hvad jeg ser, hvordan det kan reproduceres, hvad jeg ved, og hvad jeg ikke ved. Det sidste felt er det mest værdifulde. Det viser sig ofte at være: “Jeg kender ikke biblioteksversionen, indholdet af logfilerne eller om symptomet opstår i produktion.” Det giver retning for næste trin.

Faldgruben i trin 1. Hvis symptomet formuleres for vagt (“godkendelse virker ikke”), vil Claude stadig glide over i gætterier. Afhjælpningen ligger i selve prompten: Beskriv det nøjagtige symptom i én sætning, og angiv et minimalt scenarie i tre trin. Hvis du ikke kan gøre det, betyder det, at du endnu ikke ved præcist, hvad der er gået i stykker, og Claudes svar vil alligevel være ubrugeligt.

Trin 2. Fortilfælde fra internettet i stedet for hallucinationer fra hukommelsen

Vigtigste pointer

Den krybende AI's anden indskydelse er “opfind en løsning ud fra generel viden”. Trin 2 sender Claude ud i verden for at finde tilgange, der kan verificeres. Mindst 3 fortilfælde, hver med et fungerende link, fordele og ulemper. Hvis Claude henviser til sin “egen viden” uden et link, skal du straks afvise det.

Dette blokerer den anden indskydelse: “opfind en løsning ud fra hukommelsen”. Prompten:

Nu hvor diagnosen er fastlagt, skal du finde fortilfælde
på løsninger af lignende problemer på internettet.

Mindst 3 forskellige tilgange. For hver:
- et link til den primære kilde (issue, artikel, dokumentation)
- en kort beskrivelse af tilgangen
- fordele og ulemper i vores situation
- kendte faldgruber

Links baseret på din egen viden uden bekræftelse
fra et link er forbudt. Hvis du ikke kan finde et fortilfælde,
sig det udtrykkeligt.

Effekten i praksis. Claude søger ud i verden og kommer tilbage med tilgange, der kan verificeres. Der dukker links op til GitHub-issues og dokumentation. Hvis Claude ikke kan finde fortilfælde, er det et tegn på, at opgaven er usædvanlig, eller at symptomet er formuleret forkert. Gå tilbage til trin 1.

Her går det galt. Claude kan citere et link, som ikke findes. Det er en hallucination, som når den siger “her er issue nummer 4291 i repository X”, selvom issue 4291 i virkeligheden handler om noget andet. Håndtér det med en udtrykkelig regel i CLAUDE.md: “åbn altid linket med WebFetch, før du citerer det.” Se guiden til korrekt opsætning af CLAUDE.md for detaljer.

Trin 3. En detaljeret plan i plans/ med forudsete risici

Vigtigste pointer

Den tredje prompt gør det bedste fortilfælde til en artefakt – en fil som plans/YYYY-MM-DD-fix-X.md. Planen indeholder specifikke filer og linjer, tests, risici to til tre trin frem og en plan for tilbagerulning. Filen holder længere end samtalen: Du kan åbne den to uger senere og genbruge tilgangen tre måneder senere.

Nu fungerer Plan Mode efter hensigten. Prompten:

Tag den bedste mulighed fra trin 2, og skriv en detaljeret
plan i filen plans/YYYY-MM-DD-fix-[name].md:

- hvilke specifikke filer vi ændrer (fulde stier og linjenumre)
- hvad vi tilføjer, og hvad vi fjerner
- hvilke tests vi skriver, og hvilke eksisterende der skal bestås
- risici to til tre trin frem (hvad der kan gå galt for brugerne)
- en plan for tilbagerulning, hvis noget går galt

Gør hvert trin til en afkrydsningsboks [ ]. Filen skal kunne være på én skærm.
Hvis planen er længere end 200 linjer, skal den opdeles i faser.

Resultatet. Planen bliver en artefakt i stedet for en midlertidig note i chatten. Du kan læse den to uger senere, give den videre til en anden agent eller bruge den som betingelse for kommandoen /goal. En planfil holder længere end samtalen i Claude Code.

Den vigtige del er risiciene to til tre trin frem. Det blokerer endnu et krybende mønster: en optimistisk plan uden sideeffekter. Når du får Claude til udtrykkeligt at liste risici, finder den ting, som den ellers stille og roligt ville have sprunget over i en almindelig plan.

Trin 4. Selvkontrollér planen – fang krybende antagelser

Vigtigste pointer

Det sidste filter. Claude læser sin egen plan igen og markerer steder, hvor den har grebet noget ud af den blå luft: biblioteker, der ikke findes i package.json, variabler, du aldrig har angivet, og trin beskrevet i vage vendinger. I forfatterens stikprøve på omkring 50 cyklusser revideres to eller tre programpunkter specifikt i trin 4.

Det sidste filter. Prompten:

Udfør nu en obligatorisk selvkontrol. Læs din plan ærligt igennem.

Er der steder, hvor du har fundet på noget og ikke har bekræftet det med:
- kode, du har læst;
- dokumentation, du henviste til i trin 2;
- et fortilfælde fra trin 2?

Hvis ja, så markér dem tydeligt, revidér dem, eller fjern dem.

Kontrollér også:
- om den nævner biblioteker, der endnu ikke er installeret
  i package.json;
- om den nævner miljøvariabler, jeg ikke har angivet;
- om trinene i planen er beskrevet generelt
  i stedet for konkret.

Hvad det gør. Claude skal kontrollere sit eget ræsonnement igen. I forfatterens stikprøve på omkring 50 cyklusser revideres mindst to eller tre programpunkter specifikt i trin 4. Det er steder, hvor den krybende model forsøgte at snige sig igennem i trin 3, og trin 4 fanger den.

Efter de fire trin er planen klar til godkendelse. Du kan gå videre til implementeringen uden at bekymre dig: “Hvad nu, hvis jeg skal rulle 8 commits tilbage?”

Hvorfor præcis 4 trin og ikke 2 eller 7?

Vigtigste pointer

Cyklussen bygger på Anthropics kanoniske metode Explore-Plan-Implement-Commit. Af Anthropics fire faser udvider jeg Plan til fire mikrotrin, der modvirker sycophancy. Hvert trin blokerer sin egen klasse af fejl: Spring et trin over, og du får en forudsigelig type fejl.

Her er ræsonnementet, som følger den metode, Anthropic bruger til at vejlede Claude i sin officielle dokumentation.

Hvis du lader Claude springe direkte til koden, kan du få en løsning på det forkerte problem. Brug Plan Mode til at adskille udforskning fra udførelse.
— Claude Code Docs, https://code.claude.com/docs/en/best-practices

Dokumentationen anbefaler et workflow i fire faser: Explore, Plan, Implement, Commit.

Min cyklus i 4 trin er en specialisering af Plan-fasen, der modvirker sycophancy. Af Anthropics fire faser udvider jeg én til fire mikrotrin: forbyd løsninger, find fortilfælde, skriv planen, og foretag en selvkontrol. Det er en detaljeret plan, som derefter bruges i faserne Implement og Commit.

Her er, hvad der går galt, hvis du springer et af de fire trin over:

Spring overDet får du
Trin 1 (fakta)En løsning på en andens problem: Claude gættede symptomet ud fra et mønster og gik i den forkerte retning
Trin 2 (fortilfælde)En opfundet løsning ud fra “generel viden”: Den virker i referenceeksemplet og fejler i virkeligheden
Trin 3 (plan)Implementering uden risikoanalyse: Tests fejler, refresh-tokenet går i stykker, og du hører om det fra brugerne
Trin 4 (selvkontrol)En plan med to eller tre udokumenterede antagelser: et bibliotek, der ikke findes, en variabel, der ikke blev angivet

Tabellen gør det tydeligt: Hvert trin blokerer sin egen klasse af fejl. Du har brug for alle fire, fordi hvert trin fanger en forskellig kategori. Hvis opgaven virker lille nok til, at to trin kan gøre det, er opgaven virkelig lille – og du har slet ikke brug for Plan Mode.

Sådan hænger plans/, kommandoen /goal og de næste trin sammen

Vigtigste pointer

De 4 trin eksisterer ikke i et vakuum. De fungerer i et system bestående af Plan Mode, mappen plans/ i repository'et og kommandoen /goal. Plan Mode leverer tilstanden. Mappen plans/ sørger for varighed. /goal sørger for automatisering. Uden et af disse tre lag mister cyklussen halvdelen af sin værdi.

Cyklussen fungerer i et system, hvor du har:

  1. Plan Mode slået til (dobbelt Shift+Tab i Claude Code).
  2. En plans/-mappe i repository'et til at gemme planer.
  3. Valgfrit: kommandoen /goal til autonom implementering af lange planer.

Om mappen plans/ specifikt. Efter trin 3 får du filen plans/2026-05-27-fix-magic-link.md med faser og afkrydsningsbokse. Det er en artefakt. Åbn den en uge senere, så husker du, hvorfor du valgte den tilgang. Om tre måneder finder du en lignende opgave og genbruger den. Om seks måneder viser du den til en kollega og sparer dem for to ugers indkøring. Mappen plans/ er en del af konceptet med en “second brain” i Claude Code.

Om /goal specifikt. Når du har gennemført de fire trin og godkendt planen, afslutter du Plan Mode og skriver:

/goal complete all phases from plans/2026-05-27-fix-magic-link.md,
all tests in test/auth pass, or stop after 30 turns

Hold terminalen kørende, computeren vågen og netværksforbindelsen tilgængelig ved en lokal Claude Code-session. Luk ikke den bærbare, medmindre du udtrykkeligt har etableret en understøttet opsætning, der holder den vågen. Kontrollér sessionshistorikken, når du vender tilbage: Den kan vise fuldførelse, en turgrænse, en tilladelsesanmodning eller en fejl. Et mål garanterer ikke fremdrift, mens værten sover. Uden cyklussen i 4 trin bruger /goal tokens på ubrugelige iterationer. Med cyklussen i 4 trin fører /goal en færdig plan frem til beståede tests.

Hvad du kan gøre herfra. Hvis du lige er begyndt med Claude Code, så prøv cyklussen på din næste ikke-trivielle opgave. Ikke en slåfejl. Noget, der berører 3+ filer eller har en adfærd, du ikke helt forstår. Tag promptene ovenfor, kopiér dem, og udfyld dine egne oplysninger. Du vil kunne se, hvordan tilbagerulningsraten ændrer sig.

Hvis du allerede bruger Plan Mode, så føj en plans/-mappe til dit repository. Aftal et filnavnsformat med dig selv: YYYY-MM-DD-feature-name.md. Om en måned har du 20–30 filer; om seks måneder mere end hundrede. Sådan opbygges projektets second brain – en levende historik over beslutninger. Hvis du vil gå mere i dybden med håndtering af kontekst før prompten, har jeg behandlet context engineering i Claude Code som en separat disciplin.

Hvis du allerede har både Plan Mode og plans/, så prøv /goal på én autonom opgave. Vælg en opgave, du normalt ville udføre manuelt på 30–40 minutter. Kør den gennem de 4 trin, gem planen, start /goal, og hold den lokale terminal og computer vågen. Hvis arbejdet skal fortsætte med slukket computer, skal du først bruge en udtrykkeligt konfigureret fjern- eller cloudkørselsvej og verificere, at opgaven kører dér.

Du kan fortsætte med at arbejde med AI på Ailoot.

Flere oplysninger

Spørgsmål og svar

Fortsætter en lokal /goal, hvis jeg lukker min laptop?

Kun hvis værten forbliver vågen, og terminalprocessen fortsætter; almindelig dvale kan sætte lokalt arbejde i stå. Hold computer og netværk tilgængelige, eller verificér, at du faktisk har startet opgaven i et separat fjern- eller cloudmiljø.

Hvornår er cyklussen med fire prompts besværet værd?

Brug den, når symptomet, de berørte filer eller tilgangen er uklar, og en forkert ændring er dyr. Start med et reproducerbart symptom og den manglende evidens, find kilder, skriv planen, og kontrollér antagelserne. En simpel slåfejl kræver normalt ikke denne cyklus.

Alle artikler